Bagikan melalui


Pengodean MTOM

Sampel MTOM menunjukkan penggunaan pengodean pesan Message Transmission Optimization Mechanism (MTOM) dengan WSHttpBinding. MTOM adalah mekanisme untuk mengirimkan lampiran biner besar dengan pesan SOAP sebagai byte mentah, memungkinkan pesan yang lebih kecil.

Secara default, WSHttpBinding mengirim dan menerima pesan sebagai XML teks normal. Untuk mengaktifkan pengiriman dan penerimaan pesan MTOM, atur atribut messageEncoding pada konfigurasi pengikatan (seperti dalam contoh kode berikut), atau langsung pada pengikatan menggunakan properti MessageEncoding. Layanan atau klien sekarang dapat mengirim dan menerima pesan MTOM.

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

Pengenkode MTOM dapat mengoptimalkan array byte dan aliran. Dalam sampel ini, operasi menggunakan parameter Stream dan karenanya dapat dioptimalkan.

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

Kontrak yang dipilih untuk sampel ini mengirimkan data biner ke layanan dan menerima jumlah byte yang diunggah sebagai nilai pengembalian. Saat layanan diinstal dan klien dijalankan, aktivitas ini mencetak angka 1000, yang menunjukkan bahwa semua 1000 byte diterima. Sisa output mencantumkan ukuran pesan yang dioptimalkan dan tidak dioptimalkan untuk berbagai payload.

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.

Tujuan untuk menggunakan MTOM adalah untuk mengoptimalkan transmisi payload biner besar. Mengirim pesan SOAP menggunakan MTOM memiliki overhead yang nyata untuk payload biner kecil, tetapi menjadi penghematan yang besar saat bertambah lebih dari beberapa ribu byte. Alasan untuk ini adalah bahwa XML teks normal mengodekan data biner menggunakan Base64, yang memerlukan empat karakter untuk setiap tiga byte, dan meningkatkan ukuran data sepertiga. MTOM dapat mengirimkan data biner sebagai byte mentah, menghemat waktu pengodean/pendekodean dan menghasilkan pesan yang lebih kecil. Ambang beberapa ribu byte berukuran kecil jika dibandingkan dengan dokumen bisnis dan foto digital saat ini.

Untuk menyiapkan, membangun, dan menjalankan sampel

  1. Pasang ASP.NET 4.0 menggunakan perintah berikut.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Pastikan Anda telah melakukan Prosedur Penyiapan Satu Kali untuk Sampel Windows Communication Foundation.

  3. Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti petunjuknya di Membangun Sampel WCF.

  4. Untuk menjalankan sampel dalam konfigurasi satu atau lintas komputer, ikuti instruksi pada Menjalankan Sampel WCF.