CSLA с WCF nettcpbinding - PullRequest
       17

CSLA с WCF nettcpbinding

1 голос
/ 16 апреля 2010

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

Спасибо!

С наилучшими пожеланиями, Томас

1 Ответ

1 голос
/ 16 апреля 2010

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

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

...