Frage

Ich muss unbedingt einen IoC-Container verwenden, um Abhängigkeiten in einem immer komplexer werdenden System von Unternehmensdiensten zu entkoppeln.Das Problem, mit dem ich konfrontiert bin, hängt mit der Konfiguration zusammen (auch bekannt alsAnmeldung).Wir haben derzeit vier verschiedene Umgebungen – von der Entwicklung bis zur Produktion und dazwischen.Diese Umgebungen verfügen über zahlreiche Konfigurationen, die von Umgebung zu Umgebung leicht variieren;jedoch in allen Fällen das Kann ich mir derzeit vorstellen, Abhängigkeiten zwischen Komponenten unterscheiden sich nicht von Umgebung zu Umgebung, obwohl ich etwas übersehen haben könnte und/oder sich dies offensichtlich ändern könnte.

Die ultimative Frage ist also: Hat jemand eine ähnliche Erfahrung mit einem IoC-Framework?Oder kann jemand ein Framework einem anderen vorziehen, das eine flexible Registrierung ermöglicht, sei es durch eine Art Konvention oder vereinfachte Konfigurationsinformationen?Könnte ich immer noch von einer flüssigen Schnittstelle profitieren oder bleibe ich bei XML – ich möchte die XML-Hölle vermeiden.

Bearbeiten: Dies ist eine .Net-Umgebung und ich habe mir Windsor, Ninject und Autofac angesehen.Sie alle scheinen jetzt beide Registrierungsmethoden (Fluent und XML) zu unterstützen, obwohl die Unterstützung von Autofac für Lambda-Ausdrücke ein wenig anders zu sein scheint als die der anderen.Verwendet das jemand in einer ähnlichen Umgebung mit mehreren Bereitstellungen?

War es hilfreich?

Lösung

ich benutze Ninject.Mir gefällt die Tatsache, dass ich kein XML verwenden muss, um die Abhängigkeiten zu konfigurieren.Ich kann einfach direkten C#-Code verwenden.Es gibt mehrere Möglichkeiten es auch zu tun.Ich weiß, dass andere Bibliotheken über diese Funktion verfügen, aber Ninject bietet eine schnelle Instanziierung, ist ziemlich leichtgewichtig, verfügt über bedingte Bindung, unterstützt kompakte Frameworks und unterstützt Silverlight 2.0.Ich verwende darüber hinaus auch einen Wrapper, für den Fall, dass ich ihn in Zukunft gegen ein anderes Framework austauschen möchte.Wenn Sie sich für ein Framework entscheiden, sollten Sie unbedingt Ninject ausprobieren.

Andere Tipps

Wenn Sie Ihren Behälter abstrahieren und verschiedene verwenden möchten, prüfen Sie, ob er auf eine injizierbare Weise verfügbar ist, wie ich es versucht habe Hier

Ich bin mir nicht sicher, ob es für Ihren speziellen Fall geeignet ist. Sie haben nicht erwähnt, auf welcher Plattform Sie arbeiten, aber ich habe damit große Erfolge erzielt Das IOC-Rahmenwerk von Castle Windsor.Die Abhängigkeiten werden in der Konfigurationsdatei eingerichtet (es ist ein .NET Framework).

Schauen Sie sich Ayendes Rhino Commons an.Er verwendet eine Abstraktion über den IoC-Container.Damit Sie jederzeit den Container wechseln können.So etwas wie „container.Resolve“ ist immer in jedem Container vorhanden.

Ich verwende Structuremap, um die Drecksarbeit zu erledigen. Es verfügt über eine flüssige Schnittstelle und die XML-Dinge und ist leistungsstark genug für die meisten Dinge, die Sie tun möchten.Jeder hat seine eigenen Vor- und Nachteile, daher ist eine kleine Abstraktion, damit Sie leicht wechseln können (man weiß nie, wie lange sie verfügbar sein werden), gut.Im Übrigen denke ich, dass Spring.Net, Castle windsor, Ninject und StructureMap nicht mehr so ​​weit voneinander entfernt sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top