我的客户要求我通过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实现的代码示例。
答案 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。