@ServiceHost

サービス ホストの生成に使用されるファクトリを、ホストされるサービスと、.svc ファイルで提供されるホスティング コードのアクセスとコンパイルに必要なその他のプログラミング部分に関連付けます。

構文

<% @ServiceHost
Service = "Service, ServiceNamespace"
Factory = "Factory, FactoryNamespace"
Debug = "Debug"
Language = "Language"
CodeBehind = "CodeBehind"
%>

属性

サービス

ホストされるサービスの CLR 型名。 これは、1 つ以上のサービス コンタクトを実装する型の修飾名にする必要があります。

ファクトリ

サービス ホストのインスタンス化に使用されるサービス ホスト ファクトリの CLR 型名。 この属性は省略可能です。 未指定の場合は、ServiceHostFactory のインスタンスを返す既定の ServiceHost が使用されます。

デバッグ

デバッグ シンボルを使用して Windows Communication Foundation (WCF) サービスをコンパイルする必要があるかどうかを示します。 デバッグ シンボルを含む WCF サービスをコンパイルする場合は true、それ以外の場合は false を指定します。

Language

ファイル (.svc) 内のすべてのインライン コードをコンパイルするときに使用する言語を指定します。 値は、C#VBJS (それぞれ、C#、Visual Basic、および JScript .NET を示す) など、.NET がサポートする任意の言語を表します。 この属性は省略可能です。

分離コード

XML Web サービスを実装するクラスが同じファイル内に存在せず、アセンブリとしてコンパイルされずに \Bin ディレクトリに置かれているとき、XML Web サービスを実装するソース ファイルを指定します。

解説

サービスをホストするために使用される ServiceHost は、Windows Communication Foundation (WCF) プログラミング モデル内の拡張ポイントです。 ファクトリ パターンは、ホスティング環境が直接インスタンス化できないポリモーフィック型の可能性があるため、ServiceHost のインスタンス化に使用されます。

既定の実装では ServiceHostFactory を使用して、ServiceHost のインスタンスを作成します。 ただし、ファクトリ実装の CLR 型名を @ServiceHost ディレクティブに指定して、独自のファクトリ (派生ホストを返すファクトリ) を提供できます。

既定のファクトリの代わりに独自のカスタム サービス ホスト ファクトリを使用するには、型名を @ServiceHost ディレクティブに次のように指定します。

<% @ServiceHost Factory="DerivedFactory" Service="MyService" %>

ファクトリ実装はできるだけ軽量に保持してください。 多くのカスタム ロジックがある場合は、それらのロジックをファクトリ内部ではなくホスト内部に置くとコードがさらに再利用可能になります。

たとえば、MyService の AJAX 対応のエンドポイントを有効にするには、次の例に示す @ServiceHost ディレクティブで、Factory 属性の値に、既定の ServiceHostFactory の代わりに WebScriptServiceHostFactory を指定します。

<% @ServiceHost
Service="MyService"
Language="C#"
Debug="true"
Factory="WebScriptServiceHostFactory"
%>

関連項目