Kullanım ve Stil Özelliklerini Ayarlama

UseAndStyle örneği, XmlSerializerFormatAttribute ve DataContractFormatAttribute üzerindeki Use ve Style özelliklerinin nasıl kullanılacağını gösterir. Bu özellikler iletilerin nasıl biçimlendirildiğini etkiler. Varsayılan olarak, ileti gövdesi Document stiliyle biçimlendirilir. Bu ayarlar hizmet sözleşmesi düzeyinde veya işlem sözleşmesi düzeyinde belirtilebilir.

Uyarı

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

Style style özelliği, hizmet için WSDL meta verilerinin nasıl biçimlendirileceğini belirler. Olası değerler Document ve Rpc şeklindedir. RPC, bir işlem için değiştirilen iletilerin WSDL gösteriminin, uzak yordam çağrısıymış gibi parametreler içerdiği anlamına gelir. Aşağıda bir örnek verilmiştir.

<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
  <wsdl:part name="n1" type="xsd:double"/>
  <wsdl:part name="n2" type="xsd:double"/>
</wsdl:message>

Stili olarak Document ayarlamak, WSDL gösteriminin aşağıdaki örnekte gösterildiği gibi bir işlem için değiştirilen belgeyi temsil eden tek bir öğe içerdiği anlamına gelir.

<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
  <wsdl:part name="parameters" element="tns:Add"/>
</wsdl:message>

özelliği iletinin Use biçimini belirler. Olası değerler Literal ve Encoded şeklindedir; varsayılan değer Literal'dir. Literal, iletinin aşağıdaki Belge/Literal örneğinde gösterildiği gibi WSDL'deki şemanın birebir bir örneği olduğu anlamına gelir.

<Add xmlns="http://Microsoft.ServiceModel.Samples">
  <n1>100</n1>
  <n2>15.99</n2>
</Add>

Kodlanmış, WSDL'deki şemaların SOAP 1.1 bölüm 5'te bulunan kurallara göre kodlanmış soyut belirtimler olduğu anlamına gelir. Aşağıda RPC/Kodlanmış bir örnek verilmiştir.

<q1:Add xmlns:q1="http://Microsoft.ServiceModel.Samples">
  <n1 xsi:type="xsd:double" xmlns="">100</n1>
  <n2 xsi:type="xsd:double" xmlns="">15.99</n2>
</q1:Add>

WS-I Temel Profili 1.0 Encoded kullanımını yasaklar ve bunu yalnızca eski hizmetler tarafından gerekli kılındığında kullanmalısınız. İleti Encoded biçimi yalnızca XmlSerializer kullanılırken kullanılabilir.

Gönderilen ve alınan iletileri görmenize olanak sağlamak için, bu örnek İzleme ve İleti Günlüğü'ne dayanır. Hizmet yapılandırması ve kaynak kodu, izleme ve ileti günlüğünü etkinleştirmek ve kullanmak için değiştirilmiştir. Ayrıca, WSHttpBinding güvenlik olmadan yapılandırıldığından, günlüğe kaydedilen iletiler şifrelenmemiş biçimde görüntülenebilir. Sonuçta elde edilen izleme günlükleri (System.ServiceModel.e2e ve Message.log) Hizmet İzleme Görüntüleyicisi Aracı (SvcTraceViewer.exe) kullanılarak görüntülenmelidir. İzlemeler C:\LOGS klasöründe oluşturulacak şekilde yapılandırılır. Örneği çalıştırmadan önce klasörü oluşturun. İzleme Görüntüleyicisi aracında ileti içeriğini görüntülemek için, aracın hem sol hem de sağ bölmelerinde İletiler'i seçin.

Aşağıdaki kod, Use özelliği OperationFormatUse olarak ayarlanmış hizmet sözleşmesini ve ileti gövdesinin biçiminin varsayılan OperationFormatStyle'den Document'e değiştirildiğini gösterir.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples"),
XmlSerializerFormat(Style = OperationFormatStyle.Rpc,
                                 Use = OperationFormatUse.Encoded)]
public interface IUseAndStyleCalculator
{
    [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);
}

Farklı Use ve Style ayarlar arasındaki farkı görmek için bunları hizmette değiştirin, istemciyi yeniden oluşturun, örneği çalıştırın ve Hizmet İzleme Görüntüleyicisi aracıyla c:\logs\message.logs dosyasını inceleyin. Ayrıca http://localhost/ServiceModelSamples/service.svc?wsdl öğesini görüntüleyerek meta veriler üzerindeki etkisini gözlemleyin. Hizmetlere yönelik meta veriler genellikle birden çok sayfaya ayrılır. Ana wsdl sayfası WSDL bağlamalarını içerir, ancak ileti tanımlarını gözlemlemek için http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0 kısmını görüntüleyin.

Ö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. İletileri günlüğe kaydetmek için bir C:\LOGS dizini oluşturun. Kullanıcıya bu dizin için Ağ Hizmeti yazma izinleri verin.

  3. Çö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.

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