7

Ich versuche, DI/IoC Programmiermethodik in unsere Entwicklungsgruppe, aber einer der Entwickler einzuführen fragte die folgende Frage:Hilfe bekommen DI/IoC im Haus

Warum wir es brauchen? Gibt es ein konkretes Beispiel, das mir den Nutzen eines DI/IoC-Frameworks wie Windsor Castle zeigen kann?

Daher frage ich, ob es irgendwelche Fallstudie oder Artikel gibt, die beweisen, dass DI/IoC in einer Enterprise-Level-.NET-Website profitieren kann?

Vielen Dank im Voraus

Update: Ich bin mir bewusst, alle zugunsten von DI/IoC bringt, aber ich habe noch ein komplettes Beispiel über das Internet, um zu sehen, die eine App zu schaffen DI über einen gesamten Prozess geht Nutzung/IoC und profitieren Sie davon. Wieder würde jeder Artikel oder Links geschätzt werden.

+3

Ich wäre genauso vorsichtig wie dieser Entwickler, wenn Sie versuchen würden, eine Programmiermethodik für mein Projekt einzuführen und diese Frage nicht beantworten könnten. – JoshJordan

+0

Vereinbart mit Josh, wenn es sich anhört und aussieht wie Schlangenöl, ist es wahrscheinlich ... (es sei denn, ich versuche TDD dem Team beizubringen, LOL) – dferraro

Antwort

6

Ich bin an einem Projekt arbeiten, wo ich mindestens drei Vorteile für Dependency Injection und Inversion of Control sehen:

  1. die Flexibilität DI und, in geringerem Maße, erlauben IoC wie es bezieht sich auf Komponententest. Wir können einen bestimmten Aspekt des Codes (oder des zu testenden Systems) auf Null setzen und dieses bisschen Funktionalität testen, ohne eine Datenbanktabelle vorbereiten zu müssen oder den Launen von Codeabschnitten zu unterliegen, mit denen wir uns momentan nicht befassen.

  2. Das Einfügen von Abhängigkeiten über IoC ist eine ziemlich nahtlose, automatische Sache, und es erlaubt Menschen, an Logik zu arbeiten, ohne dass die zugrunde liegenden Support-Klassen vollständig sein müssen. Zum Beispiel kann ich eine Webseite schreiben, die eine Liste von Benutzern zeigt, ohne Code geschrieben zu haben, um diese Informationen von der Datenbank abzurufen. Das kann von jemand anderem geschrieben werden, möglicherweise parallel, sodass mehr Arbeit in kürzerer Zeit erledigt werden kann.

  3. Bei einem meiner aktuellen Projekte möchte ich die Möglichkeit haben, die Web-Benutzeroberfläche und die Back-End-Verarbeitung für einen der Beteiligten zu demonstrieren. Dies wird durch DI und IoC so viel einfacher gemacht, weil ich eine Sammlung von Fälschungen haben kann, die genau die Daten liefern, die ich für die Durchführung der Demo benötige. Auf diese Weise flippe ich nicht am Tag zuvor aus und stelle sicher, dass die Datenbanktabellen so ausgefüllt sind, wie ich es erwarte.

DI fördert eine lose Kopplung zwischen einer bestimmten Klasse und ihre Abhängigkeiten, während IoC uns erlaubt, dynamisch zu konfigurieren, welche Implementierungen dieser Abhängigkeiten in Klassen injiziert werden, die sie verwenden. Letzteres ist wichtig in Bezug auf # 3, da meine Webanwendung basierend auf den Einstellungen, die ich in der Datei web.config vorgenommen habe, am häufigsten mit IoC konfiguriert wird. Ich werde nur diese Datei ändern müssen, wenn wir in die Produktion gehen und anfangen, nicht-falsche Klassen zu verwenden.

6

die wenigen besonderen Vorteile zu nennen:

  • Reiniger Code, die die Essenz Ihrer Business-Logik in sich trägt, nicht die infrastrukturellen Dicke
  • DI ermöglicht es Ihnen, durch die Bereitstellung eines Mechanismus modularer Anwendungen zu erstellen zum Entkoppeln Ihrer App-Schichten
  • IoC ermöglicht es, Application Wiring/Bootstrapping externalize und bietet eine zentrale (Art von) Ressourcen-Management (bis zu einem gewissen Grad).Implikation - Sie haben mehr Zeit auf der tatsächlichen Funktionalität/Geschäftslogik

Einige gute Informationen über IoC und DI konzentrieren können Sie hier lesen: http://www.theserverside.com/tt/articles/article.tss?l=IntrotoSpring25

Zugegeben, es über Spring Framework ist, allgemeine DI Konzepte gelten nach wie vor .

Verwandte Themen