アドレス指定
アドレス指定のサンプルでは、エンドポイント アドレスのさまざまな特性と機能を示します。このサンプルは、「入門サンプル」に基づいています。このサンプルでは、サービスは自己ホスト型です。サービスとクライアントは両方ともコンソール アプリケーションです。サービスでは、エンドポイントの相対アドレスと絶対アドレスを組み合わせて複数のエンドポイントを定義します。
メモ : |
---|
このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 |
サービス構成ファイルでは、1 つのベース アドレスと 4 つのエンドポイントを指定します。ベース アドレスは、次のサンプル構成のように add 要素を使用して service/host/baseAddresses の下に指定します。
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="https://localhost:8000/ServiceModelSamples/service"/>
</baseAddresses>
</host>
...
</service>
次のサンプル構成の 1 番目のエンドポイント定義では、相対アドレスを指定します。つまり、エンドポイント アドレスは、ベース アドレスと URI 構造の規則に従った相対アドレスの組み合わせということを意味します。
<!-- Empty relative address specified:
use the base address provided by the host. -->
<!-- The endpoint address is https://localhost:8000/ServiceModelSamples/service. -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
この場合、相対アドレスが空 ("") のため、エンドポイント アドレスはベース アドレスと同じになります。具体的には https://localhost:8000/servicemodelsamples/service です。
2 番目のエンドポイント定義でも、相対アドレスを指定します。次のサンプル構成を参照してください。
<!-- The relative address specified: use the base address -->
<!-- provided by the host + path. The endpoint address is -->
<!-- https://localhost:8000/servicemodelsamples/service/test. -->
<endpoint address="/test"
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
相対アドレス "test" がベース アドレスの末尾に追加されています。具体的には https://localhost:8000/servicemodelsamples/service/test です。
3 番目のエンドポイント定義では、絶対アドレスを指定します。次のサンプル構成を参照してください。
<endpoint address="https://localhost:8001/hello/servicemodelsamples"
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
このアドレスでは、ベース アドレスは使用されていません。具体的には https://localhost:8001/hello/servicemodelsamples です。
4 番目のエンドポイント アドレスは、絶対アドレスと別のトランスポート (ここでは TCP) を指定しています。このアドレスでは、ベース アドレスは使用されていません。具体的には net.tcp://localhost:9000/servicemodelsamples/service です。
<!-- The absolute address specified, different transport: -->
<!-- use the specified address, and ignore the base address. -->
<!-- The endpoint address is -->
<!-- net.tcp://localhost:9000/servicemodelsamples/service. -->
<endpoint address=
"net.tcp://localhost:9000/servicemodelsamples/service"
binding="netTcpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
</service>
クライアントがアクセスするのは、4 つのサービス エンドポイントのうちの 1 つだけですが、4 つすべてのエンドポイントがこの構成ファイルに定義されています。クライアントは CalculatorProxy
オブジェクトの作成時にエンドポイントを選択します。CalculatorEndpoint1
から CalculatorEndpoint4
までの構成名を変更することにより、それぞれのエンドポイントを実行できます。
このサンプルを実行する際、サービスはそれぞれのエンドポイントのアドレス、バインディング名、およびコントラクト名を列挙します。ServiceHost から見た場合、メタデータ交換 (MEX) エンドポイントは他と同じエンドポイントにすぎません。したがって、このエンドポイントもこの一覧に表示されます。
Service endpoints:
Endpoint - address: https://localhost:8000/ServiceModelSamples/service
binding: WSHttpBinding
contract: ICalculator
Endpoint - address: https://localhost:8000/ServiceModelSamples/service/test
binding: WSHttpBinding
contract: ICalculator
Endpoint - address: https://localhost:8001/hello/servicemodelsamples
binding: WSHttpBinding
contract: ICalculator
Endpoint - address: net.tcp://localhost:9000/servicemodelsamples/service
binding: NetTcpBinding
contract: ICalculator
Endpoint - address: https://localhost:8000/ServiceModelSamples/service/mex
binding: MetadataExchangeHttpBinding
contract: IMetadataExchange
The service is ready.
Press <ENTER> to terminate service.
このクライアントを実行すると、操作要求と応答がサービスとクライアントの両方のコンソール ウィンドウに表示されます。どちらかのコンソールで Enter キーを押すと、サービスとクライアントがどちらもシャットダウンされます。
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
サンプルを設定、ビルド、および実行するには
「Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」が実行済みであることを確認します。
ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。
サンプルを単一コンピュータ構成または複数コンピュータ構成で実行するには、「Windows Communication Foundation サンプルの実行」の手順に従います。
メモ : Svcutil.exe を使用してこのサンプルの構成を再生成した場合は、クライアント コードに一致するように、クライアント構成内のエンドポイント名を変更してください。
Copyright © 2007 by Microsoft Corporation.All rights reserved.