Wie benutze ich einen WCF Dual Service über das Internet?

Ich habe dieses Tutorial befolgt (zumindest basiert meine WCF darauf, denn ich muss dann gleichermaßen arbeiten):http://www.eggheadcafe.com/tutorials/wcf/b5ada8df-58c5-492f-b368-457b3a4f137c/notify-client-applications-using-wcf-callbacks.aspx

Es funktioniert sehr gut auf meinem Computer, aber ich muss es über das Internet verwenden. Während ich dies versuchte, hörte ich (über das Internet), dass es besser ist, netTcpBiding zu verwenden.

Ich werde einen Server haben, der die Anzahl der Online-Clients kennt. Ich wollte einen WFC-Dienst auf meinem IIS auf dem Server und einen Windows-Dienst, der ihn verbraucht und benachrichtigt. Ich brauche den Rückruf, da der Server manchmal einige Befehle auf dem Client ausführen kann.

Ich würde mich sehr freuen, wenn mir jemand weiterhelfen könnte.

Danke im Voraus,

Bearbeiten:

Machen Sie sich klar: Ich konnte es einfach nicht über das Internet zum Laufen bringen. Können Sie mir zeigen, wie ich meine Konfigurationen (Web.config und App.config) ändern kann, um netTcpBinding zu verwenden und über das Internet zu arbeiten?

Danke noch einmal,

Bearbeiten 2:

Meine Web.config in meiner WCFServiceApplication ist:

<?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>

Meine App.config in meinem WindowsService ist:

<?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>

Nur zu netTcpBinding zu wechseln, funktioniert nicht ...

Aber ich würde mich freuen, dies über das Internet ausführen zu können ... Ich habe den WCFService auf IIS veröffentlicht. Links:

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

ODER

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

Sie müssen nur die Konfiguration ändern, damit es über das Internet funktioniert? Wie gesagt, lokal funktioniert es prima.

Ich dachte, dass nur die Änderung der Endpunktadresse auf dem Client in eine der URLs darüber funktionieren würde, aber es hat nicht geklappt ...

Das Beispiel, das Sie verknüpft haben, hostet den Dienst in der WPF. Ich weiß nicht, ob es auf mein Szenario zutrifft ...

Ich glaube, ich bleibe beim DualHttpBinding. Sie glauben nicht, dass die Portweiterleitung meinen Anforderungen entspricht. Ich kann viele Clients in einem Intranet haben und den Router entscheiden lassen, welche er Informationen senden wird denn es ist nicht gut, oder? Oder gibt es eine Möglichkeit, den Router dazu zu bringen, korrekt auf alle Maschinen zu reagieren, die über denselben Port mit meinem Webserver verbunden sind ?! (nur fragen, hehehe)

Vielen Dank im Voraus,

Am 21.06.2012 bearbeiten:

Danke für die Lektüre. Ich konnte den Dienst nicht zum Arbeiten mit netTcpBinding im LAN bringen. Ich habe eine Probe meines Cenario gemacht. Es istHier. DualCommunicationTest genannt.

Als ich diesen Beitrag startete, wollte ich nur wissen, wie ich diesen Cenarius im Internet zum Laufen bringen kann. Nur das. Während meiner Suche nach einer Lösung vor dem Posten hier las ich, dass netTcpBinding besser ist. Also habe ich danach gefragt. Es war nur eine Nebenfrage.

Also ... meine aktuellen Anforderungen an die Post sind:

Wie benutzt manDie Probe habe ich entwickelt im Internet.

ODER

Wie man ... machtDie Probe habe ich entwickelt arbeite mit netTcpBinding UND kann es dann im Internet nutzen. (Ich bin mir ziemlich sicherClunky Coder Im zweiten Teil habe ich gelernt, wie man eine net.tcp-Datei mit dem IIS und so weiter im Internet veröffentlicht. Vielen Dank dafür, aber ich konnte sie noch nicht testen, da ich noch keine netTcp-Datei erstellen konnte.)

Es tut mir leid, wenn ich nicht klar genug bin, mein Englisch ist nicht so gut. sry und nochmals vielen dank.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage