我有一个独特的问题,我希望能够处理包含任意二进制数据的传入HTTP POST请求。

我目前可以使用标准的ASP.NET页面处理程序或ASP Web服务处理这些数据,但我想知道它是否可以处理WCF服务中的INCOMING二进制数据?我可以深入了解WCF处理堆栈以绕过SOAP处理并在我自己的代码中处理原始消息吗?

据我所知,这打破了WCF的“合约”发布(WSDL无论如何),但我并不关心。

-Jeff

有帮助吗?

解决方案 4

在这个问题上花了几个星期后,我有一个明确的答案:

您可以使用WCF的自定义二进制序列化替换XML / SOAP吗?

答案简短:没有

答案很长:是的,但你必须重写几乎所有的传输层接口,所以你也可以创建一个自定义的IHttpHandler并避免一起使用WCF。

Microsoft试图遵循SOAP标准(并且我认为该标准对此问题负责)打破了一个简单的编程规则 - >分层次的责任分工。 WCF / SOAP似乎是一个优雅的分层协议和传输,但实际情况是,层之间存在复杂的连接。这意味着WCF是一种极其复杂的通信协议,可提供传输,安全性,可靠性,发布,序列化以及在某种程度上相互依赖的其他功能。如果你想要的只是一个传输通道,WCF / SOAP会增加很多复杂性。

我确信我可以开始大量关于SOAP yes / no的咆哮,但我终于意识到WCF / SOAP并不是我应用程序所需要的。

-Jeff

其他提示

考虑使用MTOM。 MTOM是一种使用SOAP消息作为原始字节传输大型二进制附件的机制,允许较小的消息。详情请见:

http://msdn.microsoft.com/en-us/library /aa395209.aspx

您可以使用流媒体 MSDN

只要我知道您可以配置服务绑定: http://www.c-sharpcorner.com/UploadFile/pjthesedays/ bindwcf05032009012251AM / bindwcf.aspx

使用netTcpBinding

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top