Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das TCPActivation-Beispiel veranschaulicht das Hosten eines Diensts, der Windows Process Activation Services (WAS) verwendet, um einen Dienst zu aktivieren, der über das Net.tcp-Protokoll kommuniziert. Dieses Beispiel basiert auf den Ersten Schritten.
Hinweis
Die Einrichtungsverfahren und Build-Anweisungen für dieses Beispiel befinden sich am Ende dieses Themas.
Das Beispiel besteht aus einem Clientkonsolenprogramm (.exe) und einer Dienstbibliothek (.dll), die in einem von WAS aktivierten Arbeitsprozess gehostet wird. Clientaktivitäten sind im Konsolenfenster sichtbar.
Der Dienst implementiert einen Vertrag, der ein Kommunikationsmuster für die Anforderungsantwort definiert. Der Vertrag wird durch die ICalculator Schnittstelle definiert, die mathematische Operationen (Add, Subtrahieren, Multiplizieren und Dividieren) verfügbar macht, wie im folgenden Beispielcode dargestellt:
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}
Die Dienstimplementierung berechnet und gibt das entsprechende Ergebnis zurück:
// Service class that implements the service contract.
public class CalculatorService : ICalculator
{
public double Add(double n1, double n2)
{
return n1 + n2;
}
public double Subtract(double n1, double n2)
{
return n1 - n2;
}
public double Multiply(double n1, double n2)
{
return n1 * n2;
}
public double Divide(double n1, double n2)
{
return n1 / n2;
}
}
Das Beispiel verwendet eine Variante der net.tcp-Bindung mit aktivierter TCP-Portfreigabe und deaktivierter Sicherheit. Wenn Sie eine gesicherte TCP-Bindung verwenden möchten, ändern Sie den Sicherheitsmodus des Servers in die gewünschte Einstellung, und führen Sie Svcutil.exe auf dem Client erneut aus, um eine Updateclientkonfigurationsdatei zu generieren.
Das folgende Beispiel zeigt die Konfiguration für den Dienst:
<system.serviceModel>
<services>
<service name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- This endpoint is exposed at the base address provided by host: net.tcp://localhost/servicemodelsamples/service.svc -->
<endpoint binding="netTcpBinding" bindingConfiguration="PortSharingBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- the mex endpoint is exposed at net.tcp://localhost/servicemodelsamples/service.svc/mex -->
<endpoint address="mex"
binding="mexTcpBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<netTcpBinding>
<binding name="PortSharingBinding" portSharingEnabled="true">
<security mode="None" />
</binding>
</netTcpBinding>
</bindings>
<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceMetadata />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Der Endpunkt des Clients ist wie im folgenden Beispielcode dargestellt konfiguriert:
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="NetTcpBinding_ICalculator">
<security mode="None"/>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://localhost/servicemodelsamples/service.svc"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_ICalculator"
contract="Microsoft.ServiceModel.Samples.ICalculator" name="NetTcpBinding_ICalculator" />
</client>
</system.serviceModel>
Wenn Sie das Beispiel ausführen, werden die Vorgangsanforderungen und -antworten im Clientkonsolenfenster angezeigt. Drücken Sie im Clientfenster die EINGABETASTE, um den Client zu schließen.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
So können Sie das Beispiel einrichten, erstellen und ausführen
Stellen Sie sicher, dass IIS 7.0 installiert ist. IIS 7.0 ist für die WAS-Aktivierung erforderlich.
Stellen Sie sicher, dass Sie das One-Time Setup-Verfahren für die Windows Communication Foundation-Beispiele ausgeführt haben.
Darüber hinaus müssen Sie die NICHT-HTTP-Aktivierungskomponenten des WCF installieren:
Wählen Sie im Startmenü die Systemsteuerung aus.
Wählen Sie "Programme und Features" aus.
Klicken Sie auf "Windows-Komponenten aktivieren" oder "Deaktivieren".
Erweitern Sie den Knoten Microsoft .NET Framework 3.0, und aktivieren Sie die Funktion Windows Communication Foundation-Nicht-HTTP-Aktivierung.
Konfigurieren Sie WAS zur Unterstützung der TCP-Aktivierung.
Aus Gründen der Einfachheit werden die folgenden beiden Schritte in einer Batchdatei mit dem Namen AddNetTcpSiteBinding.cmd implementiert, die sich im Beispielverzeichnis befindet.
Zur Unterstützung der Net.tcp-Aktivierung muss die Standardwebsite zuerst an einen net.tcp-Port gebunden sein. Dies kann mithilfe von Appcmd.exeerfolgen, das mit dem Management-Toolset der Internet Information Services (IIS) 7.0 installiert ist. Führen Sie an einer Eingabeaufforderung auf Administratorebene den folgenden Befehl aus:
%windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*']Tipp
Dieser Befehl ist eine einzelne Textzeile. Mit dem Befehl wird eine neue net.tcp-Sitebindung der Standardwebsite hinzugefügt, die TCP-Port 808 mit jedem beliebigen Hostnamen überwacht.
Obwohl alle Anwendungen innerhalb einer Website eine gemeinsame net.tcp-Bindung verwenden, kann jede Anwendung die net.tcp-Unterstützung einzeln aktivieren. Um net.tcp für die /servicemodelsamples-Anwendung zu aktivieren, führen Sie den folgenden Befehl an einer Eingabeaufforderung auf Administratorebene aus:
%windir%\system32\inetsrv\appcmd.exe set app "Default Web Site/servicemodelsamples" /enabledProtocols:http,net.tcpHinweis
Dieser Befehl ist eine einzelne Textzeile. Dieser Befehl ermöglicht den Zugriff auf die /servicemodelsamples-Anwendung mit beiden
http://localhost/servicemodelsamplesundnet.tcp://localhost/servicemodelsamples.
Um die C#- oder Visual Basic .NET-Edition der Lösung zu erstellen, befolgen Sie die Anweisungen in Building the Windows Communication Foundation Samples.
Wenn Sie das Beispiel in einer Konfiguration mit einem oder mehreren Computern ausführen möchten, befolgen Sie die Anweisungen unter Ausführen der Windows Communication Foundation-Beispiele.
Entfernen Sie die für dieses Beispiel hinzugefügte net.tcp-Websitebindung.
Aus Gründen der Einfachheit werden die folgenden beiden Schritte in einer Batchdatei namens RemoveNetTcpSiteBinding.cmd im Beispielverzeichnis implementiert.
Entfernen Sie net.tcp aus der Liste der aktivierten Protokolle, indem Sie den folgenden Befehl an einer Eingabeaufforderung auf Administratorebene ausführen:
%windir%\system32\inetsrv\appcmd.exe set app "Default Web Site/servicemodelsamples" /enabledProtocols:httpHinweis
Dieser Befehl muss als einzelne Textzeile eingegeben werden.
Entfernen Sie die net.tcp-Sitebindung, indem Sie den folgenden Befehl in einer Eingabeaufforderung auf Administratorebene ausführen.
%windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" --bindings.[protocol='net.tcp',bindingInformation='808:*']Hinweis
Dieser Befehl muss als einzelne Textzeile eingegeben werden.