J'ai un ensemble d'objets de transfert de données (par exemple beaucoup de requêtes, classes de message de réponse, comme MainRequest, MainResponse, ShutDownRequest, ShutDownResponse) Où de nouvelles classes continuent à apparaître lorsque le projet évolue. Ces classes doivent être (dé) sérialisées à partir de et vers différents formats XML avec différents XSD publics. De nouveaux formats XML viennent au fur et à mesure que le projet évolue.Sérialisation des objets de transfert de données dans .NET
Ma question est de savoir comment je concevoir mes classes et interfaces autour ces deux exigences, en particulier là où je devrais mettre la logique serilization réelle (de). Dois-je écrire un service statique qui peut prendre les différentes instances DTO et sait comment sérialiser chacun d'eux? Quand de nouvelles classes viennent, je dois toucher chaque FormatXSeriaizer et ajouter de nouvelles remplacements. Comme de nouveaux formats viennent, je dois juste écrire de nouvelles classes FormatXSerializer.
FormatASerializer.Serialize(XmlWriter writer, MainResponse r);
FormatASerializer.Serialize(XmlWriter writer, ShutDownResponse r);
FormatBSerializer.Serialize(XmlWriter writer, MainResponse r);
FormatBSerializer.Serialize(XmlWriter writer, ShutDownResponse r);
ou si les DTO eux-mêmes savent comment le faire. Donc, j'ai tout en un seul endroit - pour chaque classe DTO. Comme de nouvelles classes DTO viennent, ils ont juste à mettre en œuvre la sérialisation pour les différents formats. Comme nouveaux formats viennent, je dois toucher chaque classe DTO.
myMainRequestInstace.Serialize(FormatTypeEnum type, XmlWriter writer);
Ou existe-t-il une approche complètement différente? Dois-je introduire une inteface commune pour la sérialisation et avoir une inversion de contrôle, donc je pourrais charger des sérialiseurs de nouveau format lors de l'exécution?
Quel motif de conception peut me guider ici?
Quel code open source dans le monde .NET pourrais-je étudier pour voir différentes approches sur ce sujet?
EDIT: Je connais les techniques générales de sérialisation existant dans le framework. Ma question est plus orientée vers la conception de classe qui respecte les deux exigences: plusieurs formats xml et plusieurs DTO (types de message) qui continuent à venir au fur et à mesure de l'évolution du projet.
Veuillez fournir un lien vers "Custom XML Serializers" –