Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
TCPActivation-exemplet visar värd för en tjänst som använder Windows Process Activation Services (WAS) för att aktivera en tjänst som kommunicerar via net.tcp-protokollet. Det här exemplet baseras på Komma igång.
Anmärkning
Installationsproceduren och bygginstruktionerna för det här exemplet finns i slutet av det här avsnittet.
Exemplet består av ett klientkonsolprogram (.exe) och ett tjänstbibliotek (.dll) som finns i en arbetsprocess som aktiveras av WAS. Klientaktiviteten visas i konsolfönstret.
Tjänsten implementerar ett kontrakt som definierar ett kommunikationsmönster för begäran-svar. Kontraktet definieras av ICalculator gränssnittet, som exponerar matematiska åtgärder (Lägg till, Subtrahera, Multiplicera och Dividera), enligt följande exempelkod:
[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);
}
Tjänstimplementeringen beräknar och returnerar lämpligt resultat:
// 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;
}
}
Exemplet använder en variant av net.tcp-bindningen med TCP-portdelning aktiverad och säkerhet inaktiverad. Om du vill använda en skyddad TCP-bindning ändrar du serverns säkerhetsläge till önskad inställning och kör om Svcutil.exe på klienten för att generera en uppdateringsklientkonfigurationsfil.
Följande exempel visar konfigurationen för tjänsten:
<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>
Klientens slutpunkt konfigureras enligt följande exempelkod:
<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>
När du kör exemplet visas åtgärdsbegäranden och svar i klientkonsolfönstret. Tryck på RETUR i klientfönstret för att stänga av klienten.
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.
Så här konfigurerar du, skapar och kör exemplet
Kontrollera att IIS 7.0 är installerat. IIS 7.0 krävs för WAS-aktivering.
Kontrollera att du har utfört One-Time installationsproceduren för Windows Communication Foundation-exempel.
Dessutom måste du installera WCF-komponenter för icke-HTTP-aktivering.
På Start-menyn väljer du Kontrollpanelen.
Välj Program och funktioner.
Klicka på Aktivera eller inaktivera Windows-komponenter.
Expandera Microsoft .NET Framework 3.0-noden och markera funktionen Windows Communication Foundation Non-HTTP Activation.
Konfigurera WAS för att stödja TCP-aktivering.
Som en bekvämlighet implementeras följande två steg i en batchfil med namnet AddNetTcpSiteBinding.cmd som finns i exempelkatalogen.
För att stödja net.tcp-aktivering måste standardwebbplatsen först vara bunden till en net.tcp-port. Detta kan göras med hjälp av Appcmd.exe, som installeras med IIS-hanteringsverktygen (Internet Information Services 7.0). Kör följande kommando från en kommandotolk på administratörsnivå:
%windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*']Tips/Råd
Det här kommandot är en enda textrad. Det här kommandot lägger till en net.tcp-platsbindning till standardwebbplatsen som lyssnar på TCP-port 808 med valfritt värdnamn.
Även om alla program på en webbplats delar en gemensam net.tcp-bindning kan varje program aktivera net.tcp-stöd individuellt. Om du vill aktivera net.tcp för programmet /servicemodelsamples kör du följande kommando från en kommandotolk på administratörsnivå:
%windir%\system32\inetsrv\appcmd.exe set app "Default Web Site/servicemodelsamples" /enabledProtocols:http,net.tcpAnmärkning
Det här kommandot är en enda textrad. Med det här kommandot kan programmet /servicemodelsamples användas med både
http://localhost/servicemodelsamplesochnet.tcp://localhost/servicemodelsamples.
Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.
Om du vill köra exemplet i en konfiguration med en eller flera datorer följer du anvisningarna i Köra Windows Communication Foundation-exempel.
Ta bort net.tcp-platsbindningen som du lade till för det här exemplet.
Som en bekvämlighet implementeras följande två steg i en batchfil med namnet RemoveNetTcpSiteBinding.cmd som finns i exempelkatalogen.
Ta bort net.tcp från listan över aktiverade protokoll genom att köra följande kommando från en kommandotolk på administratörsnivå:
%windir%\system32\inetsrv\appcmd.exe set app "Default Web Site/servicemodelsamples" /enabledProtocols:httpAnmärkning
Det här kommandot måste anges som en enda textrad.
Ta bort net.tcp-platsbindningen genom att köra följande kommando från en kommandotolk på administratörsnivå:
%windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" --bindings.[protocol='net.tcp',bindingInformation='808:*']Anmärkning
Det här kommandot måste skrivas in som en enda textrad.