SOAP エンドポイントおよび HTTP エンドポイント

SoapAndHttpEndpoints サンプルでは、WCF Web プログラミング モデルを使用して、RPC ベースのサービスを実装し、SOAP 形式および "Plain Old XML" (POX) 形式でサービスを公開する方法を示します。 サービスの HTTP バインディングの詳細については、「基本的な HTTP サービス」のサンプルを参照してください。 このサンプルでは、さまざまなバインドを使用して SOAP および HTTP で RPC ベースのサービスを公開する方法について詳しく示します。

対象

WCF を使用した SOAP および HTTP 経由での RPC サービスの公開。

ディスカッション

このサンプルは、2 つのコンポーネントで構成されています。1 つは WCF サービスを含む Web アプリケーション プロジェクト (Service) で、もう 1 つは SOAP バインドと HTTP バインドを使用してサービス操作を呼び出すコンソール アプリケーション (Client) です。

WCF サービスでは、入力として渡された文字列をエコーする GetDataPutData の 2 つの操作を公開します。 サービス操作には、WebGetAttribute および WebInvokeAttribute を使用して注釈が付けられます。 これらの属性は、これらの操作の HTTP 投影を制御します。 また、サービス操作には、OperationContractAttribute を使用して注釈が付けられます。この属性では、サービス操作を SOAP バインディングで公開できます。 サービスの PutData メソッドは WebFaultException をスローします。この例外は、HTTP では HTTP ステータス コードを使用して返送され、SOAP では SOAP エラーとして返送されます。

Web.config ファイルでは、WCF サービスを次の 3 つのエンドポイントで構成します。

  • SOAP ベースのクライアントからアクセスするためのサービス メタデータを公開する ~/service.svc/mex エンドポイント

  • クライアントが HTTP バインディングを使用してサービスにアクセスできる ~/service.svc/http エンドポイント

  • クライアントが HTTP バインディングで SOAP を使用してサービスにアクセスできる ~/service.svc/soap endpoint エンドポイント

HTTP エンドポイントは、helpEnabledtrue に設定されている <webHttp> 標準エンドポイントで構成されます。 その結果、サービスは、HTTP ベースのクライアントがサービスにアクセスするために使用できる、XHTML ベースのヘルプ ページ (~/service.svc/http/help) を公開します。

クライアント プロジェクトでは、([サービス参照の追加] で生成された) SOAP プロキシを使用したサービスへのアクセスと、WebClient を使用したサービスへのアクセスを示します。

サンプルは、1 つの Web ホスト サービスと 1 つのコンソール アプリケーションで構成されています。 コンソール アプリケーションが実行されると、クライアントはサービスに要求を発行し、応答からの適切な情報をコンソール ウィンドウに書き込みます。

サンプルを実行するには

  1. SOAP および HTTP エンドポイント サンプルのソリューションを開きます。

  2. Ctrl+Shift+B キーを押して、ソリューションをビルドします。

  3. まだ開いていない場合は、Ctrl キーを押しながら W キーと S キーを押して、ソリューション エクスプローラー ウィンドウを開きます。

  4. ソリューション エクスプローラー ウィンドウで Service プロジェクトを右クリックして [デバッグ] コンテキスト メニュー オプションの上にカーソルを置き、 [新しいインスタンスを開始] コンテキスト メニューを表示します。 [新しいインスタンスを開始] をクリックします。 これで、サービスをホストする ASP.NET 開発サーバーが起動します。

  5. ソリューション エクスプローラー ウィンドウで Client プロジェクトを右クリックして [デバッグ] コンテキスト メニュー オプションの上にカーソルを置き、 [新しいインスタンスを開始] コンテキスト メニューを表示します。 [新しいインスタンスを開始] をクリックします。

  6. クライアント コンソール ウィンドウが表示されて、実行中のサービスの URI および実行中のサービスの HTML ヘルプ ページの URI が示されます。 ブラウザーでヘルプ ページの URI を入力することで、いつでも HTML ヘルプ ページを表示することができます。

  7. サンプルが実行されると、クライアントは現在のアクティビティのステータスを書き込みます。

  8. クライアント コンソール アプリケーションを終了するには、任意のキーを押します。

  9. サービスのデバッグを停止するには、Shift キーを押しながら F5 キーを押します。

  10. Windows の通知領域で、ASP.NET 開発サーバーのアイコンを右クリックし、コンテキスト メニューの [停止] を選択します。