Как использовать WCF Dual Service через Интернет?

Я следовал этому руководству (по крайней мере, на этом основывался мой WCF, потому что тогда мне нужно работать одинаково): http://www.eggheadcafe.com/tutorials/wcf/b5ada8df-58c5-492f-b368-457b3a4f137c/notify-client-applications-using-wcf-callbacks.aspx

Он очень хорошо работает на моем компьютере, но мне нужно использовать его через Интернет. При попытке сделать это я услышал (через Интернет), что лучше использовать netTcpBiding.

У меня будет сервер, который будет знать о количестве клиентов в сети. Мне нужен был сервис WFC на моем IIS на сервере, а сервис Windows использовал и уведомлял об этом. Мне нужен обратный вызов, потому что сервер иногда должен выполнять некоторые команды на клиенте.

Я был бы очень рад, если бы кто-нибудь мог мне помочь.

Заранее спасибо,

Edit:

Я проясняю: я просто не мог заставить это работать через Интернет. Ребята, можете ли вы показать мне, как я могу изменить свои конфигурации (Web.config e App.config), чтобы использовать netTcpBinding и работать через Интернет?

Еще раз спасибо,

Edit 2:

Мой Web.config в моем приложении WCFServiceApplication:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <bindings>
      <wsDualHttpBinding>
        <binding name="WSDualHttpBinding_IPCWatcherWCFService" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
            maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
            messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00" />
          <security mode="Message">
            <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" />
          </security>
        </binding>
      </wsDualHttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="TiT.PCWatcher.Server.WCFService.Services.PCWatcherWCFServiceBehavior" name="TiT.PCWatcher.Server.WCFService.Services.PCWatcherWCFService">
        <endpoint address="" binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_IPCWatcherWCFService" contract="TiT.PCWatcher.Server.WCFService.Interfaces.IPCWatcherWCFService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="TiT.PCWatcher.Server.WCFService.Services.PCWatcherWCFServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

Мой App.config в моем WindowsService:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings>
      <wsDualHttpBinding>
        <binding name="WSDualHttpBinding_IPCWatcherWCFService" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
          maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
          textEncoding="utf-8" useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00" />
          <security mode="Message">
            <message clientCredentialType="Windows" negotiateServiceCredential="true"
              algorithmSuite="Default" />
          </security>
        </binding>
      </wsDualHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:25145/Services/PCWatcherWCFService.svc"
        binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_IPCWatcherWCFService"
        contract="PCWatcherWCFServiceReference.IPCWatcherWCFService"
        name="WSDualHttpBinding_IPCWatcherWCFService">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>
</configuration>

Просто изменить его на NetTcpBinding не работает ...

Но я был бы достаточно рад, чтобы иметь возможность запустить это через Интернет ... Я опубликовал WCFService на IIS. Ссылки:

https://www2.tcenter.com.br/monitor/PCWatcherWCFService.svc

ИЛИ ЖЕ

http://www2.tcenter.com.br:8080/monitor/PCWatcherWCFService.svc

Просто измените настройки достаточно, чтобы заставить его работать через Интернет? как я уже сказал, местный он работает просто отлично.

Я думал, что простое изменение адреса конечной точки на клиенте на один из вышеуказанных URL-адресов может сработать, но это не сработало ...

Пример, который вы связали, размещает службу в WPF. Я не знаю, относится ли это к моему кенарио ...

Я думаю, что я буду придерживаться DualHttpBinding, вы не думаете, что переадресация порта хороша для моих нужд, у меня может быть много клиентов в одной интрасети, и маршрутизатор решает, с кем он собирается отправить информацию для этого не подходит? или есть способ заставить маршрутизатор корректно реагировать на каждую машину, подключенную к моему веб-серверу через один и тот же порт ?! (просто спрашиваю, хе-хе)

Заранее большое спасибо,

Edit on 21/06/2012:

Спасибо за чтение. Мне не удалось заставить сервис работать с netTcpBinding в локальной сети. Я сделал пробный образец моего кенарио. Это & APOS; sВот, Называется DualCommunicationTest.

Когда я начал этот пост, я просто хотел узнать, как сделать этот кенарий в интернете. Только то. В течение моего времени поиска решения, прежде чем писать здесь, я читал, что netTcpBinding лучше. Поэтому я спросил об этом. Это был просто побочный вопрос.

Итак ... мои текущие потребности в должности:

Как пользоватьсяобразец, который я разработал в Интернете.

ИЛИ ЖЕ

Как сделатьобразец, который я разработал работать с netTcpBinding и затем иметь возможность использовать его в Интернете. (Я уверен,Неуклюжий кодер научил меня второй части, о том, как публиковать net.tcp в интернете с IIS и прочим, большое спасибо за это, но я пока не смог его протестировать, потому что я еще не смог сделать netTcp.)

Прошу прощения, если я не достаточно ясен, мой английский не очень хорош. спасибо и еще раз большое спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос