Тёмный

Was sind DI Container? 

David Tielke
Подписаться 17 тыс.
Просмотров 10 тыс.
50% 1

Ein DI Container bzw. ein DI Framework ist eine Framework (Autofac, Ninject, Zenject, Spring DI etc.) um Dependency Injection und Inversion of Control (beides sind Design Patterns) einfach und sauber in eine Softwarearchitektur zu integrieren um hohe Softwarequalität zu erreichen. Der in solchen DI Frameworks enthaltene DI Kernel (anderes Wort für DI Container) erlaubt es lose Kopplung in der Anwendung zu erreichen. Aber um einen solchen DI Container wirklich nutzen zu können, muss auch die Theorie und der Grund eines solchen DI-Container verstanden und verinnerlicht werden. Genau deshalb schauen wir uns in diesem Video die Theorie hinter DI Container an und zeigen am Ende auch noch, wie er richtig in der Softwarearchitektur eingesetzt werden kann.
▬ Über diesen Kanal ▬▬▬▬▬▬▬▬▬▬▬▬
Seit vielen Jahren arbeite ich als Consultant, Coach und Trainer für professionelle Softwareentwicklung mit den Schwerpunkten Softwarequalität, Softwarearchitektur sowie Prozessmanagement. Auf meinem Kanal möchte ich Euch mein Wissen und meine langjährige Erfahrung in diesen Bereichen vermitteln - natürlich kostenlos. Dabei versuche ich stets Euch das Wissen so zu vermitteln, dass Ihr damit direkt in der Praxis loslegen könnt und das ganze immer mit guten Portion Humor. Lernen soll ja schließlich Spaß machen :)
▬ Empfohlene Videos ▬▬▬▬▬▬▬▬▬▬▬▬
Dependency Injection - • Dependency Injection
Wie viel Softwarequalität Ihr braucht - • Architekturen - Von Mo...
Warum Software unwartbar wird - • Warum Software unwartb...
Architektur - Modularisierung - • Architektur - Modulari...
Was ist Architektur - • Was ist Architektur?
Warum Architektur - • Warum Architektur für ...
▬ Wichtige Links ▬▬▬▬▬▬▬▬▬▬▬▬
Abonniere meinen Kanal: / @davidtielke
Alle Videos: / @davidtielke
▬ Social Media ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
► Twitter: / davidtielke
► Xing: www.xing.com/profile/David_Ti...
► LinkedIn: / david-tielke-06140912b
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Наука

Опубликовано:

 

27 апр 2020

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 40   
@DavidTielke
@DavidTielke 4 года назад
Wenn Euch das Thema interessiert, solltet Ihr den Kanal abonnieren - zu dem Thema gibt es in den nächsten Tagen / Wochen noch mehr Videos!
@tracetv8115
@tracetv8115 3 года назад
Deine Erklärungen sind großartig! Jeder Anfänger, Fortgeschrittener sollte dieses Video sehen, da es exzellent, nachvollziehbar und logisch aufgebaut ist. Vielen Dank für deine Mühe!
@DavidTielke
@DavidTielke 3 года назад
Hey, sehr gerne - schön das Dir das Video gefällt. Gruß David
@cueware9277
@cueware9277 4 года назад
Ich liebe deine Videos.... Warum? Weil ich es einfach verstehe, was du vermitteln möchtest. Deine Didaktik ist einfach klasse! Vielen Dank! Ich denke heute geht´s zum Lidl Bier und Chipse kaufen :)
@DavidTielke
@DavidTielke 4 года назад
Hey, schön wenn Dir das Video gefällt und Dir mein Stil der Wissenvermittlung liegt - das freut mich wirklich sehr :) Gute Idee, trink einen für mich mit :) Gruß David
@CedricReinsch
@CedricReinsch 10 месяцев назад
Vielen Dank für dieses Video. Tatsächlich habe ich genau einen solchen FUP in meiner Architektur. Das hat mich von Anfang an gestört und und ich war bis heute auf der Suche nach einer passenden Lösung. Mein Konstruktor ist über 200 Zeilen lang und macht nix anderes als Initialisierungen und DIs basierend auf einem einzigen Parameter (das wäre jetzt der Kernel). 🙏🏻
@martinl9574
@martinl9574 4 года назад
Endlich Mal eine komplette Einführung. Gerade der letzten Teile mit Scopes und der Anwendung in einer Schichtarchitektur fehlen in vielen Tutorials
@DavidTielke
@DavidTielke 4 года назад
Hallo Max, schön das Dir das Video zusagt :) Klasse das Du das auch so siehst, dieser Teil fehlte mir in den anderen Tutorials einfach und ohne den ist es schwer den wahren Sinn von DI Containern zu verstehen. Gruß David
@wollederweise4384
@wollederweise4384 Год назад
Ich habe mir immer genau diese Form der Wissenvermittlung gewünscht. Sehr angenehm vorgetragen, kurz und knapp auf das Wesentliche heruntergebrochen und dabei trotzdem so detailliert und an einfachen Beispielen erklärt, dass das Konzept verständlich genug geworden ist, um es sofort umsetzen zu können. Perfekt, genau so soll es sein. Vielen Dank dafür! 👍
@bookswiper
@bookswiper Год назад
Dieses Video ist echt genial. Man lernt soviel über die Softwarentwicklung, dass ich mir wünschte es schon viel früher gesehen zu haben. Unbedingt bis zum Schluss dranbleiben.
@markusenzlberger3501
@markusenzlberger3501 4 года назад
Thema hast du gut aufbereitet und präsentiert.
@DavidTielke
@DavidTielke 4 года назад
Hallo Markus, danke für das Feedback, schön das Dir das Video gefällt :) Gruß David
@andreasduck540
@andreasduck540 2 года назад
So unfassbar gute Videos! Weiter so. Die Videolänge ist perfekt.
@neorack
@neorack Год назад
länge der Videos ist genau richtig so wie sie sind. Bitte weiter so
@mashinc5425
@mashinc5425 Год назад
Super Video!
@FlyingSebastian
@FlyingSebastian Год назад
Vielen Dank! Ein wirklich guter Beitrag!👍
@frankmuller6227
@frankmuller6227 Год назад
David, mal wieder ein sehr gutes Video! 👍
@mobbelalerts8116
@mobbelalerts8116 2 года назад
Einfach nur cool
@DavidTielke
@DavidTielke 2 года назад
Danke :)
@bookswiper
@bookswiper Год назад
Super Video wie immer vielleicht könntest Du auch zu den erwähnten Generics ein Video machen.
@nerdact5920
@nerdact5920 2 года назад
Hi David! Ich find deine Videos echt klasse, aber wollte mal fragen, ob du Timestamps einfügen könntest? Grade wenn man mal wieder zu einem Video zurück kommt, oder zu einem Teilbereich eine Frage hat, finde ich das sehr hilfreich. Vielen Dank für den ganzen Content! :)
@DavidTielke
@DavidTielke 2 года назад
Hey, ja ich verstehe Dein Anliegen total, damals als dieses VIdeo veröffentlicht wurde, gab es noch keine Kapitel und Timestamps hier bei RU-vid - mittlerweile natürlich schon, allerdings habe ich das bisher bei den alten Videos noch nicht nachgezogen. Packe ich aber mal auf die Todo-Liste, vielen Dank für das Feedback! Gruß David
@Schnickalodeon
@Schnickalodeon 2 года назад
Erstmal: Wie immer super informatives Video, von dem ich auch das allermeiste verstanden habe. Danke dafür! Die Frage die jetzt offen geblieben ist, ist die Implementierung. Würde man jetzt noch eine neue Klasse erstellen (mit dem Namen Kernel) welche dann IKernel implementiert? Weil so wie in dem Video macht doch die Aufrufe AddMapping in den Zeilen 12-15 nichts - oder habe ich das falsch verstanden? LG
@DavidTielke
@DavidTielke 2 года назад
Hey, Die Implementierung wird durch das entsprechende DI Framework übernommen - das war nur ein Beispiel. In jeder Sprache und auf jeder Plattform gibt es meist viele verschiedene DI-Frameworks die das hier gezeigt leisten können. Gruß David
@Kolumbus69
@Kolumbus69 8 месяцев назад
Hallo David, danke erstmal für deine großartige Kanal. Bei IKernel kernel=null kriege ich die Warnung "Converting null literal or possible null value to non-nullable type" und daraus resultiert bei der Ausführung eine System.NullReferenceException: Object reference not set to an instance of an object.
@shadowfoxde6716
@shadowfoxde6716 2 года назад
Sehr gutes Video, danke! Eine Frage nur: In welches Projekt schreibst du die jeweiligen Interfaces? Sollten ja wahrscheinlich auch gebündelt separiert werden, sonst existieren wieder Abhängigkeiten zwischen den Projekten
@DavidTielke
@DavidTielke 2 года назад
Hallo, vielen Dank! Schau mal hier: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-Z8RdZyJPLvs.html Da wird erklärt wo die Interfaces hin sollten ;) Gruß David
@schnellgelernt1832
@schnellgelernt1832 5 месяцев назад
Kunnst du mal ein video machen zu "structured logging" ?
@ItsMe-fj1co
@ItsMe-fj1co Год назад
Gibt es dazu bereits ein konkretes video? Also explizit was am Ende gezeigt wurde?
@Moriarty1982
@Moriarty1982 Месяц назад
Mal ne allgemeine Frage die jetzt nicht direkt was mit dem Video zu tun hat. Wäre es nicht theoretisch möglich die ganzen Schnittstellen in einem F#-Projekt zu erstellen? So von dem was ich bisher über F# gehört habe, sollte die Sprache gerade besonders gut zum entkoppeln geeignet sein. Und wenn ja, gibt es da bereits ein Video zu?
@unknowndev3319
@unknowndev3319 Год назад
Wo genau liegt auch der Vorteil daran, mehrere Services zu haben, wenn man zum Beispiel von SQL zu Mongo wechselt? Wo liegt der Nachteil, wenn man die Zugriffsmethoden in einer statischen Klasse hat und diese Methoden dann einfach ändert? Dann müsste am Rest des Codes ja auch nichts mehr geändert werden und man hätte keine obsoleten Klassen mehr.
@michaelkersten8678
@michaelkersten8678 4 года назад
Mal wieder ein tolles Video und super erklärt! Aber der Ton... Kleiner Tipp: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-1l86SOlxyps.html
@DavidTielke
@DavidTielke 4 года назад
Hallo Michael, schön das es Dir (teilweise) gefällt. Ja, dafür muss ich mich entschuldigen - es ist aber nur in den ersten Abschnitten, danach sollte er sauber sein. Das Problem ist weniger der Mikrofonpegel sondern die Aufnahmesoftware (OBS). Das Mikrofon ist in jeder Anwendung perfekt gepegelt, nur in OBS übersteuert es aus irgendeinem Grund und ich habe keine Chance (weder mit Pegel noch mit Filter) dagegen etwas zu machen - das Problem haben mehrere aber niemand kennt eine Lösung dazu. Es scheint als wenn das Signal schon vor dem "Eintreffen" in OBS übersteuert zu sein (die Signalspitzen sind abgeschnitten). Aber Du hast mein Wort: ich arbeite daran! Mich selber stört das aber ebenfalls daher finde ich es gut, dass Du mir da (wenn auch negativ) zustimmst :) Das Video ist übrigens trotzdem klasse :) Gruß David
@DavidTielke
@DavidTielke 4 года назад
Ok, erst probieren und dann rechtfertigen hilft meistens... In der Tat hast Du damit mein Problem gelöst, ich habe das mit dem Pegel schlichtweg falsch verstanden und durch das Verstärken beim Nachbearbeiten zu viel Rauschen reingebracht, was dann alles so verzerrt hat :) Vielen lieben Dank, ich war seit Tagen einfach auf dem falschen Lösungsweg - jetzt klingt es besser :) Top! Danke! Gruß David
@michaelkersten8678
@michaelkersten8678 4 года назад
@@DavidTielke freut mich das ich helfen konnte! 😃 Und ja, das video bekommt von mir trotzdem einen Daumen nach oben! 👍😁
@woife4069
@woife4069 2 года назад
Manager???? so heißen Gottklassen!
@hendrikj.382
@hendrikj.382 2 года назад
#fragdavid Asp .Net Core bringt ja schon seinen eigenen DI Container mit, den man in der Methode ConfigureServices konfigurieren kann. Reicht das oder sollte man die IServiceCollection , die sich in der Assembly Microsoft.Extensions.DependencyInjection.Abstractions befindet, noch mal zusätzlich entkoppeln? Danke für die sehr informativen Videos!
@AS-kw1ob
@AS-kw1ob 2 года назад
Wäre tatsächlich jetzt auch meine Frage. Baue gerade ne API also API Layer, Logic Layer und Data access layer. Jetzt ist das Problem, dass ich für den vorhandenen Container in Startup.cs den API Layer in den anderen Layern referenzieren müsste. Jetzt weiß ich nicht genau, wie ich diesen Container aus der API raus und in ein eigenes Class Library Projekt bekomme.
@DavidTielke
@DavidTielke 2 года назад
Hey, das hängt stark davon ab was Ihr machen möchtet - wenn Du nur in Deinem UI-Projekt die Mappings machst, geht das schon so. Wenn Du aber in Deiner Anwendung den Container "herumreichen" möchtest, würde ich Ihn mit einem Adapter-Pattern entkoppeln. Gruß David
@hendrikj.382
@hendrikj.382 2 года назад
@@DavidTielke Hey, vielen Dank für alle Antworten :) War alles sehr verständlich!
Далее
Dependency Injection
36:51
Просмотров 18 тыс.
Softwarearchitektur - Komponenten schneiden
42:29
Просмотров 7 тыс.
Rope climb tutorial !! 😱😱
00:22
Просмотров 1,6 млн
Software Design mit Namensmustern
19:52
Просмотров 8 тыс.
Software Metriken - Cyclomatic Complexity
16:27
Просмотров 1,7 тыс.
Warum jeder Entwickler lernen muss, sich zu ändern
21:22
Refactoring von Martin Fowler - Ein Überblick
13:31
Will the battery emit smoke if it rotates rapidly?
0:11
Best mobile of all time💥🗿 [Troll Face]
0:24
Просмотров 1,9 млн