WAS アクティベーション アーキテクチャ

ここでは、Windows プロセス アクティブ化サービス (WAS とも呼ばれます) の各コンポーネントについて説明します。

アクティベーション コンポーネント

WAS は、複数のアーキテクチャ コンポーネントで構成されます。

  • リスナ アダプタ : 特定のネットワーク プロトコルでメッセージを受信し、WAS と通信して、受信メッセージを適切なワーカー プロセスにルーティングする Windows サービス。
  • WAS : ワーカー プロセスの作成と有効期間を管理する Windows サービス。
  • 汎用ワーカー プロセス実行可能ファイル (w3wp.exe)。
  • アプリケーション マネージャ : ワーカー プロセス内のアプリケーションをホストするアプリケーション ドメインの作成と有効期間を管理します。
  • プロトコル ハンドラ : ワーカー プロセスで実行され、ワーカー プロセスと個々のリスナ アダプタ間の通信を管理するプロトコル固有のコンポーネント。プロトコル ハンドラには、プロセス プロトコル ハンドラと AppDomain プロトコル ハンドラの 2 種類があります。

ワーカー プロセス インスタンスをアクティブ化する場合、WAS は必要なプロセス プロトコル ハンドラをワーカー プロセスに読み込み、アプリケーション マネージャを使用して、アプリケーションをホストするアプリケーション ドメインを作成します。アプリケーション ドメインは、アプリケーションのコードと、アプリケーションが使用するネットワーク プロトコルに必要な AppDomain プロトコル ハンドラを読み込みます。

WAS アーキテクチャ

リスナ アダプタ

リスナ アダプタは個別の 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 プロセス アクティブ化サービスを設定する