.net远程处理的MTOM / XOP实现

时间:2009-09-09 13:35:46

标签: c# soap remoting mtom .net-remoting

我的客户要求我通过HTTP / SOAP实现用于.NET Remoting的MTOM / XOP以进行远程流访问(例如,文件上传)。 WCF Web服务不是一个选项。

所以,我要做的就是修改我们的自定义SoapClientFormatterSink和SoapServerFormatterSink来完成这项工作,即SerializeMessage方法,该方法采用IMessage,如果其中一个消息参数'Stream类型的值,XOP信息集的节点插入到流中,等等。

public class CompatibleSoapClientFormatterSink : IClientFormatterSink
{

  ...

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

   ...

  }

问题是我不明白如何将二进制流放入SOAP请求并实现这种方法。

有人可以指导我如何实施它吗?

非常感谢任何MTOM / XOP实现的代码示例。

4 个答案:

答案 0 :(得分:1)

对不起,伙计们!你的回答很有帮助。

所以我提出了我已经实施的解决方案的简单概念。

我使用System.Xml命名空间中的XmlMtomReader和XmlMtomWriter类来格式化SOAP消息,然后将它们传递给formatter接收器。我没有触及WCF Web服务层。

答案 1 :(得分:0)

我相信WCF(Metro)的Java Equivalent支持XOP / MTOM,它是开源的。您可以获取该代码并将其移植到.NET Remoting。

答案 2 :(得分:0)

以下是使用.net远程处理实现文件传输的人:

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

源代码可从页面上的链接获得

答案 3 :(得分:0)

你可以尝试:

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

如果你有一个java服务器端,你可以看一下:

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

页面底部有一些代码供下载。

平台之间存在MTOM的一些互操作性问题:许多堆栈不支持.NET用于打开MTOM的ws-policy机制。在我看来,这对互操作性来说是非常不利的。这里我们最终在app.config的绑定部分打开了MTOM messageEncoding。