Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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
Telepítse a ASP.NET 4.0-t az alábbi paranccsal.
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enableGyő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.
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.
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.