Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
ChannelFactory örneği, istemci uygulamasının oluşturulan istemci yerine sınıfıyla ChannelFactory nasıl kanal oluşturabileceğini gösterir. Bu örnek, hesap makinesi hizmeti uygulayan Getting Started'a dayanmaktadır.
Uyarı
Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.
Bu örnek, hizmet uç noktasına kanal oluşturmak için sınıfını kullanır ChannelFactory<TChannel> . Genellikle bir hizmet uç noktasına kanal oluşturmak için ServiceModel Meta Veri Yardımcı Programı Aracı (Svcutil.exe) ile bir istemci türü oluşturur ve oluşturulan türün bir örneğini oluşturursunuz. Bu örnekte gösterildiği gibi sınıfını ChannelFactory<TChannel> kullanarak da bir kanal oluşturabilirsiniz. Aşağıdaki örnek kod tarafından oluşturulan hizmet, Başlarken'deki hizmetle aynıdır.
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();
Önemli
Bu örneği makineler arası bir senaryoda çalıştırıyorsanız, önceki koddaki "localhost" yerine hizmeti çalıştıran makinenin tam adını kullanmanız gerekir. Bu örnek, uç nokta adresini ayarlamak için yapılandırma kullanmaz, bu nedenle bunun kodda yapılması gerekir.
Kanal oluşturulduktan sonra, hizmet işlemleri aynı oluşturulan istemcide olduğu gibi çağrılabilir.
// 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);
Kanalı kapatmak için önce IClientChannel arayüzüne dönüştürülmesi gerekir. Bunun nedeni, oluşturulduğu şekliyle ICalculator arabirimi kullanılarak istemci uygulamasında bildirilen kanalın, Add ve Subtract gibi yöntemlere sahip olup, Close yöntemine sahip olmamasıdır.
Close yöntemi ICommunicationObject arabirimi üzerinde kaynaklanır.
// Close the channel.
((IClientChannel)client).Close();
Örneği çalıştırdığınızda, işlem istekleri ve yanıtları istemci konsolu penceresinde görüntülenir. İstemci uygulamasını kapatmak için istemci penceresinde ENTER tuşuna basın.
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.
Örneği ayarlamak, derlemek ve çalıştırmak için
Windows Communication Foundation Örnekleri içinOne-Time Kurulum Yordamını yaptığınızdan emin olun.
Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örneklerioluşturma başlığındaki yönergeleri izleyin. Bu örneğin meta veri yayımlamayı etkinleştirmediğini unutmayın. İstemci türünü yeniden oluşturmak için önce bu örnek için meta veri yayımlamayı etkinleştirmeniz gerekir.
Örneği tek bir makine veya makineler arası bir yapılandırmada çalıştırmak için, Windows Communication Foundation örneklerini çalıştırmayönergelerini izleyin.
Örnek çapraz makineyi çalıştırmak için
Aşağıdaki koddaki "localhost" değerini hizmeti çalıştıran makinenin tam adıyla değiştirin.
EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");