Megosztás:


MTOM-kódolás

Az MTOM-minta az üzenetátviteli optimalizálási mechanizmus (MTOM) üzenetkódolásának használatát mutatja be egy WSHttpBinding használatával. Az MTOM egy olyan mechanizmus, amellyel nagy bináris mellékleteket továbbíthat a SOAP-üzenetekkel nyers bájtként, ami kisebb üzeneteket tesz lehetővé.

Alapértelmezés szerint a WSHttpBinding normál szöveges XML-fájlként küld és fogadott üzeneteket. Az MTOM-üzenetek küldésének és fogadásának engedélyezéséhez állítsa be az messageEncoding attribútumot a kötés konfigurációjára (az alábbi példakódban leírtak szerint), vagy közvetlenül a kötésre a MessageEncoding tulajdonság használatával. A szolgáltatás vagy ügyfél mostantól MTOM-üzeneteket küldhet és fogadhat.

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

Az MTOM-kódoló képes bájtok és streamek tömbjeinek optimalizálására. Ebben a mintában a művelet egy paramétert Stream használ, ezért optimalizálható.

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

A mintához választott szerződés bináris adatokat továbbít a szolgáltatásnak, és megkapja a visszatérési értékként feltöltött bájtok számát. Amikor a szolgáltatás telepítve van, és az ügyfél fut, az 1000-es számot nyomtatja ki, ami azt jelzi, hogy mind a 1000 bájt érkezett. A fennmaradó kimenet különböző payloadokhoz optimalizált és nem optimalizált üzenetméreteket tartalmaz.

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.

Az MTOM használatának célja a nagy bináris hasznos adatok átvitelének optimalizálása. A SOAP-üzenetek MTOM használatával történő elküldése jelentős többletterhelést jelent a kis bináris hasznos adatok esetében, de nagy megtakarítást jelent, ha több mint néhány ezer bájtot tesznek ki. Ennek az az oka, hogy a normál szöveges XML a Base64 használatával kódolja a bináris adatokat, amely három bájtonként négy karaktert igényel, és egyharmadával növeli az adatok méretét. Az MTOM képes bináris adatokat nyers bájtként továbbítani, így a kódolási/dekódolási időt megtakarítva kisebb üzeneteket eredményez. A néhány ezer bájtos küszöbérték a mai üzleti dokumentumokhoz és digitális fényképekhez képest kicsi.

A példa beállítása, elkészítése és futtatása

  1. Telepítse a ASP.NET 4.0-t az alábbi paranccsal.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták One-Time beállítási eljárását.

  3. A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse Windows Communication Foundation-mintákcímű témakör utasításait.

  4. Ha a mintát egy vagy több gép közötti konfigurációban szeretné futtatni, kövesse A Windows Communication Foundation-minták futtatásacímű témakör utasításait.