MATLAB COM Automation Server Interface

COM Server Types

  • Automation — A server that supports the OLE Automation standard. Automation servers are based on the IDispatch interface. Clients of all types, including scripting clients, access Automation servers.

  • Custom — A server that implements an interface directly derived from IUnknown. MATLAB® does not support custom interfaces.

  • Dual — A server that implements a combination of Automation and Custom interfaces.

Programmatic Identifiers

To create an instance of a COM object, you use its programmatic identifier, or ProgID. The ProgID is a unique string defined by the component vendor to identify the COM object. You obtain a ProgID from your vendor documentation.

The MATLAB ProgIDs for shared servers are:

  • Matlab.Application — Starts a command window Automation server with the version of MATLAB that was most recently used as an Automation server (might not be the latest installed version of MATLAB).

  • Matlab.Autoserver — Starts a command window Automation server using the most recent version of MATLAB.

  • Matlab.Desktop.Application — Starts the full desktop MATLAB as an Automation server using the most recent version of MATLAB.

The ProgIDs for dedicated servers are:

  • Matlab.Application.Single

  • Matlab.Autoserver.Single

These version-independent MATLAB ProgIDs specify the currently installed and registered version of MATLAB.

In order to create an instance of a specific installed and registered MATLAB version, you can use a version-dependent ProgID. For example, using the ProgID Matlab.Application.7.14 creates an instance of MATLAB version 7.14 (R2012a).

Shared and Dedicated Servers

You can start the MATLAB Automation server in one of two modes – shared or dedicated. A dedicated server is dedicated to a single client; a shared server is shared by multiple clients. The mode is determined by the programmatic identifier (ProgID) used by the client to start MATLAB. If you use matlab.application as your ProgID, then MATLAB creates a shared server.

Starting a Shared Server

The ProgID, matlab.application, specifies the default mode, which is shared. You can also use the version-specific ProgID, matlab.application.N.M, where N is the major version and M is the minor version of your MATLAB. For example, use N = 7 and M = 4 for MATLAB version 7.4.

Once MATLAB is started as a shared server, all clients that request a connection to MATLAB using the shared server ProgID connect to the already running instance of MATLAB. In other words, there is never more than one instance of a shared server running, since it is shared by all clients that use the shared server ProgID.

Starting a Dedicated Server

To specify a dedicated server, use the ProgID, matlab.application.single, (or the version-specific ProgID, matlab.application.single.N.M).

Each client that requests a connection to MATLAB using a dedicated ProgID creates a separate instance of MATLAB; it also requests the server not be shared with any other client. Therefore, there can be several instances of a dedicated server running simultaneously, since the dedicated server is not shared by multiple clients.

In-Process and Out-of-Process Servers

MATLAB supports the following server configurations.

In-Process Server

An in-process server is a component implemented as a dynamic link library (DLL) or ActiveX® control that runs in the same process as the client application, sharing address space. Communication between client and server is relatively fast and simple.

Local Out-of-Process Server

A local out-of-process server is a component implemented as an executable (EXE) file that runs in a separate process from the client application. The client and server processes are on the same computer system. This configuration is slower due to the overhead required when transferring data across process boundaries.

Remote Out-of-Process Server

Distributed Component Object Model (DCOM) is a protocol that allows COM connections to be established over a network. If you are using a version of the Windows® operating system that supports DCOM and a controller that supports DCOM, then you can use the controller to start a MATLAB server on a remote machine. DCOM must be configured properly, and MATLAB must be installed on each machine that is used as a client or server. Even though the client machine might not run MATLAB in such a configuration, the client machine must have a MATLAB installation because certain MATLAB components are required to establish the remote connection. Consult your DCOM documentation for how to configure DCOM for your environment.

Network communications, in addition to the overhead required for data transfer, can make this configuration slower than the local out-of-process configuration.

For more information, see the following articles.