2011-08-17 36 views
6

我有一个客户端设备(POS手持设备),它通过TCP/IP或RS232与它的服务器进行通信。该协议是一个给定的二进制格式,我不能改变。我必须为该设备实施服务器。我的印象是,WCF将是比手工实现任何东西都更好的选择。但是,因为需要一段时间才能尝试,所以我想征询一下意见,不管这是否是一个好主意,以及是否可以对WCF进行微调以达到如此详细的级别。我应该使用WCF来实现给定的二进制网络协议吗?

我发现了一些类似于我的问题,但在这些情况下,OP始终完全控制客户端和服务器。我的情况并非如此。

如果WCF是一个好主意 - 我认为 - 一些起点将非常赞赏。大多数文档都着重于SOAP,REST等等,而不是我不得不使用的较低级别。

回答

4

与WCF合作多年(并且喜欢它),我不认为这是您的需求的最佳选择。正如菲尔提到的,它最适合用在网络服务上,而不是低层次的通信。为了在WCF中实现这个功能,你需要编写一个自定义传输,与几乎所有的低级(通道编程)一样,它包含大量的代码。此传输需要使用套接字来理解设备协议,并且您需要以某种方式将来自协议的消息转换为WCF消息。

如果协议很简单,我认为基于“纯”套接字的实现将是最好的方法。无论如何,WCF解决方案中都需要套接字处理代码(与设备通信),但是您可以创建自己的消息类型,而不必遵循WCF使用的(而非SOAP友好的)消息协议。

如果您要一路走下去并实现自定义的WCF传输,那么它会“协商”该协议,如果您要将它展示给已经习惯了WCF的许多不同人员,实施服务的方式 - 您必须承担编写WCF传输的初始(非常高)成本,但稍后人们可以使用WCF提供的良好合同模型为该设备编写服务。

2

WCF具有相当的学习曲线,如果您需要定制大量非常低级别的东西,曲线会更陡峭。

此外,WCF创建的原因是为了让开发人员不必担心较低级别的实现细节。看起来好像你想要两全其美,这意味着你可能会花大部分时间与WCF战斗,以达到你想要的效果。

声明:虽然我对WCF有基本的了解,但我不是专家,我可能是错的。