Czy pochłonie je wszystkie? Czy rzuci wyjątek?Co się stanie, gdy klient WCF określi wiele punktów końcowych dla tej samej umowy?
6
A
Odpowiedz
11
Możesz mieć wiele punktów końcowych dla tej samej umowy i różnych adresów w konfiguracji clieint, bez problemu.
Muszą być oddzielone unikalnym atrybutem name=
na znaczniku <endpoint>
.
<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>
Podczas tworzenia proxy klienta, trzeba podać nazwę punktu końcowego, którego chcesz użyć:
YourClient client = new YourClient("netTcpEndpoint");
można już nie tylko instancję klienta i oczekiwać, że aby znaleźć „THE "Punkt końcowy do użycia, ponieważ istnieje wiele (i nie ma sposobu, aby zdefiniować jeden jako" domyślny ", który zostanie użyty, jeśli nic nie zostanie określone, niestety).
Poza tym - jak sądzę, nie powinno być problemów.
ya. nie miałoby sensu połączyć się z ex: basicHttpbinding + wsHttpBinding + netTcpBinding w tym samym czasie. – vidalsasoon
@vidal: niezupełnie, nie :-) Ale ty ** mógłbyś ** potencjalnie mieć jednego klienta przechodzącego przez netTcp, a inna instancja klienta przechodzi na http - jeśli kiedykolwiek będziesz tego potrzebować (nie wiesz, dlaczego byłaby potrzebna - ale ty ** could ** ;-) –
Jeśli masz klienta sieciowego Java i grubego klienta .Net dla prawdziwego przykładu życia. Klient java używa http i klient .Net używa net.tcp – softveda