2009-09-09 17 views
0

Мой клиент попросил меня реализовать MTOM/XOP для .NET. Удаленный доступ через HTTP/SOAP для удаленного доступа к потоку (например, загрузка файлов). Веб-службы WCF не являются вариантом.Реализация MTOM/XOP для удаленных сетей .net

Итак, мне нужно изменить наш пользовательский SoapClientFormatterSink и SoapServerFormatterSink, чтобы выполнить задание, то есть метод SerializeMessage, который принимает сообщение IMessage, и если один из параметров сообщения типа Stream, узел XOP infoset вставлен в поток и так далее.

public class CompatibleSoapClientFormatterSink : IClientFormatterSink 
{ 

    ... 

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

    ... 

    } 

Проблема заключается в том, я не понимаю, как поместить двоичный поток в запрос SOAP и реализации этого подхода в целом.

Может кто-нибудь дать мне направление, как я могу его реализовать?

Любой образец кода реализации MTOM/XOP был бы высоко оценен.

ответ

1

Извините, ребята! Пустота ваших ответов работает для меня.

Поэтому я предлагаю свою простую идею о решении, которое я уже реализовал.

Я использовал классы XmlMtomReader и XmlMtomWriter из пространства имен System.Xml для форматирования сообщений SOAP, а затем передал их в приемник форматирования. Уровень веб-служб WCF не был затронут, как я хотел.

0

Я считаю, что эквивалент Java WCF (Metro) поддерживает XOP/MTOM и является открытым исходным кодом. Вы можете взять этот код и перенести его на .NET Remoting.

+0

Я подумаю об этом варианте. Спасибо. – sh0gged

0

Вот кто-то осуществил передачу файлов с .NET Remoting:

http://www.codeproject.com/KB/dotnet/Net%5FRemoting%5FEvents.aspx

Исходный код доступен по ссылке на странице

+0

Отличная статья. Спасибо за ссылку. Хотя я использую http-канал, а не tcp-канал. Это означает, что мне приходится иметь дело с некоторыми расширениями мыла. – sh0gged

0

Вы можете попробовать:

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

Если у вас есть серверная сторона java, вы можете посмотреть:

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

есть некоторый код в нижней части страницы для загрузки.

Есть некоторые проблемы совместимости с MTOM между платформами: многие стеки не поддерживают механизм ws-политики, который использует .NET для включения MTOM. На мой взгляд, это совершенно нежелательно для взаимодействия. Здесь мы закончили работу с MTM messageEncoding в разделе привязки app.config.