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.
Exemplet NamedPipeActivation visar värd för en tjänst som använder Windows Process Activation Service (WAS) för att aktivera en tjänst som kommunicerar via namngivna pipes. Det här exemplet baseras på Komma igång och kräver att Windows Vista körs.
Anmärkning
Konfigurationsproceduren och bygginstruktionerna för det här exemplet finns i slutet av det här avsnittet.
Exempelinformation
Exemplet består av ett klientkonsolprogram (.exe) och ett tjänstbibliotek (.dll) som finns i en arbetsprocess som aktiveras av Windows Process Activation Services (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);
}
Klienten gör synkrona begäranden till en viss matematisk åtgärd och 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 modifierad netNamedPipeBinding bindning utan säkerhet. Bindningen anges i konfigurationsfilerna för klienten och tjänsten. Bindningstypen för tjänsten anges i slutpunktselementets binding attribut enligt följande exempelkonfiguration.
Om du vill använda en skyddad pipe-bindning ändrar du serverns säkerhetsläge till önskad säkerhetsinställning och kör svcutil.exe igen på klienten för att hämta en uppdaterad klientkonfigurationsfil.
<system.serviceModel>
<services>
<service name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- This endpoint is exposed at the base address provided by host: net.pipe://localhost/servicemodelsamples/service.svc -->
<endpoint address=""
binding="netNamedPipeBinding"
bindingConfiguration="Binding1"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- the mex endpoint is exposed at net.pipe://localhost/servicemodelsamples/service.svc/mex -->
<endpoint address="mex"
binding="mexNamedPipeBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<netNamedPipeBinding>
<binding name="Binding1" >
<security mode = "None">
</security>
</binding >
</netNamedPipeBinding>
</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 slutpunktsinformation konfigureras enligt följande exempelkod.
<system.serviceModel>
<client>
<endpoint name=""
address="net.pipe://localhost/servicemodelsamples/service.svc"
binding="netNamedPipeBinding"
bindingConfiguration="Binding1"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
</client>
<bindings>
<!-- Following is the expanded configuration section for a NetNamedPipeBinding.
Each property is configured with the default value. -->
<netNamedPipeBinding>
<binding name="Binding1"
maxBufferSize="65536"
maxConnections="10">
<security mode = "None">
</security>
</binding >
</netNamedPipeBinding>
</bindings>
</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 Windows Process Activation Service (WAS) för att stödja named pipe-aktivering.
Som en bekvämlighet implementeras följande två steg i en batchfil med namnet AddNetPipeSiteBinding.cmd som finns i exempelkatalogen.
För att stödja net.pipe-aktivering måste standardwebbplatsen först vara bunden till net.pipe-protokollet. Detta kan göras med hjälp av appcmd.exe, som installeras med IIS 7.0-hanteringsverktygen. Kör följande kommando från en kommandotolk med administratörsrättigheter.
%windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.pipe',bindingInformation='*']Anmärkning
Det här kommandot är en enda textrad.
Det här kommandot lägger till en net.pipe-platsbindning till standardwebbplatsen.
Även om alla program på en plats delar en gemensam net.pipe-bindning kan varje program aktivera net.pipe-stöd individuellt. Om du vill aktivera net.pipe för programmet /servicemodelsamples kör du följande kommando från en kommandotolk med administratörsbehörighet.
%windir%\system32\inetsrv\appcmd.exe set app "Default Web Site/servicemodelsamples" /enabledProtocols:http,net.pipeAnmä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.
Ta bort net.pipe-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 RemoveNetPipeSiteBinding.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 upphöjd kommandotolk.
%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-webbplatsbindningen genom att köra följande kommando från en kommandotolk med administratörsbehörighet.
%windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" --bindings.[protocol='net.pipe',bindingInformation='*']Anmärkning
Det här kommandot måste skrivas in som en enda textrad.