Aracılığıyla paylaş


MTOM Kodlama

MTOM örneği, WSHttpBinding ile İleti İletim İyileştirme Mekanizması (MTOM) ileti kodlamasının kullanımını gösterir. MTOM, BÜYÜK ikili ekleri SOAP iletileriyle ham bayt olarak ileterek daha küçük iletilere olanak sağlayan bir mekanizmadır.

Varsayılan olarak, WSHttpBinding iletileri normal metin XML'i olarak gönderir ve alır. MTOM iletilerinin gönderilmesini ve alınmasını etkinleştirmek için özniteliğini bağlamanın messageEncoding yapılandırmasında (aşağıdaki örnek kodda olduğu gibi) veya özelliğini kullanarak doğrudan bağlamada MessageEncoding ayarlayın. Hizmet veya istemci artık MTOM iletileri gönderebilir ve alabilir.

<wsHttpBinding>
  <binding name="WSHttpBinding_IUpload" messageEncoding="Mtom" />
</wsHttpBinding>

MTOM kodlayıcı bayt ve akış dizilerini iyileştirebilir. Bu örnekte işlem bir Stream parametre kullanır ve bu nedenle iyileştirilebilir.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
  public interface IUpload
  {
      [OperationContract]
      int Upload(Stream data);
  }

Bu örnek için seçilen sözleşme, ikili verileri hizmete iletir ve döndürülen değer olarak karşıya yüklenen bayt sayısını alır. Hizmet yüklendiğinde ve istemci çalıştırıldığında, tüm 1000 baytların alındığını gösteren 1000 sayısını yazdırır. Çıktının geri kalanında, çeşitli yükler için iyileştirilmiş ve iyileştirilmemiş ileti boyutları listelenir.

Output:
1000

Text encoding with a 100 byte payload: 433
MTOM encoding with a 100 byte payload: 912

Text encoding with a 1000 byte payload: 1633
MTOM encoding with a 1000 byte payload: 2080

Text encoding with a 10000 byte payload: 13633
MTOM encoding with a 10000 byte payload: 11080

Text encoding with a 100000 byte payload: 133633
MTOM encoding with a 100000 byte payload: 101080

Text encoding with a 1000000 byte payload: 1333633
MTOM encoding with a 1000000 byte payload: 1001080

Press <ENTER> to terminate client.

MTOM kullanmanın amacı, büyük ikili yüklerin iletimini iyileştirmektir. MTOM kullanarak SOAP iletisi göndermenin küçük ikili yükleri için belirgin bir yükü vardır, ancak birkaç bin bayttan fazla büyüdüklerinde büyük tasarruf sağlar. Bunun nedeni, normal metin XML'sinin her üç bayt için dört karakter gerektiren Base64 kullanarak ikili verileri kodlaması ve verilerin boyutunu üçte bir artırmasıdır. MTOM, ikili verileri ham bayt olarak iletebilir ve kodlama/kod çözme süresinden tasarruf eder ve sonuçta daha küçük iletiler olur. Günümüzün iş belgelerine ve dijital fotoğraflara kıyasla birkaç bin baytlık eşik küçüktür.

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Aşağıdaki komutu kullanarak ASP.NET 4.0'ı yükleyin.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Windows Communication Foundation Örnekleri için Tek Seferlik Kurulum Yordamı'nı gerçekleştirdiğinizden emin olun.

  3. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örnekleri Oluşturma başlığındaki yönergeleri izleyin.

  4. Örneği tek veya makineler arası bir yapılandırmada çalıştırmak için Windows Communication Foundation Örneklerini Çalıştırma başlığındaki yönergeleri izleyin.