1

Je voudrais utiliser "stratégie pattern" avec 2 projets Web, mon fichier de configuration (et uniquement avec le fichier de configuration):Castle windsor: comment ne pas charger tous les composants dans une configuration château windsor xml quand "Resolve" est appelé

<?xml version="1.0"?> 
<configuration> 
    <components> 
     <!-- container ORM --> 
     <component id="DALReseauContainer" type="ReseauRules.Db.BLL.DbReseauWorkingContextContainer, ReseauRules"      service="ReseauConnector.BLL.IReseauWorkingContextContainer, ReseauConnector">   
     </component> 

     <!-- remote controler (Web Service) --> 
     <component id="remoteReseauManager" 
       type="ReseauConnector.BLL.RemoteReseauManager, ReseauConnector" 
       service="ReseauConnector.BLL.IReseauManager, ReseauConnector" 
       lifestyle="transient">   
     </component> 

     <!-- local controler --> 
     <component id="localReseauManager" 
       type="ReseauRules.Db.BLL.DbReseauManager, ReseauRules" 
       service="ReseauConnector.BLL.IReseauManager, ReseauConnector" 
       lifestyle="transient"> 
     <parameters> 
      <container>${DALReseauContainer}</container> 
     </parameters> 
     </component> 
    </components> 
</configuration> 

projet A utilise "remoteReseauManager" et les références ne ReseauConnector, peuvent appeler

container.Resolve<IReseauManager>("remoteReseauManager"); 

projet B utilise "localReseauManager" et les références ReseauConnector eT ReseauRules, peuvent appeler

container.Resolve<IReseauManager>("localReseauManager"); 

quand je l'appelle

IWindsorContainer container = new WindsorContainer(new Castle.Windsor.Configuration.Interpreters.XmlInterpreter()); 

Windsor tente de résoudre chacun des composants, et comme dans le projet A, ReseauRules n'existe pas, Windsor ne peut pas charger ReseauRules (comme prévu).

Comment dire à Windsor ne pas charger un composant dans ce contexte (fichier de configuration)?

Merci beaucoup.

Répondre

1

Vous devez avoir un conteneur par application, alors dans ce cas, il serait également plus logique d'avoir une configuration Windsor par application. De toute évidence, les deux applications ont différentes exigences de déférence. Chaque application doit déjà avoir son propre web.config, donc avoir des configurations Windsor distinctes dans chaque application.

Si la maintenabilité est un problème, XML n'est pas la solution dans tous les cas. Si vous avez beaucoup de configuration de conteneur partagé, écrivez une implémentation IWindsorInstaller et ne gardez que les parties des configurations qui sont différentes en XML.

Vous pouvez mélanger configuration XML et configuration comme code.

+0

grâce mais chaque application (par exemple: dans chaque web.config) peut avoir le même fichier de configuration du château, défini dans Je vais étudier une implémentation de IWindsorInstaller –

+1

Oui, je l'ai compris, mais ce que je veux dire c'est que cela ne vous facilite pas la vie - cela rend la vie plus difficile. –

Questions connexes