Voy a tomar una vista alternativa:
XmlSerializer es compatible, se conocen sus comportamientos y funciona bien. No está mal". Es muy general, está bien documentado y tiene muchos ejemplos. El rendimiento es probablemente muy bueno para lo que necesita. Probablemente hace lo que necesitas.
Hay algunas personas que tienen necesidades particulares que no están cubiertas por el XmlSerializer. De esos requisitos obtenemos cosas como protobufs, DataContractSerializer y otras opciones.
Pero XmlSerializer sigue siendo muy general y probablemente el serializador más ampliamente aplicable en la ciudad. Todavía es probablemente la apuesta más segura para serializar contenido.
Como para apoyar ...
MS pueden estar ralentizando en la fijación de los errores. Lo comparo con WinForms. WinForms ya no es el marco de interfaz de usuario principal impulsado por Microsoft. Pero todavía está maduro, funciona bien, funciona bien. XmlSerializer es lo mismo.
En cuanto a soporte en el futuro. MS tiene una política de soporte 5 + 5: admiten un producto durante 5 años después de su lanzamiento, y luego puede comprar 5 años de soporte adicional para él. .NET Framework no es la "cosa" admitida: es el sistema operativo Windows el que incluye .NET que es compatible. Windows 7 incluirá .NET 3.5 (¿creo que la versión es 3.5?) Y todo en .NET 3.5, incluidos WinForms y XmlSerializer, será "oficialmente compatible" durante 5 años adicionales, a partir de octubre o cuando se lance Win7. Si es .NET 4.0, todo lo que esté en 4.0 (incluido, aún, WinForms y XmlSerializer) será soportado por 5 años. El reloj de 5 años se reinicia cada vez que un nuevo producto se envía con .NET.
En cuanto a VB6 Runtime, originalmente se envió con Visual Studio 6, en 1998. Se ha incluido en Windows desde entonces, incluido Windows Server 2008 R2, lanzado este año. Por lo tanto, el tiempo de ejecución de VB se admitirá al menos hasta 2014. Eso es 16 años de soporte principal, al menos.
No tiene nada de qué preocuparse en cuanto a soporte oficial. Este no es un proyecto de código abierto del que hablas. Esta no es una oferta provisional como WSE o SOAP Toolkit.
Es cierto que hay grados de compatibilidad, y las API .NET más antiguas se vuelven prioritarias a medida que se lanzan y promueven las más recientes. Pero los mayores son presumiblemente más estables, para el momento en que se estancan. Estás totalmente a salvo.
Marc, ¿es (fácilmente) posible reemplazar el BinaryFormatter por defecto con protobuf-net para usar con .Net remoting? – M4N
No * requiero * XML (aunque sería bueno, por lo que no interrumpe las instalaciones existentes), pero sí requiero lectura humana. Gracias por la lista de desventajas sin embargo. –
Para la comunicación remota, puede implementar 'ISerializable' (a través de protobuf-net) en aproximadamente 4 líneas de código por objeto; acerca de lo mejor que puedo obtener ... esto solo es necesario para los objetos "raíz" (no cosas que están encapsuladas). Para lectura humana ... ¿tal vez JSON.Net? –