J'ai rencontré un problème récurrent pour lequel je n'ai trouvé aucun bon exemple ou modèle.Comment modéliser des objets de transfert de données pour différents frontaux?
J'ai un service de base qui effectue toutes les opérations de datasbase lourdes et envoie les résultats aux différentes extrémités avant (html, silverlight/flash, services web, etc.). L'une des opérations de service est "GetDocuments", qui fournit une liste de documents basée sur différents critères de filtrage. Si je n'avais qu'un seul frontal, je voudrais emballer le résultat dans une liste de DTO de document (objets de transfert de données) qui ne contient que les données. Cependant, les différentes interfaces ont besoin de différentes quantités de "métadonnées". Le client simple a juste besoin du titre du document et d'une référence de lien. D'autres clients veulent un petit extrait de texte du document, un autre veut aussi une vignette et un troisième veut le nom de l'auteur. C'est essentiellement tout à la mise en œuvre de l'interface graphique ce qui doit être affiché.
Quelle est la meilleure façon de modéliser ceci:
- Comme beaucoup de différents DTO (document, DocumentWithThumbnail, DocumentWithTextSnippet)
- tend à devenir beaucoup de classes
- Comme un DTO contenant toutes les données, où choisir le client pour afficher ce
- Beaucoup de données inutiles envoyées
- Comme un DTO où certains champs sont remplis en fonction de ce que le client a demandé
- Tend à devenir une très grande classe qui doit être étendue au fil du temps
- Un DTO mais avec une sorte de champ "Métadonnées" générique contenant les métadonnées demandées.
Ou y at-il d'autres options?
Puisque je veux un service de haute performance, je dois penser à la fois à la charge réseau et aux stratégies de mise en cache.
Est-ce que quelqu'un a de bonnes habitudes ou pratiques qui pourraient m'aider?
http://stackoverflow.com/questions/1440952/why-are-data-transfer-objects-an-anti-pattern – Upperstage
Est Les données vont sur un fil (à savoir accessible via un service Web)? Ou passez-vous des objets C# aux extrémités avant? –
Les données que je passe sur le câble à certains clients, comme JSON sur le web par exemple. @UpperStage - si DTO en soi est un bon choix n'a pas vraiment d'impact sur la question. La question serait valable même si les objets étaient plus complexes. Comment sélectionner les données à envoyer. – Bjorn