2010-12-14 43 views
2

J'ai un petit problème pour savoir comment configurer le conteneur Unity IoC dans mon application .net MVC à n niveaux.Comment configurer l'unité dans l'application ASP .net MVC n-tier

J'ai 3 projets dans ma solution: 1. MVC (Utilisé comme View): A referene à la couche logique métier uniquement 2. La couche logique d'entreprise: référence au projet a-t-Repository seulement 3. Respository: Ne pas référence à l'un des projets ci-dessus

Veuillez noter la façon dont ma référence fonctionne, je l'ai fait comme ça afin que je puisse remplacer la communication entre mes niveaux en utilisant WCF avec moins de difficultés.

J'ai configuré un conteneur de l'unité dans mon application MVC faire quelque chose comme ça (Global.asax):

container.RegisterType(); // MyService est dans ma logique métier couche

La classe MyService utilise mon référentiel dans son constructeur qui signifie que lorsque l'une de ces classes MyService est créé un MyRepository est également nécessaire:

MyService publique (dépôt IRepository): Base (référentiel) {}

Comme vous pouvez le voir, je n'ai toujours pas configuré IRepository dans mon conteneur.

Je ne veux pas le faire dans mon Global.asax car je ne veux pas ajouter de référence de Repository au niveau MVC (View).

Où est le meilleur endroit pour configurer ceci? Je suis un peu confus ici ....

Merci d'avance.

Répondre

1

Permettez-moi de vous dire ce que je l'ai fait jusqu'à présent:

J'ai créé une classe statique dans mon service et dépôt plus tard, je crée le conteneur unité dans mon View couche (MVC) et le passer à ces classes statiques, ils remplissent le conteneur avec ce dont ils ont besoin plus la couche suivante, par exemple la couche de service appelle aussi la classe statique dans mon référentiel.

De cette façon, je configure le conteneur avec tout ce dont j'ai besoin.

La question est: est-ce une bonne chose à faire?

2

Avez-vous essayé: http://mvcunity.codeplex.com/

+0

Lee, MVCUnity semble bon, mais je ne comprends pas comment cela va résoudre mon problème? Je n'ai aucune référence d'assembly à Repository dans mon application MVC. – Raha

0

Si nous utilisons Unity. nous pouvons implémenter une extension du conteneur Unity dans la couche du milieu et nous enregistrer dans la couche Présentation comme ci-dessous.

  //Data Layer dependency mapping as extension eg : IUnitOfWork 
      container.AddNewExtension<DependencyInjectionExtension>(); 

Plus de détails s'il vous plaît suivre l'article.

N-tier with DI (Unity)

Merci