2009-09-12 2 views

Antwort

4

Webdienste oder Soap wäre ziemlich einfach, aber wenn die C++ - Anwendung kein Webserver (oder die C# -Anwendung) ist, kann es einfacher sein, Socketprogrammierung direkt zu verwenden.

Sockets sind sowohl in C# als auch in C++ relativ einfach zu verwenden. Sie geben Ihnen vollständige Kontrolle über die Art des übertragenen Datums, auf Kosten von möglicherweise ein wenig mehr Arbeit in der Handhabung.

Die größten Probleme, auf die Sie achten sollten, sind wahrscheinlich die Endianz von Binärdaten und die Kodierung von Textdaten, wenn Sie Sockets direkt verwenden. Ansonsten ist es sehr einfach.

1

Steckdosen sind am einfachsten; und ich würde immer zuerst dafür gehen. Wenn Datenbank eine Option ist, ist das auch trivial, aber das würde wirklich abhängen. Wenn es sich um Ereignisse in der Warteschlange handelt, wäre das sinnvoll, aber wenn es sich um eine Anfrage/Antwort handelt, ist es wahrscheinlich nicht so toll.

1

können Sie gsoap verwenden, damit ein C/C++ Programm einen Webservice verwendet.

Sie können auch ein CGI-Programm aufrufen, das in C++ geschrieben ist.

Ich habe einen Server in C geschrieben, der mit einem C# -Client kommuniziert hat, und die Endianess kann ein Problem sein, Webservices sind so viel einfacher.

1

Möchten Sie, dass es miteinander kommuniziert (zum Beispiel über tcp (wie viele andere)) oder möchten Sie Objekte von C# nach C++ übersetzen können? Wenn ja, schau dir Apache Thrift (http://incubator.apache.org/thrift/) an.

3

Da Sie bereits den Ansatz von Web Service und Sockets kennen, werde ich einige andere Optionen erwähnen. Wenn Sie Einfachheit mögen, überprüfen Sie XML-RPC. Dies war SOAP, bevor große Standardkomitees und Unternehmensinteressen anfingen, die Spezifikation zu kontrollieren. Sie können Implementierungen von XML-RPC für fast alle wichtigen Programmiersprachen finden. Hessian ist ein interessantes binäres Protokoll, das viele Fans hat und fast alle wichtigen Sprachen unterstützt. Protocol Buffers ist in Google beliebt. Die offizielle Version von Google unterstützt C# nicht. Die beiden höchsten Rep-Benutzer von SO stellen jedoch Protobuf-Ports für den .Net-Bereich bereit.

Ich werde wahrscheinlich dafür verspottet werden, aber werfen Sie auch einen Blick auf CORBA. Es ist nicht in Mode in diesen Tagen, aber hat viele wesentliche technische Kredits, vor allem, wenn ein Ende der Kommunikation C++ ist. IMHO, es ist WS- * mit OO-Unterstützung und keine Winkel Klammern erforderlich. Für die Interop, ich denke, es sollte immer noch einen Platz am Tisch haben. Bei der Entwicklung von C++ fand ich OmniOrb ziemlich effektiv und effizient. Werfen Sie einen Blick auf diese SO Question für einige Hinweise zur Verwendung von CORBA in .Net.

Verwandte Themen