There are two data conversion API’s that are available
to marshal and format data across the managed (.NET) and unmanaged
(MATLAB®) code boundary. In addition to the previously available MWArray
API,
the Native API is available. Each API has advantages and limitations
and each has particular applications for which it is best suited.
The MWArray
API, which consists of the MWArray
class
and several derived types that map to MATLAB data types, is the
standard API that has been used since the introduction of MATLAB
Compiler SDK™.
It provides full marshaling and formatting services for all basic MATLAB data
types including sparse arrays, structures, and cell arrays. This
API requires the MATLAB Runtime to be installed on the target
machine as it makes use of several primitive MATLAB functions.
For information about using this API, see Access a Remotable .NET Assembly Using MWArray.
The Native API was designed especially, though not exclusively, to support .NET remoting. It allows you to pass arguments and return values using standard .NET types when calling the deployed MATLAB function. Here, data marshaling is still used but it is not explicit in the client code. This feature is especially useful for clients that access a remotable component using the native interface API, as it does not require the client machine to have the MATLAB Runtime installed. In addition, as only native .NET types are used in this API, there is no need to learn the semantics of a new set of data conversion classes. This API does not directly support .NET analogs for the MATLAB structure and cell array types. For information about using this API, see Access a Remotable .NET Assembly Using the Native .NET API: Magic Square.
Features of the MWArray API Compared With the Native .NET API
MWArray API | Native .NET API | |
---|---|---|
Marshaling/formatting for all basic MATLAB types | X | |
Pass arguments and return values using standard .NET types | X | |
Access to remotable component from client without installed MATLAB | X | |
Access to remotable component from client without installed MATLAB Runtime (see Access a Remotable .NET Assembly Using the Native .NET API: Cell and Struct). | X |
The MATLAB Compiler SDK native .NET API accepts standard .NET data types for inputs and outputs to MATLAB function calls.
These standard .NET data types are wrapped by the Object
class—the
base class for all .NET data types. This object representation is
sufficient as long as the MATLAB functions have numeric, logical,
or string inputs or outputs. It does not work well for MATLAB data
types like structure (struct) and cell arrays, since the native representation
of these array types results in a multi-dimensional Object
array
that is difficult to comprehend or process. Instead, MATLAB
Compiler SDK provides
a special class hierarchy for struct and cell array representation
designed to easily interface with the native .NET API. See Access a Remotable .NET Assembly Using the Native .NET API: Cell and Struct for
details.