キューに置かれたアプリケーションの Web ホスト
Windows プロセス アクティブ化サービス (WAS) は、Windows Communication Foundation (WCF) サービスをホストするアプリケーションが含まれるワーカー プロセスのアクティブ化と有効期間を管理します。WAS プロセス モデルは HTTP の依存関係を取り除くことにより、HTTP サーバーの IIS 6.0 プロセス モデルを一般化します。これにより、WCF サービスは、メッセージ ベースのアクティブ化がサポートされ、特定のコンピュータ上で多数のアプリケーションをホストできるホスト環境で、net.msmq や msmq.formatname などの HTTP プロトコルと非 HTTP プロトコルの両方を使用できるようになります。
WAS にはメッセージ キュー (MSMQ) アクティブ化サービスが含まれており、アプリケーションで使用されるキューのいずれかに 1 つ以上のメッセージが置かれると、キュー アプリケーションがアクティブ化されます。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 に仮想ディレクトリ /msmqWebHost/orderProcessing がありその下に service.svc が格納されており、アプリケーション 2 に仮想ディレクトリ /msmqWebHost がありその下に orderProcessing.svc が格納されている場合、アプリケーション 1 がアクティブ化されます。アプリケーション 1 が削除されると、アプリケーション 2 がアクティブ化されます。
メモ : |
---|
キューが作成され、メッセージがそのキューに送信されても、MSMQ アクティブ化サービスがそのキュー リストを更新するまで、アプリケーションはアクティブ化されません。キュー リストが更新されるまでの時間は、キューが作成されてから最大で 10 分です。アクティブ化サービスを再起動した場合も、キュー リストは更新されます。 |
アドレスに対するプライベート キューとパブリック キューの影響
MSMQ アクティブ化サービスでは、プライベート キューの監視とパブリック キューの監視が区別されません。したがって、パブリック キューとプライベート キューを同じ名前にすることはできません。同じ名前の場合、いずれかのキューを読み込んで、Web ホスト アプリケーションがアクティブ化される場合があります。
アクティブ化のためのキュー構成
MSMQ アクティブ化サービスは、NETWORK SERVICE として動作します。これは、アプリケーションをアクティブ化するキューを監視するサービスです。キューからアプリケーションをアクティブ化するようにするには、アクセス制御リスト (ACL) に NETWORK SERVICE アクセス用のキューを指定し、メッセージをピークする必要があります。
有害メッセージ処理
WCF での有害メッセージ処理は、チャネルによって行われます。チャネルは、有害メッセージを検出するだけでなく、ユーザーの構成に基づいて処置を選択します。そのため、キューには 1 つのメッセージが存在します。Web ホスト アプリケーションが連続的に中断されると、このメッセージは再試行キューに移動されます。再試行サイクル遅延により指定された時点で、メッセージは再試行キューからメイン キューに移動されて再試行されます。ただし、この場合、キューに置かれたチャネルがアクティブである必要があります。アプリケーションが WAS により再利用される場合、メッセージは、別のメッセージがメイン キューに到着してキューに置かれたアプリケーションがアクティブ化されるまで再試行キューに残ります。この場合の回避策は、メッセージを再試行キューからメイン キューに手動で戻し、アプリケーションを再アクティブ化することです。
サブキューとシステム キューに関する注意
WAS によりホストされるアプリケーションを、システム キュー (システム全体の配信不能キューなど) 内や、サブキュー (有害サブキューなど) 内のメッセージに基づいてアクティブ化することはできません。これはこのバージョンの製品の制限です。