それらのベースアドレスをエンドポイントにどのように関連付けるのか疑問に思います。
プロトコルごと。
サービスエンドポイントを定義するときに、エンドポイントの相対アドレスまたは絶対アドレスを指定できます。絶対エンドポイントアドレスを指定すると、ベースアドレスは実際のエンドポイントアドレスの生成に使用されませんが、エンドポイントに相対アドレスを指定すると、ベースアドレスと相対アドレスの組み合わせを使用して、最終的なエンドポイントアドレスが生成されます。
相対エンドポイントアドレスは次のようになります。例:
<endpoint address="/hostHttp" binding="wsHttpBinding" contract="IMyService" />
<endpoint address="/hostNetTcp" binding="netTcpBinding" contract="IMyService" />
これで、WCFは、プロトコルごとに定義したベースアドレスを使用して実際のエンドポイントアドレスを生成します。
<baseAddresses>
<add baseAddress="http://localhost:8550/MyServiceHost/Service"/>
<add baseAddress="net.tcp://localhost:8551/MyServiceHost/Service"/>
</baseAddresses>
したがって、HTTPエンドポイントアドレスは最終的に次のようになります。
http://localhost:8550/MyServiceHost/Service/hostHttp
およびnetTcpエンドポイント:
net.tcp://localhost:8551/MyServiceHost/Service/hostNetTcp
これで、別のプロトコルが定義されていて、エンドポイントに絶対アドレスが定義されていない場合、WCFはその特定のプロトコルに定義されたベースアドレスを探し、ベースアドレスを使用してエンドポイントを生成します。
WCFがnetTcpBindingエンドポイントでnet.tcpベースアドレスを使用する場合、9000と9001をリッスンする2つのtcpエンドポイントがある場合はどうなりますか?競合を防ぐために構成に何を入れますか?
この場合、ypourエンドポイントに絶対アドレスを指定するのが最善だと思います。
<endpoint address="net.tcp://localhost:9000/MyServiceHost/Service"
binding="netTcpBinding"
contract="IMyService" />
<endpoint address="net.tcp://localhost:9001/MyServiceHost/Service"
binding="netTcpBinding"
contract="IMyService" />
前述のように、絶対アドレスを指定する場合、エンドポイントアドレスを生成する際にベースアドレスは参照されません。
あなたはこれを見てみたいと思うかもしれません。