我可以让 VB6 应用程序通过 WCF 端点调用与用 C# 编写的服务的命名管道连接吗?
VB6 项目利用命名管道与用 C++ 编写的服务进行通信。我想将 C++ 服务转换为 C#(最好是 .NET 4.0)。
VB6 项目使用 Win32 调用 CallNamedPipes向服务器发送消息。消息的有效负载是由以下结构组成的字符串。
[command][data length][data if approprate to the message]
我目前无法转换应用程序的 VB6 端,但我想知道是否可以依靠 CallNamedPipe 函数向新的 WCF 服务发送消息,以及它们是否可以很好地协同工作。我会看到 WCF 服务的合约端基本上是一种接受我将解析的字符串的方法。
此外,由于 CallNamedPipes 可以接收 outputBuffer 参数中的返回数据,WCF 是否能够适应这一点?契约(Contract)是这样的吗...
string DoSomething(string command)
感谢您的帮助!
布莱恩
最佳答案
WCF 非常好,但在通信 channel 的两端使用 WCF 时才真正发挥作用。尝试将遗留代码连接到 WCF 服务是很棘手的。
让您的 C# 服务使用 NamedPipeServerStream 可能会更容易直接地。这将使您能够完全控制连接和传输的处理方式。话虽如此,没有什么可以阻止您同时执行这两项操作(在同一程序中实现自定义 NamedPipeServerStream
channel ,以及公开一个或多个 WCF 端点)。如果您也想升级客户端,这将提供一种继续前进的方法。
关于wcf - 从 VB6 到 WCF 的命名管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3761698/