Question

Je cherche à intégrer mon modèle de domaine dans une API de service WCF et je voulais avoir quelques réflexions sur les techniques de chargement paresseux avec ce type de configuration.

Des suggestions en adoptant cette approche ?


lorsque j'ai implémenté cette technique et que j'ai accédé à mon application, juste avant que le serveur ne renvoie ma liste, il atteint le get de chaque propriété censée être chargée paresseusement...Donc chargement impatient.Pourriez-vous expliquer ce problème ou suggérer une solution ?

Modifier:Il apparaît vous pouvez utiliser l'attribut XMLIgnore afin qu'il ne soit pas examiné lors de la sérialisation ..je suis toujours en train de lire ce sujet

Était-ce utile?

La solution

Comme pour toute architecture distante, vous souhaiterez éviter de charger un graphique d'objets complet "sur le fil" de manière incontrôlée (sauf si vous disposez d'un nombre trivialement petit d'objets).

Le Article Wikipédia a les techniques standard assez bien résumées (et en C#.aussi!).J'ai utilisé à la fois des fantômes et des détenteurs de valeur et ils fonctionnent plutôt bien.

Pour mettre en œuvre ce genre de technique, veillez à bien séparer les préoccupations.Sur le serveur, les classes d'implémentation de vos contrats de service doivent être les seuls éléments du code qui fonctionnent avec les contrats de données.Sur le client, la couche d'accès au service doit être le seul code qui fonctionne avec les proxys.

Une telle superposition vous permet d'ajuster la manière dont le service est implémenté de manière relativement indépendante des couches d'interface utilisateur appelant le service et du niveau métier appelé.Cela vous donne également une demi-chance de faire des tests unitaires !

Autres conseils

Ne faites pas de chargement paresseux sur une interface de service.Définissez des DTO explicites et consommez-les en tant que contrats de données dans WCF.

Vous pouvez utiliser NHibernate (ou d'autres ORM) pour récupérer correctement les objets dont vous avez besoin pour construire les DTO.

Vous pouvez essayer d'utiliser quelque chose basé sur REST (par ex. Services de données ADO.NET) et intégrez-le de manière transparente dans votre code client.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top