1

我的客户要求我通过 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

4 回答 4

1

Sorry, guys! Nether of your answers work for me.

So I propose my simple idea of the solution which I already had implemented.

I used XmlMtomReader and XmlMtomWriter classes from System.Xml namespace to format SOAP messages and then pass them forward to the formatter sink. WCF web services layer wasn't touched as I wanted.

于 2009-11-02T10:25:16.870 回答
0

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

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

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

于 2009-09-09T14:16:57.753 回答
0

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

于 2009-09-09T13:49:10.800 回答
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 消息编码。

于 2009-10-30T18:38:58.980 回答