WAS アクティベーション アーキテクチャ
ここでは、Windows プロセス アクティブ化サービス (WAS とも呼ばれます) の各コンポーネントについて説明します。
アクティベーション コンポーネント
WAS は、複数のアーキテクチャ コンポーネントで構成されます。
- リスナ アダプタ : 特定のネットワーク プロトコルでメッセージを受信し、WAS と通信して、受信メッセージを適切なワーカー プロセスにルーティングする Windows サービス。
- WAS : ワーカー プロセスの作成と有効期間を管理する Windows サービス。
- 汎用ワーカー プロセス実行可能ファイル (w3wp.exe)。
- アプリケーション マネージャ : ワーカー プロセス内のアプリケーションをホストするアプリケーション ドメインの作成と有効期間を管理します。
- プロトコル ハンドラ : ワーカー プロセスで実行され、ワーカー プロセスと個々のリスナ アダプタ間の通信を管理するプロトコル固有のコンポーネント。プロトコル ハンドラには、プロセス プロトコル ハンドラと AppDomain プロトコル ハンドラの 2 種類があります。
ワーカー プロセス インスタンスをアクティブ化する場合、WAS は必要なプロセス プロトコル ハンドラをワーカー プロセスに読み込み、アプリケーション マネージャを使用して、アプリケーションをホストするアプリケーション ドメインを作成します。アプリケーション ドメインは、アプリケーションのコードと、アプリケーションが使用するネットワーク プロトコルに必要な AppDomain プロトコル ハンドラを読み込みます。
リスナ アダプタ
リスナ アダプタは個別の Windows サービスであり、リッスンするネットワーク プロトコルを使用して、メッセージ受信に使用されるネットワーク通信ロジックを実装します。次の表は、Windows Communication Foundation (WCF) プロトコルのリスナ アダプタの一覧です。
リスナ アダプタのサービス名 | プロトコル | メモ |
---|---|---|
W3SVC |
http |
IIS 7.0 と WCF の両方に HTTP アクティベーションを提供する共通コンポーネントです。 |
NetTcpActivator |
net.tcp |
NetTcpPortSharing サービスに依存します。 |
NetPipeActivator |
net.pipe |
|
NetMsmqActivator |
net.msmq |
WCF ベースのメッセージ キュー アプリケーションで使用します。 |
NetMsmqActivator |
msmq.formatname |
既存のメッセージ キュー アプリケーションとの下位互換性を提供します。 |
次の XML サンプルに示すように、特定プロトコルのリスナ アダプタは、インストール時に applicationHost.config ファイルに登録されます。
<system.applicationHost>
<listenerAdapters>
<add name="http" />
<add name="net.tcp"
identity="S-1-5-80-3579033775-2824656752-1522793541-1960352512-462907086" />
<add name="net.pipe"
identity="S-1-5-80-2943419899-937267781-4189664001-1229628381-3982115073" />
<add name="net.msmq"
identity="S-1-5-80-89244771-1762554971-1007993102-348796144-2203111529" />
<add name="msmq.formatname"
identity="S-1-5-80-89244771-1762554971-1007993102-348796144-2203111529" />
</listenerAdapters>
</system.applicationHost>
プロトコル ハンドラ
特定のプロトコルのプロセス プロトコル ハンドラと AppDomain プロトコル ハンドラは、コンピュータ レベルの Web.config ファイルに登録されます。
<system.web>
<protocols>
<add name="net.tcp"
processHandlerType=
"System.ServiceModel.WasHosting.TcpProcessProtocolHandler”
appDomainHandlerType=
"System.ServiceModel.WasHosting.TcpAppDomainProtocolHandler”
validate="false" />
<add name="net.pipe"
processHandlerType=
"System.ServiceModel.WasHosting.NamedPipeProcessProtocolHandler”
appDomainHandlerType=
"System.ServiceModel.WasHosting.NamedPipeAppDomainProtocolHandler”/>
<add name="net.msmq"
processHandlerType=
"System.ServiceModel.WasHosting.MsmqProcessProtocolHandler”
appDomainHandlerType=
"System.ServiceModel.WasHosting.MsmqAppDomainProtocolHandler"
validate="false" />
</protocols>
</system.web>
関連項目
概念
Windows Communication Foundation で使用するための Windows プロセス アクティブ化サービスを設定する