NetHttpBinding
NetHttpBinding のサンプルでは、BinaryMessageEncodingBindingElement 上に HttpTransportBindingElement または HttpsTransportBindingElement をスタックするバインディングを実装する方法を示します。Windows Communication Foundation (WCF) に付属している HTTP ベースのシステム定義バインディングには、TextMessageEncodingBindingElement 上の BasicHttpBinding 層や WsHttpBinding 層の HTTP などがあり、相互運用性を実現するための text/xml でのメッセージの送受信を主に許可します。Windows Communication Foundation (WCF) に付属している TCP ベースおよび NamedPipe ベースのシステム定義バインディングには NetTcpBinding や NetNamedPipeBinding などがあり、メッセージをバイナリとして記述および処理します。バイナリ形式には相互運用性はありませんが、より効率的で、パフォーマンスに合わせて調整されます。
注 : |
---|
このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 |
注 : |
---|
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。
<InstallDrive>:\WF_WCF_Samples
このディレクトリが存在しない場合は、「.NET Framework 4 向けの Windows Communication Foundation (WCF) および Windows Workflow Foundation (WF) のサンプル」にアクセスして、Windows Communication Foundation (WCF) および WF のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。
<InstallDrive>:\WF_WCF_Samples\WCF\Extensibility\Binding\NetHttpBinding
|
このサンプルでは、バインディングを目的の方法で構成するため、チャネル スタックで必要なバインディング要素を WCF のアーキテクチャを使用して組み合わせる方法を示します。カスタム バインディングを作成する手順は、次のとおりです。
バインディングを作成するためにまとめてスタックする、バインディング要素を決定します。
スタックが正常に動作するために必要な、バインディング要素のスタック順序は必ず理解しておきます。たとえば、トランスポートはスタックの下に追加します。
Binding を継承する Binding クラスを作成します。この特定のケースでは、NetHttpBinding には ISecurityCapabilities インターフェイスも実装されています。このバインディングのユーザーが、ProtectionLevel と、バインディングがクライアントとサーバーの認証をサポートしているかどうかを検査できるようにするためです。
バインディングは、ユーザーに対して明らかにする必要のある他のプロパティを公開します。これにより、それらのプロパティを使用して構成要素であるバインディング要素を構成できます。たとえば、BypassProxyOnLocal プロパティを明示すると、基になる HTTP または HTTPS の TransportBindingElement 上にある同じプロパティを構成できます。
サンプルでは CreateBindingElements メソッドで、バインディング要素がスタックされる必要のある順序を示します。たとえば、エンコーダーを最初に追加し、次にトランスポートを追加します。トランスポートはバインディング スタックの最下部に置かれる必要があるためです。
最後に、構成を使用して NetHttpBinding を設定できるように、ApplyConfiguration メソッドを実装します。実際には、構成ファイルによるバインディングの構成を可能にするために必要な他のクラスもいくつかあります。ConfigurationCodeGenerator ツールを使用すると、こうしたクラスを作成できます。また、ConfigurationCodeGenerator ツールも WCF サンプルとして利用できます。
NetHttpBinding サービスのサンプル
NetHttpBinding を使用するサービスのサンプルは、サービス サブディレクトリにあります。エンドポイントの構成に使用するバインディングは NetHttpBinding です。このサンプルのサービスは、Main メソッドを使用する自己ホスト型ですが、インターネット インフォメーション サービス (IIS) 内でホストされることも可能です。
NetHttpBinding クライアントのサンプル
クライアントも、NetHttpBinding に対してそのバインディングを構成し、サービスに接続します。このクライアントでは、バインディングをコードまたは構成によって構成できることを示します。構成を使用して NetHttpBinding の構成を可能にするには、バインディングを構成に公開するために追加されたクラスを使用します。前述のように ConfigurationCodeGenerator ツールを使用すると、こうしたクラスを作成できます。
サンプルをセットアップしてビルドするには
次のコマンドを使用して、ASP.NET 4.0 をインストールします。
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
「Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」が実行済みであることを確認します。
ソリューションをビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。
Makecert.exe が存在するフォルダがパスに含まれていることを確認します。
サーバーを実行するコンピュータで、Setup.bat をサンプルのインストール フォルダで実行し、サーバーに必要なサーバー証明書とその発行元の証明書を作成します。
同じサーバー コンピュータで、「HTTP および HTTPS の構成」の概念ドキュメント内の手順に従い、HTTP.SYS を使用してサーバー証明書を構成します。
サンプルを同じコンピュータで実行するには
Service.exe を service\bin で起動します。サービス アクティビティがサービス コンソール ウィンドウに表示されます。
Client.exe を \client\bin で起動します。クライアント アクティビティがクライアントのコンソール アプリケーションに表示されます。
サンプルの使用が終わったら、Cleanup.bat を実行して証明書を削除してください。
サンプルを別のコンピュータで実行するには
Service.exe を service\bin で起動します。サービス アクティビティがサービス コンソール ウィンドウに表示されます。
サーバーは自己ホスト型なので、クライアントとサーバーをドメイン ユーザーとして実行する場合は、次のようにクライアントの App.config ファイルで ID を指定する必要があります。
<client> <endpoint name="EchoServer" address= https://localhost:8000/TestService/BinaryEncoderOverHTTP binding= "netHttpBinding" bindingConfiguration="netHttpBinding" contract= "Microsoft.ServiceModel.Samples.Client.IEchoService" > <identity> <userPrincipalName value="user_name@service_domain"/> </identity> </endpoint> </client>
Client.exe を \client\bin で起動し、サービス ウィンドウに表示される HTTPS URL をコマンド ライン パラメータとして渡します。クライアント アクティビティがクライアントのコンソール アプリケーションに表示されます。
サンプルの使用が終わったら、Cleanup.bat を実行して証明書を削除してください。