Как разместить WCF через порты TCP?

Как размещать службы WCF через TCP-порты и как прослушивать их и использовать службы через эти TCP-порты?

То есть, помимо привязки net.tcp, есть ли какой-то способ размещения и использования с использованием TCP-портов?


person kurozakura    schedule 29.06.2009    source источник
comment
Таким образом, в основном, в Windows XP хостинг n потребление может быть выполнено тремя способами: 1. самостоятельный хостинг 2. IIS 3. как служба Windows, поэтому открытие TCP-порта и его использование подпадает под самостоятельный хостинг или это другой способ хостинга n потребляет службы wcf или есть ли какой-либо другой способ, т.е. под TCP?   -  person kurozakura    schedule 29.06.2009


Ответы (5)


В WCF вы можете самостоятельно разместить любую службу, создав экземпляр класса ServiceHost, настроив его с правильными конечными точками и реализацией службы, которую вы хотите предоставить, и вызовите для нее Open. Это называется самостоятельное размещение, поскольку вы размещаете службу (и ее прослушиватели портов) в своем собственном приложении.

В качестве альтернативы вы можете разместить свою службу в IIS, но вы должны знать, что, хотя вы можете разместить WCF в IIS 6, он позволяет размещать только конечные точки HTTP и HTTPS. Если вы хотите разместить конечные точки TCP в IIS (что является хорошей идеей), вам понадобится IIS 7.

Подробнее читайте здесь.

person Mark Seemann    schedule 29.06.2009
comment
Таким образом, в основном, в Windows XP хостинг n потребление может быть выполнено тремя способами: 1. самостоятельный хостинг 2. IIS 3. как служба Windows, поэтому открытие TCP-порта и его использование подпадает под самостоятельный хостинг или это другой способ хостинга n потребляет службы wcf или есть ли какой-либо другой способ, т.е. под TCP? - person kurozakura; 29.06.2009
comment
В Windows XP не работает IIS 7, поэтому вы не можете разместить конечную точку TCP в IIS под XP. Вы можете сделать так, чтобы служба Windows размещала службу WCF, но это всего лишь еще один пример самостоятельного размещения. - person Mark Seemann; 29.06.2009

вы можете использовать любой порт (при условии, что у вас есть на это разрешение) для размещения ваших служб wcf. при использовании IIS для размещения служб wcf это несколько отличается, но в средах с самостоятельным размещением просто добавьте номер порта к вашему базовому адресу, и все готово. (при использовании Vista или Server 2008 вам необходимо предоставить доступ к порту, если вы не работаете с правами администратора (например, используя netsh))

использовать напр. порт 1337 для службы http (или net.tcp), просто добавьте «:1337/» к вашему базовому адресу, и все остальное будет сделано за вас.

person Joachim Kerschbaumer    schedule 29.06.2009
comment
Таким образом, в основном, в Windows XP хостинг n потребление может быть выполнено тремя способами: 1. самостоятельный хостинг 2. IIS 3. как служба Windows, поэтому открытие TCP-порта и его использование подпадает под самостоятельный хостинг или это другой способ хостинга n потребляет услуги wcf или есть другой способ? - person kurozakura; 29.06.2009
comment
Подробнее об использовании netsh для открытия порта здесь: msdn.microsoft.com/en -us/library/ms733768.aspx - person Darren Oster; 13.11.2009

Может это поможет

<services>
  <service behaviorConfiguration="configname"
    name="servicename">
    <endpoint address="" binding="netTcpBinding" bindingConfiguration="MyServiceBinding"
      name="NetTcpBindingEndpoint" bindingName="MyServiceBinding"
      contract="Interface">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

    <endpoint address="mex" binding="customBinding" bindingConfiguration="myMexTcpBinding"
      name="MexTcpBindingEndpoint" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:prot/TestService" />
      </baseAddresses>
    </host>
  </service>
</services>
person Ahmed Said    schedule 29.06.2009

Все привязки HTTP работают с TCP для транспортного уровня. Таким образом, вы можете использовать привязки HTTP и IIS.6 для размещения службы WCF, работающей на определенном порту TCP.

Вот пошаговое руководство о том, как этого добиться:

  • настройте службу для запуска на нужном порту из файла конфигурации (или кода):

    <service name="WCFService" behaviorConfiguration="DefaultBehaviour">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/WCFService" />
      </baseAddresses>
    </host>
    <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" name="WCFService_mexEndpoint" contract="IMetadataExchange" />
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="DefaultBinding" name="WCFService_Endpoint" contract="WCFService.IService1" />
    

  • in IIS create a web site (or virtual directory) and configure it's binding to run on the port you chose in your baseAddress service configuration (8000 for the example above).

Результатом описанных выше шагов является служба WCF, которая работает на TCP-порту 8000 для транспортного уровня, используя HTTP в качестве транспортного протокола.

Редактировать: я полагаю, что вы немного запутались. Если то, что вы пытаетесь достичь, представляет собой передаваемый двоичный пакет, то единственным доступным решением является привязка net.tcp, несовместимая с IIS.6. Если вы просто хотите иметь возможность выбрать TCP-порт соединения, то любая привязка HTTP может сделать это, как показано в моем примере выше, и может использоваться в IIS.6.

person AlexDrenea    schedule 29.06.2009
comment
Таким образом, в основном, в Windows XP хостинг n потребление может быть выполнено тремя способами: 1. самостоятельный хостинг 2. IIS 3. как служба Windows, поэтому открытие TCP-порта и его использование подпадает под самостоятельный хостинг или это другой способ хостинга n потребляет службы wcf или есть ли какой-либо другой способ, т.е. под TCP? - person kurozakura; 29.06.2009
comment
Я думаю, вы можете разместить TCP с помощью WAS в IIS 7. - person Tad Donaghe; 29.06.2009
comment
HTTP — это прикладной протокол, а не транспортный. - person aehlke; 30.07.2009

Я знаю, что это немного поздно. Но я полагаю, вы могли бы использовать приложение «WCF Service Host», которое поставляется с Visual Studio.

person Prasanna K Rao    schedule 13.10.2010