Windows プロセス アクティブ化サービス (WAS) は、Windows Communication Foundation (WCF) サービスをホストするアプリケーションを含むワーカー プロセスのアクティブ化と有効期間を管理します。 WAS プロセス モデルは、HTTP への依存関係を削除することで、HTTP サーバーの IIS 6.0 プロセス モデルを一般化します。 これにより、WCF サービスは、メッセージ ベースのアクティブ化をサポートし、特定のコンピューターで多数のアプリケーションをホストする機能を提供するホスティング環境で、net.msmq や msmq.formatname などの HTTP プロトコルと非 HTTP プロトコルの両方を使用できます。
WAS には、1 つ以上のメッセージがアプリケーションによって使用されるキューのいずれかに配置されたときにキューに入れられたアプリケーションをアクティブ化するメッセージ キュー (MSMQ) アクティブ化サービスが含まれています。 MSMQ アクティブ化サービスは、既定で自動的に開始される NT サービスです。
WAS とその利点の詳細については、「 Windows プロセス アクティブ化サービスでのホスティング」を参照してください。 MSMQ の詳細については、「 キューの概要」を参照してください。
WAS でのキュー アドレス指定
WAS アプリケーションには、URI (Uniform Resource Identifier) アドレスがあります。 アプリケーション アドレスには、ベース URI プレフィックスとアプリケーション固有の相対アドレス (パス) の 2 つの部分があります。 これら 2 つの部分は、結合時にアプリケーションの外部アドレスを提供します。 ベース URI プレフィックスはサイト バインドから構築され、サイトのすべてのアプリケーション ("net.msmq://localhost"、"msmq.formatname://localhost"、"net.tcp://localhost" など) に使用されます。 アプリケーション アドレスは、アプリケーション固有のパス フラグメント ("/applicationOne" など) を取得し、それらをベース URI プレフィックスに追加して、完全なアプリケーション URI ("net.msmq://localhost/applicationOne" など) に到着することによって構築されます。
MSMQ アクティブ化サービスは、アプリケーション URI を使用して、MSMQ アクティブ化サービスがメッセージを監視することが求められるキューを一致させます。 MSMQ アクティブ化サービスが開始されると、受信するように構成されているコンピューター上のすべてのパブリック キューとプライベート キューが列挙され、メッセージが監視されます。 MSMQ アクティブ化サービスは、10 分ごとに監視するキューの一覧を更新します。 メッセージがキュー内で見つかると、アクティブ化サービスは、キュー名を net.msmq バインドの最長一致アプリケーション URI と一致させ、アプリケーションをアクティブ化します。
注
アクティブ化されるアプリケーションは、キュー名のプレフィックスと一致する (最長一致する) 必要があります。
たとえば、キュー名は msmqWebHost/orderProcessing/service.svc です。 アプリケーション 1 に service.svc を含む仮想ディレクトリ /msmqWebHost/orderProcessing があり、アプリケーション 2 に orderProcessing.svc が含まれた仮想ディレクトリ /msmqWebHost がある場合、アプリケーション 1 がアクティブになります。 アプリケーション 1 が削除されると、アプリケーション 2 がアクティブになります。
注
キューが作成されると、MSMQ アクティブ化サービスがキューの一覧を更新するまで、キューに送信されたメッセージはアプリケーションをアクティブ化しません。これは、キューが作成されてから最大で 10 分です。 アクティブ化サービスを再起動すると、キューの一覧も更新されます。
プライベート キューとパブリック キューがアドレス指定に及ぼす影響
MSMQ アクティブ化サービスでは、プライベート キューとパブリック キューの監視は区別されません。 そのため、同じ名前のパブリック キューとプライベート キューを持つことはできません。 その場合、Web ホスト型アプリケーションは、いずれかのキューから読み取りをアクティブ化する可能性があります。
アクティブ化のキュー構成
MSMQ アクティブ化サービスは NETWORK SERVICE として実行されます。 キューを監視してアプリケーションをアクティブ化するサービスです。 キューからアプリケーションをアクティブ化するには、キューがアクセス制御リスト(ACL)内のメッセージを確認するために NETWORK SERVICE アクセスを提供する必要があります。
有害メッセージング
WCF での有害メッセージ処理はチャネルによって処理されます。チャネルは、メッセージが有害であることを検出するだけでなく、ユーザー構成に基づいて処理を選択します。 その結果、キューに 1 つのメッセージが存在します。 Web ホスト型アプリケーションは連続して中止され、メッセージは再試行キューに移動されます。 再試行サイクルの遅延によって指示された時点で、メッセージは再試行キューからメイン キューに移動され、再試行されます。 ただし、キューに登録されたチャネルをアクティブにする必要があります。 アプリケーションが WAS によってリサイクルされる場合、メッセージは、キューに入っているアプリケーションをアクティブにするためにメイン キューに別のメッセージが到着するまで再試行キューに残ります。 この場合の回避策は、再試行キューからメイン キューに手動でメッセージを移動して、アプリケーションを再アクティブ化することです。
サブキューとシステム キューに関する注意事項
WAS によりホストされるアプリケーションを、システム キュー (システム全体の配信不能キューなど) 内や、サブキュー (有害サブキューなど) 内のメッセージに基づいてアクティブ化することはできません。 これは、このバージョンの製品の制限です。