2010-07-14 12 views
4

Je prévois sur l'utilisation de ASP.NET à l'intérieur du MEF à la recherche d'un aperçu de la sécurité des threads du CompositionContainer. Ma première approche a associé un CompositionContainer distinct à chaque requête, mais je crains que cela ne coûte cher et ne soit pas très bien échelonné, d'un autre côté, le composant CompositionContainer supporte les opérations sécurisées via un simple drapeau dans le constructeur.sécurité de fil et le MEF CompositionContainer

J'ai aussi examiné l'approche hybride où je pourrais utiliser un CompositionContainer statique thread-safe et qui est liée à chaque demande.

Outre l'argument de la sécurité des threads Je compte beaucoup sur pour pouvoir usine à exporter pour construire des objets en fonction des besoins. Bien, je suis toujours mis sur écoute par cette chose ExportLifeTimeContext et je suis incertain au sujet des besoins en ressources de cette approche.

Quelqu'un at-il une idée de ce?

Répondre

5

Création CompositionContainers est pas cher, donc il devrait être bon pour créer un pour chaque demande. La création du catalogue est pas aussi pas cher, mais les catalogues sont thread-safe de sorte que vous devriez être en mesure de créer une dimension mondiale au démarrage et l'utiliser pour chaque demande. Une chose à savoir est que même les conteneurs de composition "thread-safe" ne sont pas adaptés aux threads pour les opérations qui peuvent entraîner une recomposition, telles que les modifications des catalogues, ou l'appel des méthodes Compose sur le conteneur. En ce qui concerne l'approche hybride, vous devriez suivre cette voie si vous avez des parties (qui doivent être sécurisées pour les threads) que vous souhaitez partager entre les requêtes et certaines parties que vous souhaitez personnaliser. Dans ce cas, seul le conteneur partagé devra être créé en tant que thread-safe.

+0

Cela règle, le catalogue est construit seulement une fois lors du démarrage. Pas de recomposition. Et je vais avoir un conteneur distinct par demande pour aller avec ça. Devrait marcher. Merci! –

+0

où est-il dit catalogue est threadsafe? Je ne semble pas avoir trouvé documentant –

+2

@jws_ Voir la section des remarques dans la documentation MSDN pour ComposablePartCatalog par exemple: http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.primitives.composablepartcatalog (v = vs.110) .aspx –