Обеспечить доступ к WCF сервису через интернет. - CodeHelper

Обеспечить доступ к WCF сервису через интернет.

1

Я создал клиентское и серверное WCF-приложения (использую tcp-биндинг). Хочу, чтобы они могли обмениваться информацией не только по локальной сети, но и через интернет.

Оба приложения консольные, клиент создан с помощью наследования общей библиотеки с интерфейсом (без всяких конфигурационных файлов). Как мне решить проблему максимально просто? Буду очень благодарен за подробную инструкцию "для чайника".

Новые ответы


3

В принципе, правильно настроенная связка WCF клиент-сервер должна работать и в локальной сети и в интернете. Если, конечно, соответствующие порты не закрыты фаерволом. Когда WCF-сервер работает не на IIS, а в консольном приложении, в конфигурации нужно указать адрес, к которому будут обращаться клиенты:

<system.serviceModel>
   <services>         
     <service name="FooService"
       behaviorConfiguration="ServiceBehavior">
      <endpoint address="АДРЕС_СЕРВИСА" binding="netTcpBinding" 
        contract="IFooService" />
      <endpoint address="mex" binding="mexTcpBinding"
           contract="IMetadataExchange" />
     </service>
   </services>
 </system.serviceModel>

Затем, при создании прокси на клиенте нужно использовать тот же адрес. Например, при использовании ChannelFactory это может выглядеть так:

IFooService service = 
    ChannelFactory<IFooService>.CreateChannel(
        new NetTcpBinding(), 
        new EndpointAddress(
        "net.tcp://example.com/АДРЕС_СЕРВИСА"));

Или можно прописать то же в файле конфигурации клиента:

<system.serviceModel>
    <client>
        <endpoint 
            address="net.tcp://example.com/АДРЕС_СЕРВИСА"
            binding="netTcpBinding" bindingConfiguration="" 
            contract="Services.IFooService"
            name="FooSvc" />
    </client>
</system.serviceModel>

v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.