キュー コンポーネントの技術サンプル
更新 : 2007 年 11 月
このサンプルでは、.NET アプリケーションで、Microsoft メッセージ キュー (MSMQ: Microsoft Message Queuing) および COM+ のキュー コンポーネント機能とやり取りを行う方法を示します。MSMQ を使用すると、アプリケーションは、一時的にオフラインになる可能性があるネットワークやシステムと通信できるようになります。送信側のアプリケーションで生成されたメッセージは、受信側のアプリケーションから後で取り出せるように、キューに格納されます。キュー コンポーネントは、サーバー コンポーネントを非同期で起動および実行できるように MSMQ 上にビルドされます。
重要 : |
---|
このサンプルをビルドおよび実行するには、使用しているコンピュータに MSMQ がワークグループ モードでインストールされている必要があります。 |
サンプルの使用については、次のトピックを参照してください。
コマンド プロンプトを使用してサンプルをビルドするには
コマンド プロンプト ウィンドウを開き、Technologies\ComponentServices\QueuedComponents ディレクトリにある、言語固有のサブディレクトリのいずれかに移動します。
使用しているプログラミング言語に応じて、「msbuild QueuedComponentsCS.sln」または「msbuild QueuedComponentsVB.sln」と入力します。
Visual Studio を使用してサンプルをビルドするには
Windows エクスプローラを開き、Technologies\ComponentServices\QueuedComponents ディレクトリにある、言語固有のサブディレクトリのいずれかに移動します。
使用しているプログラミング言語に応じて、QueuedComponentsCS.sln または QueuedComponentsVB.sln ファイルのアイコンをダブルクリックし、このファイルを Visual Studio で開きます。
[ビルド] メニューの [ソリューションのビルド] をクリックします。
アセンブリを GAC に登録およびインストールするには
ビルドしたアセンブリ ファイルが格納されているディレクトリに移動します。
コマンド ラインで「regsvcs QCDemoSvr.dll」と入力して、アセンブリを登録します。
コマンド ラインで「gacutil –i QCDemoSvr.dll」と入力して、アセンブリをグローバル アセンブリ キャッシュ (GAC: Global Assembly Cache) にインストールします。
サンプルを実行するには
コマンド プロンプト ウィンドウまたは Windows エクスプローラを開き、新しい実行可能ファイルが格納されているディレクトリに移動します。
コマンド ラインで「QCDemo.exe」と入力するか、Windows エクスプローラでダブルクリックして QCDemo.exe を起動します。
[Send Queued Msg] ボタンをクリックします。テキスト編集フィールド内の文字列の値を変更し、[Send Queued Msg] をもう一度クリックします。この結果、パッケージ化されたメソッド呼び出しが、キューに 2 個格納されます。
QCDemoSvr キューに格納されているメッセージを確認します。[マイ コンピュータ] を右クリックし、ポップアップ メニューの [管理] をクリックします。[コンピュータの管理] コンソールで、サービスとアプリケーション\メッセージ キュー\パブリック キューを展開します。このノードに、qcdemosvr という名前のキューがあります。このキュー名は、キュー コンポーネントを保持している COM+ アプリケーションの名前に対応しています。このアプリケーションについては、以降の手順で詳しく説明します。
[qcdemosvr] を展開し、キュー メッセージを選択します。右側のペインに、メッセージが 2 つ表示されます。これらのメッセージは、クライアント アプリケーションで作成された、2 つのキュー コンポーネント メソッド呼び出しに対応しています。
コンポーネント サービス管理ツールを起動します。
COM+ エクスプローラの左ペインで、コンポーネント サービス\コンピュータ\マイ コンピュータ\COM+ アプリケーションを展開し、QCDemoSvr COM+ アプリケーションを探します。
QCDemoSvr アプリケーションを右クリックし、ポップアップ メニューの [開始] をクリックします。サーバー コンポーネントがアクティブになります。リスナやプレーヤーが、qcdemosvr キューからメッセージをプルし、サーバーに対する呼び出しを行います。この結果、メッセージ ボックスが 2 つ表示されます。これらのメッセージ ボックスには、サンプル クライアント アプリケーションからの元の呼び出しで使用された、テキスト文字列が表示されています。
[コンピュータの管理] コンソールに戻って確認すると、qcdemosvr に格納されていたキュー メッセージがなくなっています。クライアント アプリケーションからの以降の呼び出しは、直接サーバーに渡され、ボタンをクリックするとすぐにメッセージ ボックスが表示されます。
メモ : Windows 2000 で、メッセージがキューに配置されるようにするには、QCDemoSvr COM+ アプリケーションを終了する必要があります。QCDemoSvr COM+ アプリケーションを終了するには、COM+ エクスプローラでアプリケーションを右クリックし、[シャットダウン] をクリックします。QCDemoSvr COM+ アプリケーションを終了させる前に、QCDemo クライアントを閉じておく必要があります。
サンプルをアンインストールするには
msbuild.exe を実行したディレクトリ、または .sln ファイルを開いたディレクトリに移動します。
使用しているプログラミング言語に応じて、コマンド プロンプトで、「msbuild.exe QueuedComponentsCS.sln /t:Clean」または「msbuild.exe QueuedComponentsVB.sln /t:Clean」と入力します。この操作によって /u スイッチ付きで .NET サービス インストール ツール (Regsvcs.exe) および グローバル アセンブリ キャッシュ ツール (Gacutil.exe) が呼び出され、COM+ カタログおよびグローバル アセンブリ キャッシュからサンプル ファイルが削除されます。
必要条件
プラットフォーム : Windows 2000、Windows XP、Windows Server 2003
.NET Framework のバージョン : 2.0、1.1、1.0
解説
サンプルのバイナリ ファイルを作成する方法およびサンプルを登録する手順については、ソース コード ファイル内のコメントを参照してください。
キュー コンポーネントは、メッセージ キュー サービス (MSMQ) を基盤として構築された COM+ 機能です。この機能を利用すると、コンポーネントを非同期で呼び出して実行できます。クライアント アプリケーションからキュー オブジェクトが呼び出されると、この呼び出しは、実際にはレコーダーに対して行われます。レコーダーは、呼び出しをメッセージとしてパッケージ化し、このメッセージをキューに格納します。リスナがメッセージをキューから読み込み、このキューをプレーヤーに渡します。実際にサーバー オブジェクトのメソッドを呼び出すのは、プレーヤーです。このコンポーネントの C# バージョンの名前は、コンポーネント サービス管理ツールで表示されるとおり、QCDemoServerCS.QComponent です。Visual Basic バージョンは QCDemoServerVB.QComponent です。
メモ : |
---|
メッセージ キューをセット アップするには、QCDemoSvr.dll アセンブリを登録し、このアセンブリをグローバル アセンブリ キャッシュ (GAC) にインストールする必要があります。.NET サービス インストール ツール (regsvcs.exe) は、%system root%\Microsoft.Net\Framework\<runtime version> ディレクトリにあります。グローバル アセンブリ キャッシュ ツール (gacutil.exe) は、\SDK\<version>\Bin ディレクトリにあります。 |
キューに置かれたメッセージを受信するには、サーバーをアクティブにする必要があります。サーバー コンポーネントをアクティブにするには、手動による方法、スクリプトをタスク スケジューラと組み合わせて使用する方法、プログラムによる方法があります。このサンプルでは、サーバー コンポーネントを手動でアクティブにします。
このサンプルは、1 つのクライアント アプリケーションと、InterfaceQueuing 用とマークされている 1 つのマネージ オブジェクトで構成されています。リスナの有効化は、クラス属性によって行われます。アプリケーションをビルドすると、指定した COM+ アプリケーションと同じ名前のキューが、COM+ によって作成されます。
このクライアント アプリケーションには、ボタンが 1 つあります。このボタンをクリックすると、キュー モニカによってキュー コンポーネント レコーダーが起動されます。戻された参照を通じて呼び出した場合、すべての呼び出しがパッケージ化され、適切なメッセージ キューに配置されます。
キューに配置されたメソッドの呼び出しは、コンポーネント サービス管理ツールでサーバー コンポーネントがアクティブにされたときに、解凍され、サーバー コンポーネントに配信されます。サンプル サーバー アプリケーションは、呼び出しがサーバーに届いたことを示す簡単なメッセージ ボックスを表示します。
参照
参照
System.Runtime.InteropServices