22 Nov
2010

StructureMap und MVC 3: Intialisierung und Verwendung

 

Ich verwende als IoC-Container sehr gerne StructureMap, dies hauptsächlich weil man dort sehr einfach einen Großteil der Registrierung der Componenten über Konventionen erledigen kann.

In ASP.NET MVC 3 RC gibt es nun eine einige Änderungen gegenüber AS.NET MVC 2. Nun veröffentliche ich deshalb hier meinen Standard-Initialisierungscode für StructureMap und MVC 3. Darauf aufbauen müssen natürlich die Besonderheiten der Anwendung berücksichtigt werden. Aber es ist ein guter Startpunkt.

Die Standard-Konventionen

Hiermit werden die möglichen Komponenten in MVC 3 registriert: Somit müssen ModelBinder und Validatoren etc. nicht mehr manuell den einzelnen Aufzählungen hinzugefügt werden. Es reicht sie im Container zu haben. Dazu muss nur der DepencyResolver hinzugefügt werden.

Auch werden alle bekannten Typen im Container für die Property-Injection definiert.

Controller Konvention

Die Konvention damit alle Controller gefunden werden.

DependencyResolver

Eine ControllerFactory braucht man nicht mehr. Es gibt nun IDependencyResolver, welches innerhalb von MVC 3 verwendert wird um einen Großteil der MVC 3 Komponenten zu instanzieren. Möchte man wirklich noch weiteren Einfluss auf die Controller Erstellung nehmen, so implementiert man nur noch den IControllerActivator.

Property Injection bei ActionFilter-Attributen

Möchte man in den Filter-Attributen Property Injection verwenden – da Constructor Injection nicht möglich ist – so kann man dies nun auf folgende Weise machen, ohne wie bei MVC 2 einen eigenen ControllerActionInvoker bauen zu müssen.

Für Property Injection bei einem ActionResult muss man weiterhin einen angepassten ControllerActionInvoker implementieren.


Der Eintrag ist mir etwas Wert
 
Comments have been closed on this topic.