2011-02-11 2 views
1

J'ai un service RefData (Business Service) qui charge toutes les données de référence de la base de données et des caches en mémoire (serveur de cache personnalisé). Beaucoup de mes contrôleurs appellent ce service chaque fois qu'ils ont besoin de ces données. J'ai également un service de prix (Business Service) qui se connecte à WebService externe pour obtenir le prix du produit, une fois qu'il obtient tous les prix, il doit obtenir certaines données de contenu de DB et fusionner avec la réponse de prix avant de donner la réponse finale. contrôleurs. Maintenant, la plupart de ces routines de données sont déjà exposées par le service RefData. Je ne veux pas écrire des méthodes en double dans mon service de tarification pour obtenir les mêmes données qui sont exposées et mises en cache par Ref Data Service. En outre, je ne peux pas déplacer ces routines dans le service de tarification car mes contrôleurs ont également besoin de ces données et n'appartiennent pas au service de tarification ...ASP.NET MVC - Un service métier doit appeler un autre service

Je suis dans une situation où mon service de tarification doit appeler le service RefData pour en obtenir données avant de pouvoir transmettre la réponse aux contrôleurs. Je n'ai pas trouvé d'écritures ou d'exemples dans lesquels One Business Service appelle un autre service. J'utilise ASP.NET MVC 2 et Unity comme mon IOC. J'apprécierais vos suggestions quant à l'approche à adopter.

Répondre

0

Au début de mon application, je enregistre tous mes services avec mon conteneur IOC. Quand il faut en appeler un autre, je résous simplement celui dont j'ai besoin et je l'appelle.

Peut-être qu'il me manque quelque chose à propos de votre qestion?

En Global.asax.cs:

 var authorizationRepository = new AuthorizationRepository(session); 
     IoC.Container.RegisterInstance<IAuthorizationRepository>(authorizationRepository); 
     var permissionBuilderService = new PermissionsBuilderService(session, authorizationRepository); 
     IoC.Container.RegisterInstance<IPermissionsBuilderService>(permissionBuilderService); 

Quand je besoin d'un service:

 var repository = IoC.Container.Resolve<IAuthorizationRepository>(); 
     repository.DoSomething(); 
+0

rboarman, je sais que je peux le faire. Ce que je voulais dire, c'est qu'il est conseillé d'appeler un service d'un autre, car je n'ai pas vu cela suggéré quelque part ou y a-t-il une meilleure façon de gérer un tel scénario? Je suis désolé si je ne l'ai pas mis rigoureusement dans ma question ... – Alex

+0

Il est très commun et à peu près nécessaire par tout système de toute complexité. – rboarman

0

Il est assez commun pour un service à besoin d'un autre service. Un exemple serait un service d'autorisation. Si vous trouvez un service est nécessaire dans tous les autres services, peut-être qu'il est temps de faire un service de base dont vous pouvez hériter?

Questions connexes