2009-09-12 16 views

Respuesta

4

Los servicios web o el jabón serían bastante fáciles, sin embargo, si la aplicación C++ no es un servidor web de forma natural (o la aplicación C#), puede ser más fácil simplemente usar la programación del socket directamente.

Los enchufes son bastante fáciles de usar tanto de C# como de C++. Le dan control total sobre el tipo de fecha transmitida, a costa de un poco más de trabajo en el manejo.

Los problemas más importantes a tener en cuenta son, probablemente, la permanencia de datos binarios y la codificación de datos de texto, si utiliza los sockets directamente. De lo contrario, es muy fácil.

1

Los enchufes son más fáciles; y siempre iría por eso primero. Si la base de datos es una opción, eso también es trivial, pero eso realmente dependería. Si se trata de eventos en cola, eso tendría sentido, pero si es una solicitud/respuesta, probablemente no sea tan buena.

1

puede usar gsoap para que un programa C/C++ use un servicio web.

También puede llamar a un programa cgi que está escrito en C++.

He escrito un servidor en C que se comunicó con un cliente C#, y la endianess puede ser un problema, los servicios web son mucho más simples.

1

¿Desea que se comunique entre sí (por ejemplo, a través de tcp (como muchos otros han señalado)) o quiere traducir objetos de C# a C++? Si es así, consulte Apache Thrift (http://incubator.apache.org/thrift/).

3

Como ya conoce el servicio web y el enfoque de socket, mencionaré algunas otras opciones. Si te gusta la simplicidad, echa un vistazo a XML-RPC. Esto es lo que SOAP era antes de que los comités de estándares grandes y los intereses corporativos comenzaran a controlar la especificación. Puede encontrar implementaciones de XML-RPC para casi todos los principales lenguajes de programación que existen. Hessian es un protocolo binario interesante que tiene muchos fans y es compatible con casi todos los idiomas principales. Protocol Buffers es popular dentro de Google. La versión oficial de Google no es compatible con C#. Sin embargo, los dos usuarios de mayor representación de SO proporcionan puertos de protobuf para el espacio .Net.

Probablemente me ridiculicen por esto, pero también eche un vistazo a CORBA. No está de moda en estos días, pero tiene muchos creditos técnicos sustanciales, especialmente si un extremo de la comunicación es C++. En mi humilde opinión, es WS- * con compatibilidad OO y no se requieren corchetes angulares. Para la interoperabilidad, creo que todavía debería tener un asiento en la mesa. Cuando estoy involucrado en el desarrollo de C++, encontré que OmniOrb es bastante efectivo y eficiente. Eche un vistazo a este SO Question para algunos consejos sobre el uso de CORBA en .Net.

Cuestiones relacionadas