2

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

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

我知道这违反了 WCF 的“合同”发布(无论是 WSDL),但我并不真正关心这一点。

-杰夫

4

4 回答 4

2

您可以使用流式MSDN

于 2009-06-21T12:19:22.570 回答
2

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

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

于 2009-06-22T00:52:57.567 回答
0

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

使用 netTcpBinding

于 2009-06-21T12:17:41.140 回答
-1

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

你能用 WCF 的自定义二进制序列化替换 XML/SOAP 吗?

简短的回答:没有

长答案:是的,但是您必须重写几乎所有的传输层接口,因此您不妨创建一个自定义 IHttpHandler 并一起避免 WCF。

微软试图遵循 SOAP 标准(我认为该标准是造成这个问题的原因)打破了简单的编程规则之一 -> 层中的职责分离。WCF/SOAP 可能看起来是一个优雅的分层协议和传输,但实际情况是,层之间存在错综复杂的连接。这意味着 WCF 是一个极其复杂的通信协议,它提供了传输、安全性、可靠性、发布、序列化和其他在某种程度上都相互依赖的特性。如果您只需要一个传输通道,那么 WCF/SOAP 会增加大量的复杂性。

我确信我可以开始对 SOAP 是/否大肆咆哮,但我终于意识到 WCF/SOAP 不是我的应用程序所需要的。

-杰夫

于 2009-07-17T02:28:44.723 回答