我是否可以让VB6应用程序调用与使用WCF端点以C#编写的服务的命名管道连接?
VB6项目,它使用命名管道与用C ++编写的服务进行通信。我想将C ++服务转换为C#(最好是.NET 4.0)。
VB6项目使用对CallNamedPipes的Win32调用向服务器发送消息。消息的有效负载是一个由以下结构组成的字符串。
[command][data length][data if approprate to the message]
我目前无法转换应用程序的VB6端,但我想知道是否可以依赖CallNamedPipe函数向新的WCF服务发送消息以及它们是否能够很好地协同工作。我会看到WCF服务的合同方基本上是一个接受我将解析的字符串的方法。
此外,由于CallNamedPipes可以在outputBuffer参数中接收返回数据,WCF是否能够容纳这个?合同会是这样的......
string DoSomething(string command)
感谢您的帮助!
布赖恩
答案 0 :(得分:1)
WCF非常好,但在通信通道的两端使用WCF时真的很棒。尝试将遗留代码连接到WCF服务充其量是棘手的。
使您的C#服务直接使用NamedPipeServerStream可能会更容易。这将使您完全控制如何处理连接和传输。话虽如此,没有什么可以阻止您同时执行这两个(实现自定义NamedPipeServerStream
通道,以及在同一程序中公开一个或多个WCF端点)。如果你想升级客户端,这将提供一种前进的方法。
答案 1 :(得分:0)
答案 2 :(得分:0)
为什么不编写包含WCF客户端代理的ComVisible类,VB6代码可以像任何其他COM库组件一样调用它。