2010-10-08 75 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如果你真的想最快以最低成本