Ich starte gerade ein neues Prism.Forms-Projekt und frage mich, mit welchen der verschiedenen IoC-Container (Autofac, Dryloc, Ninject oder Unity) es am besten wäre, weiterzumachen.
Ich weiß nicht, ob das stimmt, aber ich habe irgendwo gelesen, dass Unity nicht mehr aktiv entwickelt wird und da dies und MEF die einzigen IoC-Container sind, die ich je benutzt habe, bin ich unsicher, ob es der richtige Weg ist .
Inzwischen weiß ich wenig oder nichts über Autofac, Dryloc oder Ninject.
Bitte seien Sie in jeder Beratung objektiv und begründen Sie, warum Sie sich besser fühlen als die anderen und nicht einfach "Ich benutze xxx "; Ich möchte eine informierte Entscheidung treffen.
Das Beste, was ich tun kann, ist, die Fakten so zu gestalten, wie sie derzeit stehen.
Unity ist der beliebteste Container, da er der Container ist, den Brian seit Jahren verwendet, und der erste (und lange Zeit) Container, der in den Vorlagen verfügbar ist. Es war ziemlich lange her, ohne gewartet zu werden, aber das Projekt hat einen neuen Betreuer. Es ist erwähnenswert, dass es einige unheilvolle Änderungen in Unity 5 gab, die eine Aktualisierung auf Unity 5 mit Prism 6.3 unmöglich machen. Prism hat jedoch auf allen Plattformen in Prism 7 auf Unity 5 aktualisiert. Unity ist auch hinsichtlich der Benchmark-Leistung durchschnittlich.
Autofac, obwohl es beliebt ist, ist ein Behälter, von dem ich generell abraten würde. Die Leute scheinen von der API sehr verwirrt zu sein. In Prism 6.3 leidet es für eine wirklich schlechte Implementierung. Prism 7 führt einige bahnbrechende Änderungen ein und hat viele Probleme rund um die Registrierung gelöst, indem es Ihnen den ContainerBuilder zur Verfügung stellt, der von PrismApplication verwendet wird. Da die Autofac-Community darauf besteht, den Container nicht veränderbar zu machen, wird es immer ein Container sein, den ich nicht empfehlen kann. Während es für einfache Apps funktioniert, verhindert es die Verwendung fortgeschrittener Prism-Funktionen wie Modularität.
Ninject ist in Ordnung. Es ist sicherlich der am wenigsten genutzte Container, und aus den Benchmarks der verschiedenen Container ist es auch der langsamste. Prism 6.3 verwendet Portable.Ninject, das ein totes Projekt zu sein scheint. Prism 7.0 verwendet das offizielle Ninject-Paket. Nach 13 Monaten ohne Updates auf v4.0 hat Ninject endlich ein neues netstandard Paket (v3.3) veröffentlicht, das Ninject Benutzer dazu zwingen wird netstandard2.0 zu benutzen.
DryIoc ist der Container, den ich am meisten benutze und empfehle. Es ist in der aktiven Entwicklung, es ist sehr schnell und funktioniert gut mit der aktuellen Version von Prism. Wichtig ist auch, dass der Betreuer, wenn ich Fragen oder Probleme hatte, sehr schnell das Problem ansprach oder die Frage beantwortete, die ich hatte. Aus all diesen Gründen empfehle ich den Container weiter.
Bemerkenswert ist, dass wir mit Preview 5 von Prism 7 die Container abstrahiert haben. Dadurch wird es wesentlich einfacher, zwischen den Containern Ihrer Wahl zu wechseln, da die API hinsichtlich der Registrierung Ihrer Services und Views genau gleich ist. Sie haben weiterhin Zugriff auf den Container und im Falle von Autofac den ContainerBuilder über Erweiterungsmethoden, so dass Sie komplexere Registrierungen durchführen können.
%Vor%Tags und Links ioc-container xamarin.forms inversion-of-control prism-6