WCF服务可以替换TCPListener的功能吗?

时间:2010-09-07 15:57:33

标签: c# wcf tcplistener

我有一个基于TCPListener的服务器应用程序,它侦听单个特定端口上的客户端。客户端连接,发送一些xml,将一些xml作为响应返回,然后断开连接。

是否可以在不对客户端进行任何更改的情况下将基于TCPListener的应用程序替换为WCF服务?如果是这样,任何人都可以建议资源,这将有助于我构建这样的服务吗?

2 个答案:

答案 0 :(得分:5)

理论上是的。 WCF有许多扩展点,因此您可以包含自己的message encoder,您自己的transport channel等。您可以包含自定义行为以影响邮件格式等。即使您拥有专有邮件,您也应该能够这样做格式或传输协议。但这是很多工作。

如果您真的想尝试一下,可以从自定义消息编码器开始,它将使用Message并将其作为自定义XML格式写入二进制编码器。将此新编码器与自定义绑定相结合,并在tcpTransport中进行构建。调试很难。示例提供example添加JSONP支持。我认为这是类似的方法。它使用内置传输和编码器,并添加自定义消息格式。

答案 1 :(得分:2)

一个简单的基于tcp的服务器不遵循消息成帧协议,因为wcf的net.tcp遵循http://blogs.msdn.com/b/drnick/archive/2009/01/19/message-framing-part-1.aspx

这使得实现WCF非常困难,该WCF可以与使用自己的消息传递方案的自定义TCP侦听器服务的客户端进行通信。