Gewusst wie: Hosten eines WCF-Diensts in WAS

In diesem Thema werden die grundlegenden Schritte vorgestellt, die für die Erstellung eines in WAS (Windows Process Activation Services) gehosteten Windows Communication Foundation (WCF)-Diensts erforderlich sind. WAS ist der neue Prozessaktivierungsdienst, der eine Generalisierung der Features der Internetinformationsdienste (IIS) darstellt, die mit Nicht-HTTP-Transportprotokollen arbeiten. WCF verwendet die Schnittstelle des Listeneradapters, um Aktivierungsanforderungen weiterzugeben, die über die von WCF unterstützten Nicht-HTTP-Protokolle, wie etwa TCP, Named Pipes und Message Queuing, empfangen wurden.

Diese Hostingoption erfordert, dass die WAS-Aktivierungskomponenten korrekt installiert und konfiguriert wurden, jedoch muss keinerlei Hostcode für die Anwendung geschrieben werden. Weitere Informationen zur Installation und Konfiguration von WAS finden Sie unter Gewusst wie: Installieren und Konfigurieren von WCF-Aktivierungskomponenten.

Wenn ein WCF-Dienst in WAS gehostet wird, werden die Standardbindungen auf die übliche Weise verwendet. Werden jedoch NetTcpBinding und NetNamedPipeBinding verwendet, um einen WAS-gehosteten Dienst zu konfigurieren, muss eine Bedingung erfüllt sein. Wenn verschiedene Endpunkte denselben Transport verwenden, müssen die Bindungseinstellungen für die folgenden sieben Eigenschaften übereinstimmen:

  • ConnectionBufferSize
  • ChannelInitializationTimeout
  • MaxPendingConnections
  • MaxOutputDelay
  • MaxPendingAccepts
  • ConnectionPoolSettings.IdleTimeout
  • ConnectionPoolSettings.MaxOutboundConnectionsPerEndpoint

Andernfalls bestimmt der zuerst initialisierte Endpunkt die Werte dieser Eigenschaften, und später hinzugefügte Endpunkte lösen eine ServiceActivationException aus, wenn ihre Einstellungen diesen Einstellungen nicht entsprechen.

Die Quellkopie dieses Beispiels finden Sie unter TCP Activation.

So erstellen Sie einen grundlegenden durch WAS gehosteten Dienst

  1. Definieren Sie einen Dienstvertrag für den Diensttyp.

  2. Implementieren Sie den Dienstvertrag in einer Dienstklasse. Beachten Sie, dass die Adresse oder die Bindungsinformationen in der Implementierung des Diensts nicht angegeben werden. Es muss auch kein Code geschrieben werden, um Informationen aus der Konfigurationsdatei abzurufen.

  3. Erstellen Sie eine Web.config-Datei, um einen Endpunkt für den CalculatorService zu konfigurieren, der die NetTcpBinding verwendet.

  4. Erstellen Sie eine Service.svc-Datei, die die folgende Zeile enthält:

    <%@ServiceHost language=c# Service="CalculatorService" %> 
    
  5. Stellen Sie die Service.svc-Datei in das virtuelle IIS-Verzeichnis.

So erstellen Sie einen Client, der den Dienst verwendet

  1. Verwenden Sie das ServiceModel Metadata Utility Tool (Svcutil.exe) in der Befehlszeile, um Code aus Dienstmetadaten zu generieren.

    Svcutil.exe <service's Metadata Exchange (MEX) address or HTTP GET address> 
    
  2. Der generierte Client enthält die ICalculator-Schnittstelle, die den Dienstvertrag definiert, den die Clientimplementierung erfüllen muss.

  3. Die generierte Clientanwendung enthält außerdem die Implementierung von ClientCalculator. Beachten Sie, dass die Adresse und die Bindungsinformationen in der Implementierung des Diensts nirgendwo angegeben werden. Es muss auch kein Code geschrieben werden, um Informationen aus der Konfigurationsdatei abzurufen.

  4. Svcutil.exe generiert auch die Konfiguration für den Client, der NetTcpBinding verwendet. Wenn Sie Visual Studio verwenden, sollte diese Datei in der Datei App.config genannt werden.

  5. Erstellen Sie eine Instanz von ClientCalculator in einer Anwendung, und rufen Sie dann die Dienstvorgänge auf.

  6. Kompilieren Sie den Code, und führen Sie den Client aus.

Siehe auch

Weitere Ressourcen

TCP Activation