2012-02-29 49 views
3

我一直在研究是否使用WCF来处理我们将要开发的新项目。传统的TCP IP服务器和WCF应用程序之间的通信

基本上,阻止我们使用它的唯一原因是新项目必须能够与通过.Net的TcpClient类与二进制消息进行对话的传统服务器进行通信。

我想知道如果我可以写一个自定义绑定也许发送和接收来自服务器的消息。我设法发现我可以编写自定义绑定和编码。但我不确定是否可以将消息读取为字节而不是肥皂消息。

我想到的一种可能的解决方案是编写一个自定义编码,将字节转换为肥皂消息,反之亦然。但我没有检查过,也没有多想。

+0

是您的客户端已经写好,你需要某种兼容的服务器或约束仅仅是客户端被限制的TcpClient类(顺便说一句,WCF不限制于SOAP)? – 2012-03-05 13:33:41

+0

@SimonMourier客户端仅限于TcpClient类,服务器仅限于WCF – Jason 2012-03-06 23:10:01

+0

,但客户端和服务器之间的协议/接口已存在,或者您正在创建它? – 2012-03-07 10:17:35

回答

2

杰森,
我建议(不知道这是否是一个答案,但我不能发表评论,对不起),
你愿意与任何一个完整的插座或一个完整的解决方案WCF走(意思是两个客户端和服务器)。
鉴于你有一个传统的服务器与通过套接字 - 这是更容易做一个套接字客户端与你有一些自定义协议,解析,基本的错误处理等
......你会让它更快(不知道应用的目的,应用的性质以及与服务器之间的通信是什么,还是您需要其他WCF功能等)。 看到这个线程这或多或少是你的情况...
WCF TCP client with Java Socket server on custom XML messages

...基本上,你需要写一个传输通道 - 这将再次几乎要支持你所需要的一切它可以用于'套接字'客户端+额外的工作和图层。
通常情况下,只有当你想要
时才有意义a)重复使用它以便以后进行开发,例如,您可以将该解决方案插入不同的服务器,或者如果您有许多开发人员和大型代码库等(如果您不这样做,则使套接字解决方案成为单独的库并重新使用仍然更容易)或者b)或者您需要一些不容易重现的特定功能,“手工和套接字” - 仍然支持任何你必须包装它非常彻底,或...
c)一些第三方库 - - 我“M不知道对于这样的情况(通常这属于一个“过自定义的工作),
希望这有助于一些

+0

这是必须的,我不能使用原始套接字,是的,它将被用作插件(更多的框架)在其他服务器中。所以看来我需要编写一个自定义传输。感谢您更多关注 – Jason 2012-03-03 19:30:05

+0

并非每个套接字通信都可以(很容易)进行WCF编辑,这取决于服务器协议模型。 你也可以考虑写一个'代理'(即代理对话服务器,将WCF暴露给其他人) - 即使它听起来像'更多'(可能会),它可能会变成更干净的解决方案。 – NSGaga 2012-03-05 16:32:11

0

不知道如果你看过卡洛斯·费圭的系列文章对WCF可扩展性,但他们如果你想了解什么是可能的以及如何去做,那么值得一读。

http://blogs.msdn.com/b/carlosfigueira/archive/2011/03/14/wcf-extensibility.aspx

没有为JSON-RPC,你可能能够使用一个基础,一个新的传输你的情况有约束力基于自定义TCP的例子。

http://blogs.msdn.com/b/carlosfigueira/archive/2011/12/08/wcf-extensibility-transport-channels-request-channels-part-1.aspx

+0

谢谢,好的文章 – Jason 2012-03-06 17:16:47

相关问题