CSLA с привязкой WCF nettcpbinding

Я использую CSLA.NET. Он отлично работает с привязкой wsHttpBinding. Теперь у меня есть собственная служба Windows, и я ищу решение, что я могу использовать эту службу Windows в качестве CSLA-сервера и использовать nettcpbinding. Может кто-нибудь подсказать, как дела? Возможно, у кого-то есть образец, как я могу это сделать.

Спасибо!

С уважением, Томас


person BennoDual    schedule 16.04.2010    source источник


Ответы (1)


По сути, вам нужно сделать две вещи:

  • измените конфигурацию на стороне сервера, чтобы включить конечную точку с 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