2010-12-14 3 views
2

Ich habe ein kleines Problem herauszufinden, wie Unity IoC-Container in meiner n-Tier ASP.NET MVC-Anwendung konfigurieren.Konfigurieren von Unity in n-Tier ASP.NET MVC-Anwendung

Ich habe 3 Projekte in meiner Lösung: 1. MVC (als View): Hat referene-to-Business-Logik-Schicht nur 2. Business-Logik-Schicht: Hat sich an Repository-Projekt nur als Referenz 3. Respository: Ich habe keine, Verweis auf eines der oben genannten Projekte

Bitte beachten Sie die Art und Weise, wie meine Referenz funktioniert, ich habe es so gemacht, damit ich in der Lage bin, die Kommunikation zwischen meinen Tiers mit WCF mit weniger Schwierigkeiten zu ersetzen.

ich einen Unity Container in meiner MVC-Anwendung konfiguriert haben, so etwas wie dieser (Global.asax) tun:

container.RegisterType(); // MyService in meine Business-Logik-Schicht ist

Die MyService Klasse verwendet in seinem Konstruktor mein Repository was bedeutet, dass, wenn einer dieser MyService Klassen erstellt wird ein MyRepository auch erforderlich:

public MyService (IRepository Repository): base (Repository) {}

Wie Sie sehen können, habe ich IRepository noch nicht in meinem Container konfiguriert.

Ich möchte es nicht in meinem Global.asax tun, weil ich keine Referenz des Repository zu MVC (View) Tier hinzufügen möchte.

Wo ist der beste Ort, um dies zu konfigurieren? Ich bin irgendwie verwirrt hier ....

Vielen Dank im Voraus.

Antwort

1

Lassen Sie mich Ihnen sagen, was ich bisher tat:

ich später eine statische Klasse in meinem Dienst und Repository erstellt, erstelle ich den Container Unity in meiner Ansicht Layer (MVC) und übergeben Sie es an diese statischen Klassen, füllen sie den Container mit dem, was sie brauchen, plus die nächste Schicht, zum Beispiel Service-Layer auch die statische Klasse in meinem Repository.

So konfiguriere ich den Container mit allem, was ich brauche.

Die Frage ist: Ist das eine gute Sache zu tun?

2

Haben Sie versucht: http://mvcunity.codeplex.com/

+0

Lee sieht MVCUnity gut, aber ich verstehe nicht ganz, wie das ist mein Problem zu lösen? Ich habe keinen Assembly-Verweis auf Repository in meiner MVC-Anwendung. – Raha

0

Wenn wir Unity verwenden. Wir können eine Erweiterung des Unity-Containers in der mittleren Ebene implementieren und wie unten in der Präsentationsschicht registrieren.

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

Weitere Details folgen Sie bitte Artikel.

N-tier with DI (Unity)

Dank