2008-09-05 9 views
1

Ich brauche unbedingt einen IoC Container, um Abhängigkeiten in einem immer komplexer werdenden System von Enterprise Services zu entkoppeln. Das Problem, mit dem ich konfrontiert bin, betrifft die Konfiguration (a.k.a.-Registrierung). Wir haben derzeit 4 verschiedene Umgebungen - Entwicklung zur Produktion und dazwischen. Diese Umgebungen haben zahlreiche Konfigurationen, die von Umgebung zu Umgebung leicht variieren; Aber in allen Fällen, dass kann ich derzeit an denken, Abhängigkeiten zwischen Komponenten unterscheiden sich nicht von Umgebung zu Umgebung, obwohl ich etwas verpasst haben könnte und/oder dies könnte sich natürlich ändern.IoC Container Konfiguration/Registrierung

Die ultimative Frage ist also, hat jemand eine ähnliche Erfahrung mit einem IoC-Framework? Oder kann jemand ein Framework vor einem anderen empfehlen, das eine flexible Registrierung ermöglicht, sei es durch eine Art Konvention oder vereinfachte Konfigurationsinformationen? Wäre ich immer noch in der Lage, von einer fließenden Oberfläche zu profitieren oder bin ich mit XML fest - ich möchte XML-Hölle vermeiden.

Bearbeiten: Dies ist eine. Net-Umgebung und ich habe Windsor, Ninject und Autofac betrachtet. Sie alle scheinen nun beide Registrierungsmethoden (fließend und XML) zu unterstützen, obwohl Autofacs Unterstützung für Lambda-Ausdrücke etwas anders aussieht als die anderen. Benutzt das jemand in einer ähnlichen Multi-Deployment-Umgebung?

Antwort

2

Ich verwende Ninject. Ich mag die Tatsache, dass ich Xml nicht verwenden muss, um die Abhängigkeiten zu konfigurieren. Ich kann einfach einen direkten C# -Code verwenden. Es gibt multiple ways, es auch zu tun. Ich weiß, dass andere Bibliotheken diese Funktion haben, aber Ninject bietet schnelle Instanziierung, es ist ziemlich leicht, es hat eine bedingte Bindung, unterstützt ein kompaktes Framework und es unterstützt Silverlight, 2.0. Ich benutze auch einen Wrapper darüber, falls ich ihn für ein anderes Framework in der Zukunft austausche. Sie sollten unbedingt Ninject ausprobieren, wenn Sie sich für ein Framework entscheiden.

1

Ich bin mir nicht sicher, ob es zu Ihrem speziellen Fall passt, Sie haben nicht erwähnt, auf welcher Plattform Sie arbeiten, aber ich hatte großen Erfolg mit Castle Windsor's IOC framework. Die Abhängigkeiten sind Setup in der Konfigurationsdatei (es ist ein .NET-Framework)

1

Betrachten Sie Ayendes Rhino Commons. Er verwendet eine Abstraktion über den IoC-Container. Damit können Sie jederzeit zwischen Containern wechseln. Etwas wie container.Resolve ist immer in jedem Container.

Ich verwende Structuremap, um die schmutzige Arbeit zu machen, es hat eine fließende Schnittstelle und die XML-Dinge und es ist stark genug für die meisten Dinge, die Sie tun möchten. Jeder hat seine eigenen Vor-und Nachteile, so ein wenig Abstraktion, so dass Sie leicht wechseln können (Sie wissen nie, wie lange sie in der Nähe sein wird) ist gut. Für den Rest denke ich, Spring.Net, Castle Windsor, Ninject und StructureMap sind nicht mehr so ​​weit auseinander.

3

Wenn Sie abstrahieren Ihren Container wollen, und in der Lage sein, verschiedene, zu verwenden, schauen Sie in das injizierbare in einer Weise, die ich versuchte, es zu tun here

+0

ich Throught Ihre Post schnell lesen - interessanter Ansatz, Sie haben genommen. Seit ich diese Frage gestellt habe, nutzte ich Ninject für ein großes Projekt und sah schnell den Vorteil, Container-spezifische Konstrukte wegzuspalten. Ich muss mir genauer ansehen, was Sie getan haben. Vielen Dank! –

Verwandte Themen