Estoy trabajando en un proyecto en el que necesitaré serializar algunos datos en una aplicación java 6 y deserializar una aplicación C# 2.0. ¿Hay alguna estrategia o algo que ya exista y que pueda ver que me permita hacer esto con estos dos idiomas? Supongo que ambos admiten la serialización de XML, pero realmente necesito que sea binaria serializada.Estrategia para la serialización de objetos en varios idiomas (java y C#)
Respuesta
Los búfers de protocolo serían una buena opción aquí. En el lado C#, recomendaría el dotnet-protobufs de Jon Skeet para este caso de uso, ya que tiene la misma API en ambos lados (su versión C# es un puerto de la versión Google Java, parte de la distribución principal). Si desea que el C# sea más "típico .NET", entonces protobuf-net puede ayudar.
(el formato de alambre es, obviamente, idénticos entre las versiones, el API puede variar)
pequeño, rápido, eficiente, portable.
Para información, I saber que protobuf-net tiene .NET 2.0 de soporte; Honestamente, no he probado esto en la versión de Jon, pero espero que - no hay mucho que necesites 3.0/3.5 para en protobuf.
No creo que la serialización binaria funcione como C# y Java no tenga idea de los demás tipos nativos.
"serialización binaria" no es necesariamente lo mismo que "serialización/tipo de metadatos". Muchos formatos binarios no dependen de los tipos utilizados en cualquier implementación. –
Protocol Buffers (Google Site)
Lo mejor: rápido y que pueda errores bastante gente que están involucrados con esta cosa en SO .. ;-)
Déjame explotar el projecto de Marc ct site: Performance is quite acceptable ..
Sí, como Marc y yo siempre aparecimos aquí. Es pura casualidad que hayamos visto esta pregunta. –
Me alegro de poder llamarte entonces. Una visión bastante rara de hecho ... –
La serialización binaria predeterminada de cada idioma no es compatible, por lo que no podrá usarla.
Hay muchas tecnologías entre lenguajes de serialización que soportan Java, C# y otros lenguajes:
De ellos no, JSON es binaria pero muy eficiente para un lenguaje basado en cadenas. Los búferes Thrift y Protocol son binarios y tienen una representación muy compacta.
Protocol Buffers de Google es algo que se puede considerar. Deberá verificar el estado de usabilidad de la implementación de C#, pero en todos los demás aspectos, creo que satisface sus necesidades.
Usted podría tratar de Hesse:
http://hessian.caucho.com/index.xtp
Es binario, y es compatible con Java, C++, y varios otros idiomas. Nunca lo he usado, pero lo encontré, pensé que era interesante, y lo marqué como favorito ...
Voy a hacerme eco de la mayoría de las otras respuestas aquí en lo que respecta a los buffers de protocolo de Google. Pero terminé usando un programa llamado protostuff en el extremo de Java en lugar de la propia implementación de Java de Google, y también agregué el nombre de la clase (más externa) como un prefijo a los datos de los buffers de protocolo para hacer que los datos se autodescriban para la deserialización. Detalles aquí: https://stackoverflow.com/a/17923846/253938
Puede utilizar la biblioteca de serialización multiplataforma wox (https://github.com/codelion/wox), está basada en serializadores XML nativos para Java y C#.
puede utilizar BSON si realmente necesita los datos en formato binario ...
- 1. C# Creando una configuración para varios idiomas
- 2. ¿Cómo manejar varios idiomas en Java?
- 3. ¿Qué es la serialización de objetos? (Java)
- 4. Uso de IPC para combinar varios idiomas
- 5. ¿Sistema de mensajería multiplataforma en varios idiomas?
- 6. C# Serialización binaria de objetos
- 7. Compatibilidad con varios idiomas En C#
- 8. Serialización y objetos inmutables
- 9. serialización de clases de XStream y objetos
- 10. serialización eficiente de gráficos de objetos Java
- 11. serialización de Java, Kryo y el gráfico de objetos
- 12. ¿Serialización y deserialización de objetos?
- 13. serialización de objetos java readObject/defaultReadObject
- 14. Prueba de compras en la aplicación para varios idiomas
- 15. generador de proyectos multiplataforma en varios idiomas?
- 16. Ejemplos de varios idiomas en documentación XML
- 17. portadas múltiples en varios idiomas
- 18. Meta programación en varios idiomas de salida
- 19. define varios idiomas en html
- 20. ¿Soporta Android varios idiomas?
- 21. Aplicación expreso en varios idiomas
- 22. serialización templada de objetos C# a JSON
- 23. Aprender varios idiomas
- 24. Sitio web en varios idiomas
- 25. CodeIgniter en varios idiomas y la adición de la lengua a la URL para SEO
- 26. serialización binaria/deserialización en C++ y C#
- 27. Objetos de función de serialización
- 28. XMLEncoder en java para la serialización
- 29. ¿Organizar un proyecto que usa varios idiomas?
- 30. ¿Cómo interactúan varios idiomas en un proyecto?
Sí, tengo como objetivo .NET 2.0, así como Silverlight 2+ y Compact Framework 2+ (IIRC - la versión CF puede ser 3.5). –