类型安全接口
MATLAB® 数据类型与本机 .NET 类型不兼容。要在应用程序和 .NET 之间发送数据,请执行以下任务:
通过从本机 .NET 数据创建
MWArray
对象,将 .NET 输入数据中的数据编组到已部署的函数。已部署组件中的public
函数返回MWArray
对象。通过调用
MWArray
编组方法之一(例如MWArray
)将ToArray()
中的输出 MATLAB 数据编组为本机 .NET 数据。
虽然您可以使用 MWArray
数据类型手动编组数据,但使用类型安全接口可以简化该过程。
不使用类型安全接口的手动数据封送处理
手动编组数据增加了将部署的组件集成到 .NET 应用程序的任务的复杂性和潜在的故障点。出于以下原因,尤其如此:
您的应用程序直到运行时才能检测到类型不匹配错误。例如,您可能会意外地从字符串创建一个
MWArray
,并将该数组传递给需要数字的已部署函数。由于 MATLAB Compiler SDK™ 生成的包装器代码需要MWArray
,因此 .NET 编译器无法检测到此错误,并且部署的函数会引发异常或返回错误答案。您的最终用户必须学习如何使用
MWArray
数据类型或者通过手动编写(和手动维护)的 API 来屏蔽MWArray
数据类型。这会引入不必要的培训时间,并对可能过度投入的员工提出资源要求。
没有类型安全接口的数据封送处理
当将大量数据值循环传递给一个或多个已部署的函数时,您可能会发现 MWArray
方法更高效。在这种情况下,创建 MWArray
对象只允许您编组数据一次,而类型安全接口则会在每次调用时编组输入。
使用类型安全接口简化数据封送处理
您可以使用类型安全接口避免执行 MWArray
数据编组。此类接口通过向调用应用程序隐藏 MWArray
类型来最大限度地减少显式类型转换。使用类型安全接口允许 .NET 开发人员直接使用熟悉的本机数据类型。
使用类型安全接口进行数据封送处理
实现类型安全接口的一些原因包括:
您可以避免与教导最终用户使用
MWArray
API 相关的培训和编码成本。您可以通过将
MWArray
对象放入类型安全的接口中或在部署的 MATLAB 代码中调用MWArray
函数来最大限度地降低必须编组的数据成本。灵活性 - 将类型安全接口与手动数据编组相结合,以适应不同大小和访问模式的数据。例如,您可能拥有一些大型数据对象(例如图像),如果使用类型安全的接口进行管理,则会给您的组织带来额外的成本。通过混合类型安全接口和手动编组,可以使用类型安全接口自动管理较小的数据类型,并可根据需要管理大数据。
有关实现类型安全接口的示例,请参阅实现类型安全接口并集成到 .NET 应用程序中。
类型安全接口的工作原理
每个 MATLAB Compiler SDK .NET 程序集都会导出一个或多个使用 MWArray
对象接受和返回数据的公共方法。向 MATLAB Compiler SDK 程序集添加类型安全接口会创建另一组接受和返回本机 .NET 类型的方法(具有相同的名称)。
您可以为单个 MATLAB 函数创建多个类型安全的接口方法。类型安全的接口方法遵循标准 .NET 方法进行重载。
下图通过类型安全接口说明了 .NET 主机应用程序和部署的 MATLAB 函数之间的数据路径。
MATLAB 函数 addOne
返回其输入加一。使用类型安全接口部署 addOne
会创建两个 .NET addOne
方法:
接受并返回 .NET
double
接受并返回
MWArray
请注意,类型安全方法与 MWArray
方法共存。您的 .NET 应用程序可以根据需要混合并搭配对任一类型方法的调用。