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.
ChannelFactory-exemplet visar hur ett klientprogram kan skapa en kanal med ChannelFactory klassen i stället för en genererad klient. Det här exemplet baseras på komma igång som implementerar en kalkylatortjänst.
Anmärkning
Installationsproceduren och bygginstruktionerna för det här exemplet finns i slutet av det här avsnittet.
Det här exemplet använder ChannelFactory<TChannel> klassen för att skapa en kanal till en tjänstslutpunkt. För att skapa en kanal till en tjänstslutpunkt genererar du vanligtvis en klienttyp med Verktyget för ServiceModel-metadata (Svcutil.exe) och skapar en instans av den genererade typen. Du kan också skapa en kanal med hjälp ChannelFactory<TChannel> av klassen, vilket visas i det här exemplet. Tjänsten som skapas med följande exempelkod är identisk med tjänsten i Komma igång.
EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");
WSHttpBinding binding = new WSHttpBinding();
ChannelFactory<ICalculator> factory = new
ChannelFactory<ICalculator>(binding, address);
ICalculator channel = factory.CreateChannel();
Viktigt!
Om du kör det här exemplet i ett scenario mellan datorer måste du ersätta "localhost" i föregående kod med det fullständigt kvalificerade namnet på den dator som kör tjänsten. Det här exemplet använder inte konfigurationen för att ange slutpunktsadressen, så detta måste göras i kod.
När kanalen har skapats kan tjänståtgärder anropas precis som med en genererad klient.
// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
double result = channel.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);
Om du vill stänga kanalen måste den först omvandlas till ett IClientChannel gränssnitt. Det beror på att kanalen som genereras deklareras i klientprogrammet med hjälp av ICalculator gränssnittet, som har metoder som Add och Subtract men inte Close. Metoden Close kommer från ICommunicationObject gränssnittet.
// Close the channel.
((IClientChannel)client).Close();
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 klientprogrammet.
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 du har utfört One-Time installationsproceduren för Windows Communication Foundation-exempel.
Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel. Observera att det här exemplet inte aktiverar metadatapublicering. Du måste först aktivera metadatapublicering för det här exemplet för att återskapa klienttypen.
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.
Så här kör du testexemplet på flera datorer
Ersätt "localhost" i följande kod med det fullständigt kvalificerade namnet på den dator som kör tjänsten.
EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");