Mittwoch, 20. Juni 2012

Erstellen von WCF-Services mit Visual Studio 2010

  1. Starten von Visual Studio im Administratormodus
  2. Erstellen einer neuen Projektmappe
  3. Hinzufügen eines neuen Projekts (Server-Projekt)
  4. Erstellen eines Interface, das die Methoden des Service definiert. Über eine Annotation wird festgelegt, dass es sich um ein Service-Interface handelt (ServiceContract): [ServiceContract(Namespace = "http://BeispielNamespace")]. Der Name des Beispiel-Namespace kann frei gewählt werden.
  5. Die Servicemethoden werden ebenfalls annotiert: [OperationContract]
  6. Erstellen der Serviceklasse, die das Interface implementiert; die Serviceklasse ist eine POJO-Klasse, enthält also keinen Service-spezifischen Code
  7. Erstellen einer Klasse, die den Service bereitstellt:
    1. Definition der Uri, unter der der Service verfügbar sein wird: Uri baseAddress = new Uri("http://localhost:8000/ServiceModelSamples/BeispielService");  Die Bezeichungen "ServiceModelSamples" und "BeispielService" können frei gewählt werden, müssen also nicht mit der Klassenbezeichnung übereinstimmen.
    2. Erstellen des ServicHosts: ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress);
    3. Hinzufügen des Servicendpoints: selfHost.AddServiceEndpoint(
                      typeof(),
                      new WSHttpBinding(),
                      "BeispielService");
    4. Konfiguration des Service-Hosts: ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                      smb.HttpGetEnabled = true;
                      selfHost.Description.Behaviors.Add(smb);
    5. Öffnen des Service-Hosts: selfHost.Open();
    6. Zum Beenden des Service wird der Service-Host geschlossen: selfHost.Close();
    7. Ausführung des Server-Projekts zum Starten des Service
  8. Hinzufügen eines neuen Projekts (Client-Projekt)
  9. Erzeugung des Proxy mit Hilfe der Anwendung "SvcUtil.exe": Die Anwendung ist zu finden unter "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin" und wird vom Client-Projekt-Ordner aus aufgerufen: "SvcUtil.exe" /language:cs /out:generatedProxy.cs /config:app.config http://localhost:8000/ServiceModelSamples/BeispielService". Wichtig zur Generierung des Quellcodes ist, dass der Service (als Administrator) gestartet ist. Dadurch wird die Quellcode-Datei "generatedProxy.cs erstellt. 
  10. Der Service kann im Quellcode des Clients wie eine lokale Komponente verwendet werden: BeispielClient client = new BeispielClient();