方法 : コントラクトを SOAP クライアントおよび Web クライアントに公開する
Windows Communication Foundation (WCF) では、既定でエンドポイントは SOAP クライアントでのみ利用できます。SOAP 以外のクライアントでもエンドポイントを利用できるようにする方法については、「方法 : 基本的な Web スタイル サービスを作成する」を参照してください。状況によっては、同じコントラクトを Web エンドポイントと SOAP エンドポイントのどちらとしても利用できることが望ましい場合があります。ここでは、これを実現する方法の例について示します。
サービス コントラクトを定義するには
ServiceContractAttribute、WebInvokeAttribute、および WebGetAttribute の各属性でマークされたインターフェイスを使用して、サービス コントラクトを定義します。
メモ : 既定では、WebInvokeAttribute は POST 呼び出しを操作にマッピングします。ただし、"method=" パラメータを指定することで、操作にマッピングするメソッドを指定できます。WebGetAttribute には "method=" パラメータがないため、サービス操作には GET 呼び出しのみがマッピングされます。 サービス コントラクトを実装します。
サービスをホストするには
ServiceHost オブジェクトを作成します。
SOAP エンドポイント用に、ServiceEndpoint に BasicHttpBinding を追加します。
SOAP 以外のエンドポイント用に、ServiceEndpoint に WebHttpBinding を追加し、エンドポイントに WebHttpBehavior を追加します。
サービス ホストを開くために、ServiceHost インスタンスの Open() を呼び出します。
Internet Explorer で GET にマッピングされたサービス操作を呼び出すには
- Internet Explorer を開いて「https://localhost:8000/EchoWithGet?s=Hello, world!」と入力し、Enter キーを押します。この URL には、サービスのベース アドレス ("https://localhost:8000/") が含まれており、エンドポイントの相対アドレス ("")、呼び出しを行うサービス操作 ("EchoWithGet")、疑問符の後にアンパサンド (&) で区切られた名前付きパラメータのリストが続きます。
コードから Web エンドポイントにあるサービス操作を呼び出すには
using
ブロック内で WebChannelFactory のインスタンスを作成します。
メモ : |
---|
Close() は using ブロックの末尾のチャネルで自動的に呼び出されます。
|
- チャネルを作成し、サービスを呼び出します。
SOAP エンドポイントにあるサービス操作を呼び出すには
using
ブロック内で ChannelFactory のインスタンスを作成します。チャネルを作成し、サービスを呼び出します。
サービス ホストを閉じるは
- サービス ホストを閉じます。
例
このトピックの完全なコードの一覧を以下に示します。
コードのコンパイル
Service.cs のコンパイル時には、System.ServiceModel.dll と System.ServiceModel.Web.dll を参照します。
関連項目
リファレンス
WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebServiceHost
ChannelFactory
WebHttpBehavior