سؤال

طلب مني عميلي تنفيذ MTOM/XOP لـ .NET Remoting عبر HTTP/SOAP للوصول إلى الدفق عن بُعد (على سبيل المثال ، تحميل الملف). خدمات الويب WCF في ليس خيارًا.

لذلك ، ما يجب علي فعله هو تعديل SoapClientFormattersink و soapserverformattersink للقيام بهذه المهمة ، أي طريقة serializemessage ، والتي تأخذ imessage ، وإذا كانت إحدى قيمة معلمة الرسائل لدفق النوع ، يتم إدخال عقدة Xop infoset في الدفق وما إلى ذلك.

public class CompatibleSoapClientFormatterSink : IClientFormatterSink
{

  ...

  private void SerializeMessage(IMessage message, out ITransportHeaders headers, out     Stream   stream)
  {

   ...

  }

المشكلة هي أنني لا أفهم كيفية وضع الدفق الثنائي في طلب الصابون وتنفيذ هذا النهج بشكل عام.

هل يمكن لأي شخص أن يعطيني توجيهًا إلى كيف يمكنني تنفيذها من فضلك؟

أي عينة رمز لتنفيذ MTOM/XOP سيكون موضع تقدير كبير.

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

المحلول

آسف شباب! Nether من إجاباتك تعمل بالنسبة لي.

لذلك أقترح فكرتي البسيطة عن الحل الذي قمت بتطبيقه بالفعل.

لقد استخدمت فئات XMLMTOMReader و XMLMTOMWRITER من مساحة الاسم system.xml لتنسيق رسائل الصابون ثم تمريرها إلى الأمام إلى الحوض التنسيقي. لم يتم لمس طبقة خدمات الويب WCF كما أردت.

نصائح أخرى

أعتقد أن مكافئ Java لـ WCF (Metro) يدعم XOP/MTOM ، وهو مفتوح المصدر. يمكنك أخذ هذا الرمز ومنفذها إلى .NET Remoting.

إليك شخص قام بتطبيق نقل الملفات باستخدام .NET Remoting:

http://www.codeproject.com/kb/dotnet/net٪5fremoting٪5fevents.aspx

رمز المصدر متاح من رابط على الصفحة

بامكانك ان تحاول:

http://dotnetslackers.com/articles/aspnet/gettingstartedCreatingWseEnableDWebservice.aspx

إذا كان لديك جانب خادم Java ، فيمكنك النظر إلى:

https://jax-ws.dev.java.net/guide/binary_attachments__mtom_.html

هناك بعض التعليمات البرمجية في أسفل الصفحة للتنزيل.

هناك بعض مشكلات التشغيل المتداخل مع MTOM بين المنصات: لا تدعم العديد من المداخن آلية السياسة WS التي تستخدمها .NET لتشغيل MTOM. في رأيي هذا غير مرغوب فيه تمامًا للتشغيل البيني. هنا انتهى بنا الأمر إلى تشغيل MTOM MessageenCoding في قسم الربط من App.Config.

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