我应该使用WCF来实现给定的二进制网络协议吗?
本文关键字:二进制 网络协议 WCF 实现 我应该 | 更新日期: 2023-09-27 18:06:09
我有一个客户端设备(POS手持),它通过TCP/IP或RS232与它的服务器通信。协议是一个给定的二进制格式,我不能改变它。我必须为那个设备实现一个服务器。我的印象是,WCF将是比手工实现任何东西更好的选择。但是因为尝试需要相当长的时间,所以我想征求一下建议,看看这是不是一个好主意,以及是否有可能将WCF微调到这样的细节水平。
我发现了一些类似于我的问题,但在这些情况下,OP总是完全控制客户端和服务器。
如果WCF是一个好主意-我认为-一些起点将非常感激。大多数文档关注SOAP、REST……
使用WCF多年(并且喜欢它),我不认为它是满足您需求的最佳选择。正如Phil提到的,它的最佳点是围绕web服务,而不是低层次的通信。要在WCF中实现这一点,您需要编写自定义传输,这与几乎所有底层(通道编程)一样,涉及大量代码。此传输需要使用套接字来理解设备协议,并且您需要以某种方式将协议中的消息转换为WCF消息。
如果协议很简单,我认为"纯"基于套接字的实现将是最好的方法。无论如何,在WCF解决方案中都需要套接字处理代码(用于与设备通信),但是您可以创建自己的消息类型,而不必遵循WCF使用的(相当soap友好的)消息协议。
一个优点,你会如果你一路猛冲,实现自定义WCF传输"谈判",协议将是如果你让它接触许多不同的人已经用于实现服务的WCF-way——你不得不承担最初的(非常高)写一个WCF运输成本,但后来人们可以编写服务,设备使用WCF提供的很好的合同模型。
WCF有相当长的学习曲线,如果您需要自定义许多非常低级的东西,曲线将会更陡峭。
另外,创建WCF的原因是为了让开发人员不必担心较低层次的实现细节。似乎你想要两全其美,这意味着你可能会花大部分时间与WCF作斗争,以使它按你想要的方式工作。
免责声明:虽然我对WCF有一个基本的了解,但我不是专家,我可能会错。