none
WCF Server-Client mit "TCP" und "ServiceContract" auf eine Virtuelle Maschine. RRS feed

  • Frage

  • Hi, ich suche gerade eine Lösung für Server-Client Kommunikation. Die Besonderheit, dass der Server auf eine virtuelle Maschine(Cloud) laufen sollte.

    Ich habe mit dem WCF-Dienst von VS ausprobiert, es klappt schon mal im Prinzip. Aber ich verstehe diese vorgefertige Projekte nicht ganz.

    1. Wo/wie kann ich den Server als TCP freigeben? Default ist der WCF-Dienst als Http eingestellt.
    2. Wie kann ich den Server laufen lassen? Bis jetzt starte ich den Server immer mit Visual Studio.
    3. Der Client habe ich mit "Dienstverweis hinzufügen", das passiert alles automatisch. Ich würde aber gern den Client manuell stellen, weil ich sonst die Adresse nicht ändern kann.

    Auf Blogs, Tutorien und sonstige Hinweise würde ich mich freuen.

    Mit freundlichen Grüßen
    Nghia

    Freitag, 14. Dezember 2012 12:16

Antworten

  • Freitag, 14. Dezember 2012 15:09
    Moderator
  • Hallo Nghia,

    1. Die zugelassenen Protokolle kannst Du über die Bindings definieren, z.B. in der web.config. Beachte aber, das nicht jeder Client mit TCP klar kommt, ebenso die Problematik mit Firewalls.
    Siehe z.B.
    MSDN Magazin: WCF-Bindungen im Detail
    MSDN: Choosing a Transport
    Da sind die Vor- und Nachteile der einzelnen Protokolle aufgeführt.

    2. Den Dienst kannst Du im IIS laufen lassen; das gleiche passiert bereits, wenn Du es im VS laufen lässt, im SysTray solltest Du dazu auch ein Icon finden. Für eine bessere Skalierung/Verwaltbarkeit könntest Du zusätzlich auch noch AppFabric nutzen.

    3. Hier habe ich nicht ganz verstanden, was Du warum "manuell stellen" willst?


    Olaf Helper

    Blog Xing

    Freitag, 14. Dezember 2012 15:18
  • Wenn ich diese WCF-Dienstanwendung auf eine Virtuelle Maschine laufen lassen würde, und irgendwo mit einem Client diese WCF-Dienstanwendung zugreifen möchte, müsste ich die Dienstadresse (Clientseitig) ändern oder nicht?

    Hallo Nghia,

    richtig, dann musst die URL geändert werden.

    Das kannst Du zum einem in Deinem Projekt machen; Rechte-Maus auf den Dienstverweis => "Dienstverweis konfigurieren ..."

    Zum anderen könntest Du auch es über die .Config Datei im Client Bereich über einen "Endpoint" konfigurierbar gestalten. Der Konstruktor des Proxy Clients hat 5 Überladungen, bei einer kann man den Endpoint Namen übergeben.

    In der .Config sieht es dann so aus:

      <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="BasicHttpBinding_IService1" />
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://localhost:57949/Service1.svc" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1"
            name="BasicHttpBinding_IService1" />
        </client>
      </system.serviceModel>

    Alternativ kannst Du es auch per Tool erledigen, das kannst Du in Visual Studio 2010 über's Menü "Extras" => "WCF-Dienstkonfigurations-Editor" aufrufen, dort sieht die gleiche Konfiguration dann so aus:


    Olaf Helper

    Blog Xing

    Donnerstag, 20. Dezember 2012 07:30

Alle Antworten

  • Freitag, 14. Dezember 2012 15:09
    Moderator
  • Hallo Nghia,

    1. Die zugelassenen Protokolle kannst Du über die Bindings definieren, z.B. in der web.config. Beachte aber, das nicht jeder Client mit TCP klar kommt, ebenso die Problematik mit Firewalls.
    Siehe z.B.
    MSDN Magazin: WCF-Bindungen im Detail
    MSDN: Choosing a Transport
    Da sind die Vor- und Nachteile der einzelnen Protokolle aufgeführt.

    2. Den Dienst kannst Du im IIS laufen lassen; das gleiche passiert bereits, wenn Du es im VS laufen lässt, im SysTray solltest Du dazu auch ein Icon finden. Für eine bessere Skalierung/Verwaltbarkeit könntest Du zusätzlich auch noch AppFabric nutzen.

    3. Hier habe ich nicht ganz verstanden, was Du warum "manuell stellen" willst?


    Olaf Helper

    Blog Xing

    Freitag, 14. Dezember 2012 15:18
  • @Marcel Roma
    Hi, das mit dem Azure WebWorkerRole hab ich ausprobiert, alles funktioniert. Jedoch sollte der Server auf eine virtuelle Maschine laufen können, unabhängig von Azure Service Dienst.

    @Olaf Helper Danke für die Links.

    Wegen der Frage 3, ich kann mit "Dienstverweis hinzufügen" den "Verweis auf Serivce" automatisch erstellen lassen. Aber der Verweis zeigt auf meine lokale Adresse (http://localhost:64410/), welche die WCF-Dienstanwendung läuft. Wenn ich diese WCF-Dienstanwendung auf eine Virtuelle Maschine laufen lassen würde, und irgendwo mit einem Client diese WCF-Dienstanwendung zugreifen möchte, müsste ich die Dienstadresse (Clientseitig) ändern oder nicht?

    mfg

    Nghia

    Freitag, 14. Dezember 2012 16:00
  • Wenn ich diese WCF-Dienstanwendung auf eine Virtuelle Maschine laufen lassen würde, und irgendwo mit einem Client diese WCF-Dienstanwendung zugreifen möchte, müsste ich die Dienstadresse (Clientseitig) ändern oder nicht?

    Hallo Nghia,

    richtig, dann musst die URL geändert werden.

    Das kannst Du zum einem in Deinem Projekt machen; Rechte-Maus auf den Dienstverweis => "Dienstverweis konfigurieren ..."

    Zum anderen könntest Du auch es über die .Config Datei im Client Bereich über einen "Endpoint" konfigurierbar gestalten. Der Konstruktor des Proxy Clients hat 5 Überladungen, bei einer kann man den Endpoint Namen übergeben.

    In der .Config sieht es dann so aus:

      <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="BasicHttpBinding_IService1" />
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://localhost:57949/Service1.svc" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1"
            name="BasicHttpBinding_IService1" />
        </client>
      </system.serviceModel>

    Alternativ kannst Du es auch per Tool erledigen, das kannst Du in Visual Studio 2010 über's Menü "Extras" => "WCF-Dienstkonfigurations-Editor" aufrufen, dort sieht die gleiche Konfiguration dann so aus:


    Olaf Helper

    Blog Xing

    Donnerstag, 20. Dezember 2012 07:30
  • Hallo LocomTester,

    Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert


    Robert Breitenhofer, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 20. Dezember 2012 16:22
    Moderator