سؤال

MTOM هي آلية تحسين نقل الرسائل W3C، وهي طريقة لإرسال البيانات الثنائية بكفاءة من وإلى خدمات الويب.

كيف يعمل بشكل عام؟

هل كانت مفيدة؟

المحلول

إذا كنت وضعت يريشارك (أو تمكين <لأ href = "http://blogs.msdn.com /dgorti/archive/2005/09/18/471003.aspx "يختلط =" noreferrer "> System.Net تسجيل ) على خدمة غير MTOM تمكين، يجب أن تشاهد طلبات SOAP مع البيانات الثنائية المشفرة كما base64 في. إرسالها كما base64 في زيادة حجم البيانات الثنائية ولكن (وأفترض) يجعله أكثر قابلة للتشغيل المتبادل.

ومع MTOM، يتم إرسال الرسائل SOAP كرسائل MIME مع ترميز Base64 يتم استبداله مع نائب. ثم يتم وضع البيانات الثنائية بين المحددات (الذي يحدث في كل قطعة من البيانات الثنائية)، ثم وضعت في نهاية طلب SOAP. يتم إرسال البيانات الثنائية ثم غير مشفر. IIRC، ويحدد MTOM أيضا ما إذا كان إرساله كرسالة MIME سيزيد من حجم الدعوة SOAP وإذا لم توفر الادخار، فإنه سيتم إرساله كرسالة SOAP العادية.

هذا مثالا على ما الرسالة المرسلة عبر السلك يبدو.

نصائح أخرى

كل شيء يبدأ بحقيقة أن الصابون هو XML.وعندما ترسل أي شيء آخر غير النص، على سبيل المثال، صورة - فيجب تحويلها إلى نوع بيانات يمكن لمعالج XML فهمه.

بدون MTOM، سيتم تحويل صورتك إلى base64Binary ووضعها في منتصف مظروف الصابون الخاص بك.عملية التحويل هذه تجعل البيانات سمينة.

<tns:data>سلسلة Base64Binary رائعة جدًا</tns:data>

إليك مثال بسيط:

enter image description here

مع MTOM، سيتم نقل الصورة الخارج المغلف كما مرفق MIME - باختصار، يتم إرساله وفقًا لنوع البيانات الأصلي الخاص به:jpg أو png أو gif.بالطبع لا يزال يتم إرسالها كبيانات ثنائية، ولكن هذه المرة، لا يوجد تحويل مرتبط بـ XML، مما يؤدي إلى تجنب العبء الحسابي.يأتي XOP إلى الصورة لأنه هو الذي يحدد موقع الصورة الخارجية.

<soap:Envelope>
    <soap:Body>
        <tns:data>
            <xop:include href="SomeUniqueID-ThatLeadsToTheImage"/>
        </tns:data>
    </soap:Body>
</soap:Envelope>

معرف المحتوى:"SomeUniqueID"
نوع المحتوى:صورة / بابوا نيو غينيا

صورة البيانات الثنائية هنا

هناك بعض العوامل التي لم تذكرها الإجابات الأخرى.قد يتساءل المرء لماذا لا يتم استخدام MTOM كإعداد افتراضي لأنه كذلك "أسرع" من ترميز الرسائل النصية (Base64).ذلك لأن MTOM ليس أسرع دائمًا.يجب استخدام MTOM فقط في عمليات نقل الرسائل الكبيرة لأنها تأتي مصحوبة بحمل إضافي.بالنسبة لحجم الرسائل الصغير، سيكون أداء MTOM أسوأ من تشفير الرسائل النصية (Base64).

إذا تم استخدام MTOM للرسائل الكبيرة، فهو أسرع من Base64 لأنه يستخدم ثنائي خام لنقل البيانات.لفهم ذلك، ينبغي للمرء أن يفهم كيف يعمل Base64.

استخدامات Base64 6 بت (log2(64)) لتمثيل 1 حرف مما يعني أن استخدامات base64 4 أحرف لتمثيل 24 بت (3 بايت).لذلك إذا كان حجم الرسالة هو ن بايت, ، سوف يستخدم base64 4*(ن/3) بايت لتمثيل بياناتك مما يعني أنه سيكون كذلك أبطأ بنسبة 1/3 من MTOM.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top