Служба WCF с двумя типами привязки для двух разных клиентов - PullRequest
3 голосов
/ 14 октября 2010

Как я могу предоставить службу WCF, чтобы один клиент, использующий привязки wsHttp, и другой клиент, использующий привязки netTcp, могли использовать эту службу?

Ответы [ 2 ]

12 голосов
/ 14 октября 2010

Это все конфигурация - когда вы определяете свою службу, вы просто определяете две конечные точки - одну для wsHttpBinding, другую для netTcpBinding. Это так просто!

<system.serviceModel>
   <services>
      <service name="YourNamespace.MyService">
         <endpoint 
             address="ws" 
             binding="wsHttpBinding" 
             contract="YourNamespace.IMyService" />
         <endpoint 
             address="net.tcp://localhost:8787/MyService" 
             binding="netTcpBinding"
             contract="YourNamespace.IMyService" />
       <host>
           <baseAddresses>
                <add baseAddress="http://localhost:8282/" />
           </baseAddresses>
       </host>
     </service>
  </services>
</system.serviceModel>

Теперь у вас есть сервис, предоставляющий две конечные точки:

  • один, использующий wsHttpBinding в http://localhost:8282/ws
  • один, использующий netTcpBinding в tcp://localhost:8787/MyService

Обе конечные точки предназначены для одной и той же услуги, для одного и того же контракта на обслуживание, например предлагают те же функции и методы обслуживания.

Каждая конечная точка службы в WCF должна определять ABC WCF:

  • [A] ddress - где услуга может быть достигнута / вызвана?
  • [B] inding - как можно вызвать службу (протокол, настройки, безопасность и т. Д.)?
  • [C] ontract - что сервис предлагает по этому адресу, какие методы выставляются?
0 голосов
/ 14 октября 2010

Короче говоря, вы можете сделать это просто с помощью конфигурации!

Вы видели этот учебник? Проверьте это .

Это превосходное учебное пособие с изображениями экрана всего основного процесса настройки примера службы с несколькими конечными точками с помощью Редактора конфигурации службы Microsoft .

...