我应该使用WCF来实现一个给定的二进制网络协议吗?

6
我有一个客户设备(POS手持设备),通过TCP/IP或RS232与服务器通信。协议是一种给定的二进制格式,我无法更改。我必须为该设备实现一个服务器。我的印象是,使用WCF比手动实现任何东西更好。但是因为尝试需要相当长的时间,所以我想问一下是否这是一个好主意,是否可以微调WCF以达到如此详细的水平。
我找到了一些类似于我的问题,但在那些情况下,OP始终对客户端和服务器具有完全控制权。这不适用于我的场景。
如果WCF是个好主意 - 我认为是的 - 那么一些起点会非常感激。大多数文档都关注SOAP、REST等,而不是我必须工作的较低层面。
2个回答

4
在使用WCF多年并喜欢它的情况下,我认为它并不是您需求的最佳选择。正如Phil所提到的,它的优势在于Web服务,而不是底层通信。要在WCF中实现这一点,您需要编写自定义传输,这就像几乎所有低级(通道编程)一样需要大量代码。该传输需要使用套接字来了解设备协议,并且您需要以某种方式将协议中的消息转换为WCF消息。
如果协议很简单,我认为“纯”基于套接字的实现是最好的方法。无论如何,WCF解决方案都需要套接字处理代码(用于与设备通信),但是您可以创建自己的消息类型,而不必遵循WCF使用的(相当SOAP友好的)消息协议。
如果您全力以赴并实现了自定义WCF传输,这个传输可以“交谈”该协议,您将拥有一个优势,即如果您将其公开给许多已经习惯于使用WCF实现服务的人,您将不得不承担编写WCF传输的初始(非常高)成本,但后来人们可以使用WCF提供的良好合同模型为该设备编写服务。

2

WCF的学习曲线已经相当陡峭了,如果需要定制很多非常低级别的东西,这条曲线会更加陡峭。

此外,创建WCF的原因是让开发人员不用担心底层实现细节。看起来你想要两者兼得,这意味着你可能会花费大量时间来与WCF斗争,以使其按照你的想法工作。

免责声明:虽然我对WCF有基本的理解,但我不是专家,我的理解可能存在错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接