2009-09-12 10 views

Odpowiedz

4

Usługi sieciowe lub mydło byłoby dość łatwe, jednak jeśli aplikacja C++ nie jest serwerem sieciowym w naturalny sposób (lub aplikacją C#), może być łatwiej po prostu użyć bezpośredniego programowania gniazd.

Gniazda są dość łatwe w użyciu zarówno z C#, jak i C++. Dają ci pełną kontrolę nad przesyłanym terminem, kosztem potencjalnie trochę więcej pracy przy obsłudze.

Największe problemy do obejrzenia to prawdopodobnie endianness danych binarnych i kodowanie danych tekstowych, jeśli korzystasz bezpośrednio z gniazd. W przeciwnym razie jest to bardzo łatwe.

1

Gniazda są najprostsze; i zawsze będę to robił pierwszy. Jeśli baza danych jest opcją, to również jest trywialne, ale to naprawdę zależy. Jeśli jest to kolejka zdarzeń, miałoby to sens, ale jeśli jest to żądanie/odpowiedź, prawdopodobnie nie jest tak wspaniałe.

1

można użyć gsoap, aby program C/C++ korzystał z usługi internetowej.

Możesz również wywołać program cgi napisany w C++.

Napisałem serwer w C, który komunikował się z klientem C#, a koniec z tym związany może być trudny do pokonania, usługi sieciowe są o wiele prostsze.

1

Czy chcesz, aby się ze sobą komunikował (na przykład poprzez tcp (jak wskazali inni)), czy chcesz tłumaczyć obiekty z C# na C++? Jeśli tak, sprawdź Apache Thrift (http://incubator.apache.org/thrift/).

3

Ponieważ już wiesz o usłudze sieci Web i podejściu do gniazd, wspomnę o kilku innych opcjach. Jeśli lubisz prostotę, sprawdź XML-RPC. Tak właśnie było w przypadku SOAP, zanim duże komitety normalizacyjne i interesy korporacyjne zaczęły kontrolować specyfikację. Możesz znaleźć implementacje XML-RPC dla niemal każdego większego języka programowania. Hessian to interesujący protokół binarny, który ma wielu fanów i obsługuje prawie każdy duży język. Protocol Buffers jest popularny w Google. Oficjalna wersja Google nie obsługuje języka C#. Jednak dwaj najbardziej najwyżsi użytkownicy SO tworzą porty protobuf dla przestrzeni .Net.

Prawdopodobnie będę ośmieszany, ale przyjrzyj się także CORBA. Obecnie nie jest w modzie, ale ma wiele znaczących technicznych umiejętności, zwłaszcza jeśli jednym z końców komunikacji jest C++. IMHO, to WS- * z obsługą OO i brakiem nawiasów ostrych. Dla Interop myślę, że nadal powinien mieć miejsce przy stole. Kiedy zajmowałem się rozwojem C++, stwierdziłem, że OmniOrb jest dość efektywny i wydajny. Spójrz na to SO Question, aby uzyskać wskazówki dotyczące używania CORBA w .Net.

Powiązane problemy