Estoy trabajando en una aplicación distribuida que tiene dos componentes. Uno está escrito en C++ estándar (no administrado C++ y se ejecuta en una plataforma Linux) y el otro está escrito en C#. Ambos se están comunicando a través de un bus de mensajes.serialización binaria/deserialización en C++ y C#
Tengo una situación en la que necesito pasar objetos de la aplicación C++ a C# y para esto necesito serializar esos objetos en C++ y deserializarlos en C# (algo como marshaling/un-marshaling en .NET) . Necesito realizar esta serialización en formato binario y no en XML (por razones de rendimiento).
He usado Boost.Serialization
para hacer esto cuando ambos extremos se implementaron en C++ pero ahora que tengo una aplicación .NET en un extremo, Boost.Serialization
no es una solución viable.
Estoy buscando una solución que me permita realizar (de) serialización en C++ y .NET Boundary, es decir, multiplataforma serial binaria.
Sé que puedo implementar el código de (de) serialización en un dll de C++ y usar P/Invoke
en la aplicación .NET, pero quiero mantenerlo como último recurso.
Además, quiero saber si uso algún estándar como gzip, ¿será eficiente? ¿Hay alguna otra alternativa a gzip? ¿Cuáles son los pros/contras de ellos?
Gracias
Mi mejor sugerencia es NO hacerlo. Use json, xml u otra cosa para transferir sus datos. Implemente eso PRIMERO, si termina demasiado lento entonces analice lo que toma tiempo ... – Cine
Empecé con la serialización de XML y resultó ser más lento en comparación con la serialización binaria (con ambos extremos ejecutando una aplicación de C++). Esta es la razón por la que elegí Boost.Serialization en primer lugar. –
¿Ha considerado desarrollar una aplicación COM simple, C++ y.NET admite la tecnología COM, hasta donde yo sé. –