2010-10-08 17 views
5

Budujemy nową aplikację systemu kontroli wizyjnej. Rzeczywisty system kontroli musi być w C++ z kilku powodów. W tym systemie użyjemy Boost & Qt.Najszybszy sposób komunikacji między C++ i C#

Dla naszego interfejsu użytkownika obecnie szukamy możliwości korzystania z WPF/C# dla raportów opartych na interfejsie użytkownika i SQL. Czynnik komplikujący, że interfejs użytkownika musi działać zarówno lokalnie na tym samym polu, co system inspekcji C++ lub zdalnie na innym polu, jeśli system kontroli nie ma monitora lub klawiatury.

Naszym problemem jest, jaki jest najszybszy sposób przesyłania danych między dwoma systemami? Obecnie analizujemy system oparty na gniazdach, wykorzystujący bufory protokołu Google do serializacji. Bufory protokołów wygenerują kod dla C++ i C# (jskeet/dotnet-protobufs).

Czy ktoś ma jakieś sugestie/doświadczenie?

+0

TCP i protobuf brzmi dobrze. Czy masz konkretny problem lub pytanie? – dtb

+1

[protobuf-net] (http://code.google.com/p/protobuf-net/) wydaje się preferowaną implementacją protobuf dla .NET. – dtb

+0

To jest obszar, w którym nie mam dużego doświadczenia. Zastanawiałem się, czy są lepsze opcje. –

Odpowiedz

1

Jeśli naprawdę szukasz najszybszego sposobu na komunikację z twoim systemem inspekcji C++, to zaimplementowałbym oba przypadki. Lokalny interfejs za pomocą nazwanych potoków (patrz tutaj Interprocess communication for Windows in C# (.NET 2.0)) i zdalny interfejs wykorzystujący bufory protokołu Google w sytuacjach, gdy twój system kontroli nie ma dołączonej klawiatury i/lub monitora. Następnie interfejs próbuje najpierw otworzyć nazwany potok w lokalnym polu, a jeśli to się nie powiedzie, użytkownik musi wprowadzić zdalny adres do komunikacji z gniazdem.

nadzieję, że pomoże trochę ...

+1

Świetny link, dzięki. Kolejne łącza na pytanie 50153 do klasy wiążącej potoków nazwanych (http://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding.aspx). Naprawdę interesujące z komentarza na stronie MSDN wydaje się jednak, że istnieje ukryty limit od 16k do 20k na wiadomość. Może to spowodować problem, ponieważ niektóre bloki wiadomości będą większe niż to. –

0

chciałbym spojrzeć na zeromq jeśli naprawdę chcesz Najszybciej jak najmniejszym kosztem

Powiązane problemy