2010-03-01 5 views
1

Je travaille sur un projet qui a un grand graphique d'objet en mémoire. Les objets de domaine sont vraiment "larges" et contiennent toute une charge de données qui est normalement étrangère. Je pense à mettre en place une sorte de modèle de chargement paresseux.Grand modèle de domaine en mémoire

Je pense actuellement à des attributs sur chacune des propriétés qui sont paresseuses. Je crée des types de proxies dynamiques au démarrage de l'application et j'envoie ces derniers. Ceux-ci rechercheront ensuite le service de propriétés étendues local si nécessaire.

Quelqu'un at-il fait quelque chose comme ça avant .Net, avec une mise en œuvre propre? Merci

Répondre

1

Cela dépend des caractéristiques de votre graphique d'objets et de vos habitudes d'utilisation. L'approche par procuration par chargement paresseux est fiable, mais elle ne s'adapte pas bien par elle-même. Le modèle d'utilisation dans lequel le client demande la même propriété pour un grand nombre d'objets entraîne rapidement des problèmes de performances avec un serveur distant en raison du grand nombre d'appels distants. Maintenir le graphe d'objet en mémoire sur le serveur et permettre au client de charger en bloc des données de propriété, avec le proxy de chargement paresseux en tant que repli fonctionnait beaucoup mieux pour nous.

Le chargement en bloc permet également des optimisations de taille sur le flux de résultats où vous avez des valeurs répétées et immuables.

1

Le modèle de constructeur fonctionne plutôt bien dans cette situation. Reportez le contenu superflue au chargement paresseux et fermez le chargement et la construction de ces attributs externes aux classes de générateur.

1

En outre, vous pouvez envisager d'utiliser WeakReference (s) conjointement avec un chargement différé. Cela vous sauvera de OutOfMemoryException.

Questions connexes