Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What happens when a WCF client specifies multiple endpoints for the same contract?

Will it consume from all of them? Will it throw an exception?

like image 820
Jader Dias Avatar asked Dec 11 '09 13:12

Jader Dias


1 Answers

You can have multiple endpoints for the same contract and different addresses in your clieint config, no problem.

They need to be separated by a unique name= attribute on the <endpoint> tag.

<client>
  <endpoint name="tcpEndpoint"
            address="net.tcp://server:8888/SomeService"
            binding="netTcpBinding"
            contract="IYourService" />
  <endpoint name="httpEndpoint"
            address="http://server:8777/SomeService"
            binding="basicHttpBinding"
            contract="IYourService" />
</client>

When you create your client proxy, you need to provide the name of the endpoint you want to use:

YourClient client = new YourClient("netTcpEndpoint");

You can no longer just instantiate your client and expect it to find "the" endpoint to use, since there are multiple (and there's no way to define one as the "default" which gets used if nothing is specified, unfortunately).

Other than that - no problems should arise, I think.

like image 113
marc_s Avatar answered Sep 18 '22 00:09

marc_s