Ich arbeite an einem ASP.NET MVC-Projekt, bei dem wir uns entschieden haben, Fluent nHibernate für den Datenzugriff zu verwenden. Um eine lose Kopplung zu ermöglichen, verwenden wir ein IoC / DI-Muster. Meine Fragen sind, was IoC-Tool zu gehen. Ich habe versucht, die Unterschiede zwischen Windsor, Ninject, Frühling, Strukturplan und Einheit zu finden, aber es ist schwierig, die Vorteile zu sehen, die jeder Einzelne zu bieten hat. Was ist deine Erfahrung?
Ich benutze StructureMap und es ist sehr einfach zu benutzen. Persönlich möchte ich nicht mit xml konfigurieren und StructureMap macht es ein Kinderspiel, mit Code zu konfigurieren. Es ist auch sehr einfach, ein anderes Profil zu wählen, wenn Sie Implementierungen wechseln müssen.
Scott Hanselman hat einen ziemlich guten Vergleichs- / Kontrast-Artikel zu vielen der beliebten .NET IoCs:
Ich benutze Windsor und habe nichts zu meckern. Einfach zu bedienen, erweiterbar, wenn Sie es brauchen und viele Informationen, wenn Sie nicht weiterkommen. Aber ich glaube nicht, dass es so wichtig ist, welchen Container du wählst. Alle, die Sie erwähnen, haben die gemeinsamen Merkmale und es gibt auch Adapter für mvc, die im mvccontrib-Projekt verfügbar sind. Ein Wechsel zu einem anderen Container sollte nicht schwierig sein, wenn Sie den Container in eine eigene Klasse einpacken, was ohnehin eine gute Vorgehensweise ist.
Ich habe Windsor benutzt und liebe es. Es gibt eine eingebaute Einrichtung für die Verwendung von NHibernate, die eine einfache Konfiguration von Protokollierung und Verbindungen usw. ermöglicht.
Wenn Sie FluentNhibernate verwenden möchten, müssen Sie Windsor mitteilen, welche Baugruppe den ConfigurationBuilder hat. Mike Hadlow hat einen tollen Bericht über diese und viele andere auf Windsor und NHibernate: Ссылка
Ich verwende Munq , das leicht und schnell ist und eine einfache Möglichkeit bietet, einen DI-Container über Nuget zu MVC3-Projekten hinzuzufügen. Bisher habe ich keine Notwendigkeit gefunden, in einen anderen Rahmen zu wechseln - Munq war sehr angemessen.
%Vor% Dies fügt App_Start\MunqMvc3Startup.cs
zum Projekt hinzu, und hier sollten Abhängigkeiten registriert werden.
Tags und Links asp.net-mvc dependency-injection inversion-of-control fluent-nhibernate