Vytvoření postupu kanálu
Ukázka ChannelFactory ukazuje, jak může klientská aplikace vytvořit kanál s ChannelFactory třídou místo vygenerovaného klienta. Tato ukázka vychází ze služby Začínáme , která implementuje službu kalkulačky.
Poznámka:
Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.
Tato ukázka používá ChannelFactory<TChannel> třídu k vytvoření kanálu do koncového bodu služby. Pokud chcete vytvořit kanál do koncového bodu služby, vygenerujete typ klienta pomocí nástroje ServiceModel Metadata Utility (Svcutil.exe) a vytvoříte instanci vygenerovaného typu. Kanál můžete vytvořit také pomocí ChannelFactory<TChannel> třídy, jak je znázorněno v této ukázce. Služba vytvořená následujícím ukázkovým kódem je shodná se službou v části Začínáme.
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();
Důležité
Pokud tuto ukázku spouštíte ve scénáři mezi počítači, musíte v předchozím kódu nahradit "localhost" plně kvalifikovaným názvem počítače, na kterém běží služba. Tato ukázka nepoužívá konfiguraci k nastavení adresy koncového bodu, takže to musí být provedeno v kódu.
Po vytvoření kanálu je možné vyvolat operace služby stejně jako u vygenerovaného klienta.
// 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);
Chcete-li kanál zavřít, musí být nejprve přetypován do IClientChannel rozhraní. Je to proto, že kanál, který je generován, je deklarován v klientské aplikaci pomocí ICalculator
rozhraní, který má metody jako Add
, ale Subtract
ne Close
. Metoda Close
pochází z ICommunicationObject rozhraní.
// Close the channel.
((IClientChannel)client).Close();
Při spuštění ukázky se požadavky na operace a odpovědi zobrazí v okně konzoly klienta. Stisknutím klávesy ENTER v okně klienta ukončete klientskou aplikaci.
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.
Nastavení, sestavení a spuštění ukázky
Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.
Pokud chcete sestavit edici C# nebo Visual Basic .NET řešení, postupujte podle pokynů v části Sestavení ukázek windows Communication Foundation. Všimněte si, že tato ukázka nepovoluje publikování metadat. Abyste mohli znovu vygenerovat typ klienta, musíte nejprve povolit publikování metadat pro tuto ukázku.
Pokud chcete spustit ukázku v konfiguraci s jedním nebo více počítači, postupujte podle pokynů v části Spuštění ukázek windows Communication Foundation.
Spuštění ukázkového křížového počítače
Nahraďte "localhost" v následujícím kódu plně kvalifikovaným názvem počítače, na kterém běží služba.
EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");