Aracılığıyla paylaş


Gövdeye Göre Rota

RouteByBody örneği, herhangi bir SOAP eylemiyle ileti nesnelerini kabul eden bir hizmetin nasıl uygulandığını gösterir. Bu örnek, hesap makinesi hizmeti uygulayan Getting Started'a dayanmaktadır. Hizmet, bir istek parametresi kabul eden ve bir yanıt döndüren Calculate işlevini içeren tek bir MessageMessage işlem uygular.

Bu örnekte, istemci bir konsol uygulamasıdır (.exe) ve hizmet IIS'de barındırılır.

Uyarı

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.

Örnek, gövde içeriğine göre ileti gönderimini gösterir. Yerleşik Windows Communication Foundation (WCF) hizmet modeli ileti gönderme mekanizması, ileti Eylemleri'ni temel alır. Ancak, action="" ile tüm işlemlerini tanımlayan birçok web hizmeti vardır. Eylem bilgilerine göre istek iletilerini göndermeye devam eden WSDL tabanlı bir hizmet oluşturmak mümkün değildir. Bu örnek, WSDL'yi temel alan bir hizmet sözleşmesi gösterir (WSDL, örneğe dahil edilen Service.wsdl dosyasında bulunur). Hizmet sözleşmesi, Başlarken'de kullanılana benzer şekilde Hesap makinesidir. Ancak [OperationContract], tüm işlemler için Action="" öğesini belirtir.

[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples"),
                 XmlSerializerFormat, DispatchByBodyBehavior]
    public interface ICalculator
    {
        [OperationContract(Action="")]
        double Add(double n1, double n2);
        [OperationContract(Action = "")]
        double Subtract(double n1, double n2);
        [OperationContract(Action = "")]
        double Multiply(double n1, double n2);
        [OperationContract(Action = "")]
        double Divide(double n1, double n2);
    }

Bir sözleşme göz önüne alındığında, bir hizmet, iletilerin işlemler arasında dağıtılması için özel dağıtım davranışı DispatchByBodyBehavior gerektirir. Bu gönderme davranışı, özel işlem seçicisini DispatchByBodyElementOperationSelector ilgili sarmalayıcı öğelerinin QName tarafından anahtarlanan işlem adlarının bir tablosuyla başlatır. DispatchByBodyElementOperationSelector, Body'nin ilk alt öğesinin başlangıç etiketine bakar ve daha önce bahsedilen tabloyu kullanarak işlemi seçer.

İstemci, ServiceModel Meta Veri Yardımcı Programı Aracı (Svcutil.exe) kullanılarak hizmet tarafından dışarı aktarılan WSDL'den otomatik olarak oluşturulan bir ara sunucu kullanır.

svcutil.exe  /n:http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples /uxs http://localhost/servicemodelsamples/service.svc?wsdl /out:generatedProxy.cs

Tüm işlemlerin eylemlerinin boş olması, otomatik oluşturulmuş proxydeki eylem parametreleri dışında istemci kodunu etkilemez.

İstemci kodu birkaç hesaplama yapar. Örneği çalıştırdığınızda, işlem istekleri ve yanıtları istemci konsolu penceresinde görüntülenir. İstemciyi 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

  1. Windows Communication Foundation Örnekleri içinOne-Time Kurulum Yordamını yaptığınızdan emin olun.

  2. Çözümü oluşturmak için Windows Communication Foundation Örnekleri Oluşturma başlığındaki yönergeleri izleyin.

  3. Ö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.