在旧tcp IP服务器和WCF应用程序之间进行通信

时间:2012-02-29 21:27:18

标签: c# .net wcf

我一直在研究是否将WCF用于我们将要开展的新项目。

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

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

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

2 个答案:

答案 0 :(得分:2)

杰森,
我建议(不确定这是否是答案,但我不能发表评论,抱歉),
你喜欢使用完整的套接字或完整的WCF解决方案(意味着客户端和服务器) 假设您有一个带有via套接字的旧服务器 - 使用一些自定义协议制作套接字客户端,解析,基本错误处理等等要容易得多。 ...而且你也会让它变得更快(不确定应用程序的目的,性质和服务器的通信,或者你需要其他一些WCF功能等)。 看到这个线程或多或少是你的情况......
WCF TCP client with Java Socket server on custom XML messages

...基本上,你需要编写一个传输通道 - 这将再次支持你需要它为'仅限套接字'的客户端+额外的工作和图层做的一切。<登记/> 这通常只有你是有意义的才有意义 a)将其重新用于以后的开发,例如您可以为不同的服务器插入该解决方案,或者如果您有许多开发人员和大型代码库等(如果不这样做,那么将套接字解决方案作为单独的库并重新使用仍然更容易)或者 b)或者你需要一些不易“手工和插座”重复的特定功能 - 仍然支持你必须完全包装它的任何一个,或者...... c)一些第三方库 - 我不知道这种情况(通常这属于'过于习惯'的工作),
希望这有助于一些

答案 1 :(得分:0)

不确定您是否看过Carlos Figueira关于WCF可扩展性的一系列帖子,但如果您想了解可行的内容以及如何去做,那么它们非常值得一读。

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

有一个基于TCP的自定义绑定JSON-RPC的示例,您可以在案例中使用新的传输绑定的基础。

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