2009-12-17 9 views
1

Comment puis-je gérer la durée de vie de mes services en turbine mvc (en utilisant Unity)?Gestion à vie dans une turbine mvc?

J'ai une implémentation ISearchService LuceneSearchService qui prend un IConfigurationService et ILoggerService.

Actuellement mon inscription ressemble à ceci Demande de recherche:

public class SearchServiceRegistration: IServiceRegistration 
{ 
    public void Register(IServiceLocator locator) 
    { 
     locator.Register<ISearchService, LuceneSearchService>(); 
    } 
} 

Je voudrais garder la responsabilité de créer l'instance dans la turbine, mais je veux que ce soit un singleton.

Ou, en d'autres termes, comment puis-je définir la durée de vie?

Répondre

1

Actuellement, les trépans Turbine ne permettent pas la gestion de la durée de vie car je pensais que le travail convenait le mieux à votre conteneur. Si vous êtes intéressé, vous pouvez utiliser quelque chose comme ce que je définis sur ce blog: Injecting Your Favorite IoC Into MVC Turbine

Si vous êtes OK avec exposer votre conteneur avec votre mise en œuvre au sein de votre IServiceRegistration vous pouvez faire quelque chose comme ceci: HACK to expose your specific SL within your registration

Si je reçois beaucoup de demandes pour le besoin de gestion de la vie, je vais l'ajouter à V3 de Turbine.

+0

Merci. En même temps, j'avais découvert que je pouvais créer mon conteneur moi-même. Mais parce que mes services ont besoin d'autres services qui ne sont pas autodécouvertes lorsque je crée mon conteneur, je dois maintenant faire l'enregistrement complet moi-même. Ce qui est un bummer. Anticiper V3: D Aussi: Je tiens à vous remercier pour Turbine. J'ai finalement compris un concept que j'essayais de saisir depuis des mois :) –

+0

Je suppose, ne suivant pas votre déclaration, "mes services ont besoin d'autres services qui ne sont pas autodiscovered quand je crée mon conteneur je dois maintenant faire le enregistrement complet moi-même. " Qu'est-ce que vous essayez de faire? Généralement, avec IServiceLocator qui est exposé, vous enregistrez les services qui sont transitoires et nécessitent une inscription simple au sein de votre application. Fournir votre propre conteneur est destiné à des enregistrements plus complexes. Si cela ne vous dérange pas de demander, quel conteneur utilisez-vous? –