По сути, вам нужно сделать две вещи:
измените конфигурацию на стороне сервера, чтобы включить конечную точку с netTcpBinding (это может быть в дополнение к существующей конечной точке wsHttpBinding - нет проблем)
добавьте netTcpBinding в файл конфигурации вашего клиента и выберите эту конечную точку при подключении
У вас должно быть что-то вроде этого в конфигурации на стороне сервера:
<services>
<service name="YourService">
<endpoint name="something"
address=""
binding="wsHttpBinding"
contract="IYourService" />
</service>
</services>
Просто добавьте конечную точку для netTcpBinding:
<services>
<service name="YourService">
<endpoint name="something"
address=""
binding="wsHttpBinding"
contract="IYourService" />
<endpoint name="something"
address="net.tcp://YourServer:7171/YourService"
binding="netTcpBinding"
contract="IYourService" />
</service>
</services>
Теперь, если вы размещаете в IIS, вы можете столкнуться с некоторыми проблемами — вам нужно настроить IIS7 (сервер Win2008 или Win2008R2), а в IIS6 вы не сможете разместить службу netTcp в IIS6 :-(
То же самое на стороне клиента — добавьте вторую конечную точку для netTcp:
<client>
<endpoint name="something"
address="http://YourServer/SomeVirtDir/YourServiceFile.svc"
binding="wsHttpBinding"
contract="IYourService" />
<endpoint name="netTcpEndpoint"
address="net.tcp://YourServer:7171/YourService"
binding="netTcpBinding"
contract="IYourService" />
</client>
и теперь, когда вы создаете свою конечную точку в коде, используйте именованную конечную точку:
YourServiceClient client = new YourServiceClient("netTcpEndpoint");
Это должно быть все, на самом деле (если только CSLA не требует чего-то дополнительного, о чем я бы не знал... Я знаю WCF "обычный-ванильный")
person
marc_s
schedule
16.04.2010