Viele Leute im .NET-Umfeld haben Castle Windsor aufgegriffen und implementieren es in ihren Projekten, und seit einem Jahr kämpfe ich damit, herauszufinden, warum IoC-Container als allgemeine "Best Practice" behandelt zu werden scheinen? Ich habe eine Menge Zusammenfassungen und kurze Erklärungen über das Warum von Windsor und dergleichen gelesen, aber jede einzelne von ihnen ist in der Tat abstrakt und scheint für die meisten Projekte, mit denen ich zu tun hatte, nicht praktikabel zu sein, und doch bin ich in letzter Zeit auf viele Projekte gestoßen, die Windsor verwenden, und ich verstehe nicht, warum.
C#/.NET unterstützt von Haus aus schnittstellenbasierte Kodierung, abstrakte Objekte, Delegierte und Ereignisse. Man kann IoC direkt aus der Kernsprache heraus implementieren und mit Reflection und Ähnlichem unbekannte Instanzen instanziieren, die bekannte Schnittstellen implementieren, ohne auf IoC-Containerbibliotheken zurückgreifen zu müssen.
Bei der Anwendung von YAGNI/AYGNI (Are You Going To Need It?) habe ich das Gefühl, dass Windsor überstrapaziert wurde. Ich kann sicherlich die Vorteile eines IoC-Containers sehen, aber ich habe das Gefühl, dass diese Vorteile auf Kosten zusätzlicher Abhängigkeiten und Metadaten gehen (IoC-Container-spezifische Attribute und Methoden, die im Kerncode aufgerufen werden, .config-Dateien, die überall verstreut sind, app.config/web.config, die mit Binding-Tags gefüllt sind, die die Bearbeitung der .config-Datei erschweren, usw.), so dass ich versuche, den Kompromiss zu finden.
Allerdings akzeptiere ich die Möglichkeit, dass ich ALLE dieser Beobachtungen / Aussagen auf Unwissenheit, da ich noch nie stark mit einem Projekt, das Windsor oder andere IoC-Container-Bibliothek verwendet beteiligt gewesen. Was ich wirklich brauche, ist, dass jemand ein "durchschnittliches" oder "typisches" Projekt demonstriert, in dem eine IoC-Container-Bibliothek verwendet wurde, und warum dies angeblich eine "Best Practice" ist, wenn es mir so vorkommt, als würde es ein ansonsten sauberes Projekt mit Abhängigkeiten und Metadaten unordentlich machen.
Wenn jemand Blogbeiträge, Artikel oder Bücher kennt, die mich aufklären können, wäre das großartig.
(Ich argumentiere nicht um des Argumentierens willen, sondern weil ich wirklich wissen möchte, ob ich mich in Bezug auf IoC-Container weiterbilden sollte).