2011-01-24 24 views
5

Duplicar posibles:
Binary serialization/de-serialization in C++ and C#asignación de mapa y shared_ptr entre aplicaciones C# y C++?

estoy trabajando en un proyecto en el servidor está escrito en C++ (impulso se utiliza extensivamente) y la aplicación cliente está escrito en C#. Estoy enfrentando el problema al serializar/deserializar mensajes entre cliente/servidor.

He estudiado varias bibliotecas alternativas para lograr este tipo de serialización multiplataforma, y ​​Protocol Buffers parece ser el mejor ... pero no admite la serialización del contenedor map de la biblioteca estándar y boost::shared_ptr.

Mi pregunta entonces, es:

  • Puede alguien explicar cómo map y boost::shared_ptr podría ser serializado utilizando Protocol Buffers. O en su defecto,
  • ¿Funcionaría el Ahorro de Apache para esto?
  • ... ¿O estoy atascado usando DLL de interoperabilidad en el lado (C#) del cliente?
+0

@jgauffin: NO es un duplicado (al menos de esa pregunta), ya que este usuario está excluyendo explícitamente los búferes de protocolo. – Shog9

+0

No veo cómo una implementación serializaría un 'boost :: shared_ptr'. – jgauffin

Respuesta

2

¿Qué sucede si ajusta las clases de mensaje de C++ con las clases de referencia C++/cli para que utilice la misma biblioteca de serialización de impulso en el lado del cliente.