c# - 在遗留 tcp IP 服务器和 WCF 应用程序之间进行通信

标签 c# .net wcf

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

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

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

我想到的一个可能的解决方案是编写自定义编码,将字节转换为 soap 消息,反之亦然。但我没有对此进行检查或仔细考虑。

最佳答案

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

...基本上,您需要编写一个传输 channel ——它几乎必须再次支持您需要它为“仅套接字”客户端做的所有事情 + 额外的工作和层。< br/> 这通常只有在你
a)将在以后的开发中重用它,例如您可以为不同的服务器插入该解决方案,或者如果您有许多开发人员和大型代码库等(如果您不这样做,将套接字解决方案作为一个单独的库并重用仍然更容易)或
b) 或者您需要一些不容易“手动和套接字”重现的特定功能 - 仍然支持任何您必须非常彻底地包装它的功能,或者......
c) 一些第 3 方库——我不知道这种情况(通常这属于“过于自定义”的工作),
希望这对一些人有帮助

关于c# - 在遗留 tcp IP 服务器和 WCF 应用程序之间进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9506887/

相关文章:

c# - 使用PCAP.Net提取网络数据包协议(protocol)

c# - 为什么我不能强制派生类具有无参数构造函数?

c# - 处理 Process.Start() 抛出的 Win32Exception

silverlight - SL4/WCF 不适用于 HTTPS

wcf - 无法自动单步进入服务器。远程程序无法调试

c# - 对 Xamarin 初学者的初步支持

c# - String.Format 的反转?

c# - 使用公钥 token 签署 DLL 程序集

c# - IoC 统一 : registering an Entity Framework ObjectContext for Dependency Injection

c - WCF - 发布服务时 WSDL 不更新