MATLAB COM オートメーション サーバー インターフェイス
COM サーバーのタイプ
オートメーション — OLE オートメーション規格をサポートするサーバー。オートメーション サーバーは、
IDispatch
インターフェイスに基づいています。スクリプト記述クライアントを含むあらゆるタイプのクライアントがオートメーション サーバーにアクセスします。カスタム —
IUnknown
から直接派生するインターフェイスを実装するサーバー。MATLAB® はカスタム インターフェイスをサポートしません。デュアル — オートメーションとカスタム インターフェイスの組み合わせを実装するサーバー。
プログラム識別子
COM オブジェクトのインスタンスを作成するには、そのプログラム識別子である "ProgID" を使用します。ProgID は、COM オブジェクトを特定するためにコンポーネント ベンダーによって定義される一意の文字列です。ProgID はベンダーのドキュメンテーションから入手します。
共有サーバー用の MATLAB ProgID は次のとおりです。
Matlab.Application
— オートメーション サーバーとして直近に使用された MATLAB のバージョン (MATLAB の最新のインストール バージョンではない場合がある) で、コマンド ウィンドウからオートメーション サーバーを開始します。Matlab.Autoserver
— MATLAB の最新バージョンを使用して、コマンド ウィンドウからオートメーション サーバーを開始します。Matlab.Desktop.Application
— MATLAB の最新バージョンを使用して、フル デスクトップの MATLAB をオートメーション サーバーとして開始します。
専用サーバー用の ProgID は次のとおりです。
Matlab.Application.Single
Matlab.Autoserver.Single
これらの "バージョンに依存しない" MATLAB の ProgID は、現在登録されているバージョンの MATLAB を指定します。
特定の登録済みバージョンの MATLAB のインスタンスを作成するには、"バージョン依存" の ProgID を使用できます。たとえば、Matlab.Application.7.14
では、MATLAB version 7.14 (R2012a) のインスタンスが作成されます。
共有サーバーと専用サーバー
MATLAB オートメーション サーバーは、共有または専用の 2 つのモードのいずれかで起動できます。専用サーバーは 1 つのクライアント専用であり、共有サーバーは複数のクライアントにより共有されます。モードは、MATLAB を起動するクライアントが使用するプログラム識別子 (ProgID) により決定されます。ProgID として matlab.application
を使用する場合、MATLAB は共有サーバーを作成します。
共有サーバーの起動
ProgID である matlab.application
は既定のモード (共有) を指定します。バージョン固有の ProgID である matlab.application.N.M
を使用することもできます。ここで、N
はご使用の MATLAB のメジャー バージョンであり、M
はマイナー バージョンです。たとえば、MATLAB Version 7.4 の場合、N
は 7
、M
は 4
となります。
MATLAB が共有サーバーとして起動されると、共有サーバー ProgID を使用して MATLAB への接続を要求するすべてのクライアントは、既に実行されている MATLAB のインスタンスに接続します。言い換えると、共有サーバー ProgID を使用するすべてのクライアントが共有しているので、実行される共有サーバーのインスタンスが複数になることはありません。
専用サーバーの起動
専用サーバーを指定するには、ProgID である matlab.application.single
(またはバージョン固有の ProgID である matlab.application.single.N.M
) を使用します。
専用 ProgID を使用して MATLAB への接続を要求するクライアントは、MATLAB の個別のインスタンスを作成し、サーバーがその他のクライアントと共有されないように要求します。そのため、専用サーバーは複数のクライアントによって共有されないので、同時に専用サーバーの複数のインスタンスを実行できます。
インプロセス サーバーおよびアウトプロセス サーバー
MATLAB は、以下のサーバー構成をサポートします。
インプロセス サーバー
インプロセス サーバーとは、クライアント アプリケーションと同じプロセス内で実行され、アドレス空間を共有するダイナミック リンク ライブラリ (DLL) として実装されるコンポーネントです。クライアントとサーバー間の通信は、シンプルかつ通信速度がかなり高速です。
ローカルのアウトプロセス サーバー
ローカルのアウトプロセス サーバーは、クライアント アプリケーションからの別のプロセスで実行する、実行可能な (EXE
) ファイルとして実装されるコンポーネントです。クライアント プロセスとサーバー プロセスは、同じコンピューター システムに存在します。プロセス境界をまたぐデータ送信にはオーバーヘッドを要するため、この構成は低速になります。
リモートのアウトプロセス サーバー
"分散コンポーネント オブジェクト モデル (DCOM)" は、ネットワークを経由して COM 接続を可能にするプロトコルです。使用している Windows® オペレーティング システムとコントローラーが両方とも DCOM をサポートしている場合は、コントローラーを使用してリモート マシンの MATLAB サーバーを起動することができます。DCOM が正しく構成され、MATLAB がクライアントやサーバーとして使用される各マシンにインストールされていなければなりません。クライアント マシンがこのような構成で MATLAB を実行しない場合でも、クライアント マシンには MATLAB がインストールされていなければなりません。これはリモート接続を確立するためには特定の MATLAB コンポーネントが必要とされるためです。現在使用中の環境に合わせて DCOM を構成する方法については、ご使用の DCOM のドキュメンテーションを参照してください。
データ送信に必要とされるオーバーヘッドに加え、ネットワーク通信によってこの構成の速度はローカル アウトプロセス構成よりも低下します。
詳細については、以下の記事を参照してください。