Kann jemand Microsoft Unity erklären?
Ich habe beim Lesen der Artikel auf der MSDN-Website über Unity (Dependency Injection, Inversion of Control), aber ich glaube, ich brauche es einfach erklärt (oder einfache Beispiele). Ich bin vertraut mit der MVPC-Muster (wir verwenden es hier), aber ich kann es einfach nicht wirklich begreifen dieser Einheit, was noch, und ich denke, es ist der nächste Schritt in unserer Anwendung design.
Kommentar zu dem Problem
Ich Liebe es, wie dieser hat den gleichen Namen wie "Einheit" also, wenn ich bin auf der Suche nach der Unity-Game-Engine, Sachen, die ich sehen, diese alte tech, seufz. Alle gute band-Namen genommen, ich guesss.
InformationsquelleAutor der Frage Ryan Abbott | 2009-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einheit ist nur ein IoC - "container". Google StructureMap und probieren Sie es aus statt. Etwas einfacher zu verstehen, finde ich, wenn die IoC-Zeug ist neu für Sie.
Grundsätzlich, wenn Sie verstehen, IoC-dann werden Sie verstehen, dass das, was man tut, ist, invertieren die Steuerung, wenn ein Objekt erzeugt wird.
Ohne Ioc:
Mit IoC-container:
Ohne IoC, Ihre Klasse, die sich auf die IMyService hat zu neuen-bis eine konkrete version des service zu verwenden. Und das ist schlecht für eine Reihe von Gründen (Sie haben gepaart, Ihre Klasse zu einer konkreten version der IMyService, Sie kann nicht unit-testen Sie es einfach, Sie können nicht es leicht ändern, etc.)
Mit einem IoC-container, die Sie "konfigurieren" den container auflösen der Abhängigkeiten für Sie. Also mit einem Konstruktor-basierte Injektion Schema, Sie geben Sie einfach die Schnittstelle zu den IMyService Abhängigkeit in den Konstruktor. Beim erstellen der MyClass mit dem container, der container lösen, der IMyService Abhängigkeit für Sie.
Verwendung von StructureMap Konfiguration der container sieht so aus:
Also, was Sie getan haben, wird gesagt, die container, "Wenn jemand fordert, die IMyService, geben Sie Ihnen eine Kopie der SomeConcreteService." Und Sie haben auch angegeben, dass, wenn jemand fragt, für eine MyClass, bekommen Sie eine konkrete MyClass.
Dass ein IoC-container wirklich tut. Sie können mehr tun, aber das ist der Schub, der es - Sie Abhängigkeiten auflösen für Sie, so dass Sie nicht haben (und Sie nicht haben, verwenden Sie das Schlüsselwort "new" im gesamten code).
Letzter Schritt: wenn Sie Ihre MyClass tun Sie dies:
Hoffe, das hilft. Fühlen Sie sich frei, mir eine e-mail.
InformationsquelleAutor der Antwort Chris Holmes
Ich habe mir gerade die 30 Minuten-Einheit, Dependency Injection, IoC-Screencast von David Hayden und fühlte, dass war eine gute Erklärung mit Beispielen. Hier ist ein Ausschnitt aus der show notes:
Den screencast zeigt einige häufige Verwendungen der Einheit IoC, wie zum Beispiel:
InformationsquelleAutor der Antwort Kevin Hakanson
Einheit ist eine Bibliothek, wie viele andere, können Sie eine Instanz des angeforderten Typs die zimmerreserviereung, ohne das Sie selbst erstellen. Also gegeben.
Verwenden Sie eine Bibliothek, wie die Einheit zu registrieren Rechner zurückgegeben werden, wenn die Art ICalculator ist beantragt aka IoC (Inversion of Control) (dieses Beispiel ist theoretischer, technisch nicht korrekt).
So, jetzt, wenn Sie möchten, eine Instanz einer ICalculator Sie nur...
IoC-Bibliotheken kann in der Regel konfiguriert werden, um entweder einen singleton oder eine neue Instanz erstellen jedes mal, wenn Sie das Problem beheben Typ.
Nun lassen Sie uns sagen, Sie haben eine Klasse, die sich auf eine ICalculator anwesend zu sein, die Sie haben könnten..
Und Sie können setup die Bibliothek, um zu injizieren, ein Objekt in den Konstruktor, wenn er erstellt wird.
Also DI oder Dependency Injection bedeutet, injizieren jedes Objekt, andere erfordern möglicherweise.
InformationsquelleAutor der Antwort Chad Moran
Dieser Kerl WilcoxTutorials gibt eine hervorragende demonstration der Unity-container, richtet sich an Anfänger.
Teil 1: http://www.youtube.com/watch?v=CWwe9Z0Gyew
Teil 2: http://www.youtube.com/watch?v=PsIbevgzQQE
In weniger als einer halben Stunde, und Sie werden die Grundlagen zu verstehen!
InformationsquelleAutor der Antwort Ben Power
Einheit ist, die ein IoC. Der Punkt des IoC ist zu Abstrakt die Verdrahtung von Abhängigkeiten zwischen den Arten außerhalb der Arten selbst. Dies hat ein paar Vorteile. Zunächst erfolgt zentral, was bedeutet, Sie müssen nicht zu ändern, eine Menge code, wenn sich Abhängigkeiten ändern (was der Fall sein kann für unit-tests).
Darüber hinaus wird, wenn die Verdrahtung erfolgt mit der Konfigurations-Daten anstelle von code, können Sie tatsächlich rewire werden die Abhängigkeiten nach der Bereitstellung und damit das Verhalten der Anwendung ohne änderung des Codes.
InformationsquelleAutor der Antwort Brian Rasmussen
MSDN hat eine Developer ' s Guide to Dependency Injection Mithilfe von Unity, die nützlich sein können.
Den Developer ' s Guide beginnt mit den Grundlagen dessen, was dependency injection ist, und setzt sich Fort mit Beispielen zur Verwendung die Einheit für die dependency injection. Ab Februar 2014 die Developer ' s Guide deckt Unity 3.0, erschienen im April 2013.
InformationsquelleAutor der Antwort Simon Tewsi