服务器A(C#)和B(C)之间的通信解决方案

时间:2014-02-03 16:55:07

标签: c# .net c server-communication

我有点卡在这里。我有一个用C#.NET编写的服务器B ,并与我想要使用的设备进行通信(例如调试它)。然后是服务器A (用C编写)与我的Eclipse通信。这两件事都没有问题。

问题始于我需要从服务器A 服务器B 进行通信。我不能使用 A 中的 B 的DLL,因为它们是在.NET Framework 2.0下编写的,并且在C代码中使用它们似乎相当复杂。

我的问题是:我有什么选择?

没有很多复杂的数据需要传输。所有这些都可以轻松地按字节传输,因为数据将是字符串,数字或二进制数据(可执行)。

我正在考虑创建一个简单的协议,通过TCP将服务器上的字节命令发送到服务器,但我不确定这是否是一个很好的解决方案。

这是一个基本的设计决策,因为这两个项目都很大。我必须谨慎决定。有什么建议吗?

谢谢! (如果你有更好的问题,请随意编辑这个问题的标签)

2 个答案:

答案 0 :(得分:1)

一种选择是使用DCOM;这里有几篇文章可以帮助您入门:How to write a DCOM server in C#Calling Managed .NET C# COM Objects from Unmanaged C++ Code。如果C#和C进程都在同一主机上,那么COM就足够了,代码就更简单了。

答案 1 :(得分:1)

查看您的评论并了解两台服务器将如何托管在同一台计算机上,您可以考虑使用基本内存映射文件在两者之间进行通信:

Memory mapped files in C# / Named Shared Memory in C

但是,如果您想使此平台独立,您可以考虑使用可用于C#和C的Protobuf等。这将采用创建TCP协议的想法,但您使用了一个记录良好且行业范围广泛的协议,这将使应用程序更容易支持。