在简单的TcpListener上使用WCF的动机?

时间:2014-11-10 16:28:13

标签: c# json wcf tcpclient tcplistener

我需要实现一个可以在内部网络上运行的打印服务(Android设备也是网络的一部分)。

它当前由TcpListener实现,它接受连接请求(采用JSON格式),当收到请求时,其流被读入字符串并使用JsonConvert类进行反序列化。

我的印象是,对于性能不是很关键的大多数操作,使用WCF应优先于TcpListener,但即使对于这样的简单场景也是如此?

即使使用TcpListener,我只需要获取请求流并对其进行反序列化,这似乎不是太麻烦,我是否仍然更喜欢WCF?

1 个答案:

答案 0 :(得分:3)

WCF允许您的代码专注于业务逻辑,而不是传输机制和序列化/反序列化。

现在,您只需要您的服务接受TCP连接,将收到的JSON数据反序列化到您的对象中,并将这些对象传递给您的业务逻辑。为了论证,接下来你决定添加第二个服务。您添加逻辑以解析HTTP标头并选择要调用的相应业务方法。对于第二个服务,您还需要支持读取(HTTP GET)和写入(HTTP POST)。一段时间后,您意识到您正在编写自定义HTTP服务器。

让我们说一年后,您与另一家公司达成协议,该公司希望通过SOAP,或使用消息队列或其他一些机制来调用该服务。你想重构你的代码吗?理论上,WCF允许您更改暴露新端点的配置文件。

WCF是一个复杂的野兽,并不容易学习。更新版本增加了一些快捷方式,让我们的生活更轻松。对于简单的自托管JSON服务,设置并不困难。以下是您需要阅读的一些内容:

How to: Host a WCF Service in a Managed Windows Service

Create a REST service with WCF and consume it using jQuery