2010-10-08 51 views
5

我们正在构建一个新的视觉检查系统应用程序。实际的检测系统由于多种原因需要成为C++。对于该系统,我们将使用Boost & Qt。C++和c之间进行通信的最快方法#

对于我们的用户界面,我们目前正在考虑将WPF/C#用于基于UI和SQL的报表。如果检测系统没有显示器或键盘,UI必须在C++检测系统的同一个盒子上本地运行,或者在另一个盒子上远程运行。

我们关心的是在两个系统之间传输数据的最快方式是什么?我们目前正在考虑使用Google协议缓冲区进行序列化的基于套接字的系统。协议缓冲区将生成C++和c#的代码(jskeet/dotnet-protobufs)。

有没有人有任何建议/经验?

+0

TCP和protobuf的听起来不错。你有特别的关注或问题吗? – dtb 2010-10-08 02:23:46

+1

[protobuf-net](http://code.google.com/p/protobuf-net/)似乎是.NET的首选protobuf实现。 – dtb 2010-10-08 02:24:19

+0

这是一个我没有太多经验的领域。我想知道是否有更好的选择。 – 2010-10-08 02:43:04

回答

1

如果你真的想找到与你的C++检测系统进行通讯的最快方法,那么我会实现这两种情况。使用命名管道的本地接口(请参阅此处Interprocess communication for Windows in C# (.NET 2.0))以及使用Google协议缓冲区的远程接口,用于检测系统没有连接键盘和/或显示器的情况。 然后,用户界面首先尝试打开本地框上的命名管道,如果失败,用户必须输入用于套接字通信的远程地址。

希望帮助有点...

+1

很好的链接,谢谢。跟在SO问题50153上的链接指向命名管道绑定类(http://msdn.microsoft.com/zh-cn/library/system.servicemodel.netnamedpipebinding.aspx)。然而,从MSDN页面的评论中确实很有趣,看起来每条消息有16k到20k的隐藏限制。这可能会导致我们遇到问题,因为我们确实有一些消息块会比这更大。 – 2010-10-08 13:51:00

0

我想看看zeromq如果你真的想最快以最低成本