- Популярные видео
- Авто
- Видео-блоги
- ДТП, аварии
- Для маленьких
- Еда, напитки
- Животные
- Закон и право
- Знаменитости
- Игры
- Искусство
- Комедии
- Красота, мода
- Кулинария, рецепты
- Люди
- Мото
- Музыка
- Мультфильмы
- Наука, технологии
- Новости
- Образование
- Политика
- Праздники
- Приколы
- Природа
- Происшествия
- Путешествия
- Развлечения
- Ржач
- Семья
- Сериалы
- Спорт
- Стиль жизни
- ТВ передачи
- Танцы
- Технологии
- Товары
- Ужасы
- Фильмы
- Шоу-бизнес
- Юмор
Пишем с нуля Dependency Injection на C#/.NET | От "Hello World" до Autofac/NInject/MS DI
#DevJungles #dotnet #DI
Telegram канал Dev Jungles - https://t.me/DevJungles
GitHub Link: https://github.com/podkolzzzin/DI.Ideas
Поддержать канал можно:
- Спонсорством на YouTube
- Переводом на карту или пополнением банки монобанка:
Dev Jungles YouTube Channel Fund
https://send.monobank.ua/jar/7iAP3sZkm9
Номер карты банки:
5375 4112 0230 1466
- Или криптой:
BTC - 18C3jsFYwviN5FvzpAt4uMWRfUeVKvdWxy
ETH - 0x2903f63ba9009732272e91a299053b9d7b623216
USDT on ERC20 - 0x2903f63ba9009732272e91a299053b9d7b623216
USDT on TRC20 - TSmS5RzQKbWdxZkoM2oRo9HK8FYBaq744T
LTC - LN3CkrnvZLZTXDUhqTy1gUKMVpLjEPA4G2
DOGE - DPwon439jf3axVSBwyuXso6z7CivuJF655
AAVE - 0x2903f63ba9009732272e91a299053b9d7b623216
Waves - 3P8D57Zw7CrqW2o7dHpvZR2UzAzQRFA2kZd
Сейчас в любом проекте используется DI. В Asp.NET Core, есть встроенный контейнер, впрочем это не мешает часто использовать и сторонние контейнеры. Я, например, большой фанат такого контейнера как Autofac, знаю есть еще те, кто любит NInject или Unity.
Наверное, почти каждый задумывался о том как они работают. Кто-то примерно понимает как можно сделать что-то подобное, кто-то и близко не представляет. Стрим подойдет и для тех и для других. Первые узнают как самый простой вариант можно разогнать и какой performance он выдаст в сравнении со другими контейнерами, а последних я аккуратно и нужно проведу сквозь все нюансы этого в режиме livecoding.
Будет и Benchmarking и Reflection.Emit и деревья выражений(Expression Trees), может даже успеем немного коcнуться Source Generators.
Рубрика "Строим с нуля" на канале мне кажется наиболее ценной. Она на все 100% авторская, я сам придумываю код и прорабатываю как его по шагам лучше всего донести. Изучая что-либо я до конца мог разобраться в вопросе только создав что-то подобное с нуля: изучая коллекция я писал свои, изучая WinForms делал свою систему контролов итд. И когда проходишь такой путь, то он гравируется на подкорке мозга навсегда. Ты можешь забыть какие-то детали, но общий принцип останется с тобой навсегда. А значит используя готовые решения ты всегда будешь буквально чувствовать, как оно себя поведет в той или иной ситуации - ведь ты будешь знать почему.
Таймкоды:
0:00 - Вступление
0:53 - Основная идея!
2:14 - Дополнительные темы.
6:52 - Обзор чатика, новости канала.
11:40 - Что почитать про многопоточку 👀.
12:13 - Пояснил за DI , IoC , DIP 🔥.
18:20 - Начинаем разработку.
21:09 - Создаем пример DI контейнера .
24:04 - Transient , Scoped , Singletone 🔥.
25:40 - Структура DI контейнера .
28:21 - class ServiceDescriptor .
32:09 - пример ContainerBuilder .
34:01 - Методы расширения IContainerBuilder .
41:17 - Проверка чатика #1.
43:17 - Реализация IContainerBuilder и IContainer .
44:58 - Допиливаем недостающие классы и методы.
48:57 - метод CreateInstance() .
53:34 - Проверка DI контейнера .
56:45 - Приватные констуркторы - ваше личное дело. 😂
1:00:35 - Проверка чатика #2
1:02:29 - Кеширование метаданных и не только.
1:10:18 - Реализация методов RegisterTransient и Scope .
1:19:07 - Чатик попыл. 😂
1:12:54 - Реализация уничтожения объектов.
1:24:10 - Глубина проблемы и её решение.
1:32:15 - Проверка чатика #3
1:34:00 - Почему ConfigureAwait(false) ? 👀
1:34:18 - Объяснение ValueTask 👀.
1:36:55 - Оптимизация производительности DI контейнера .
1:43:25 - BaseActivationBuilder class.
1:52:11 - Прокидвание ActivationBuilder в DI контейнер .
1:57:34 - Бенчмарки для *DI контейнера*.
2:09:36 - Кейс использования Transient вместо Scope.🔥
2:11:01 - Анализ Бенчмарков.
2:12:07 - Добавления MS DI и Autofac для сравнения быстродействия.
2:19:05 - Кто какой контейнер использует на проектах.
2:21:28 - Какой lifetime использовать для DbContext? 🔥.
2:23:04 - AddDbContextPool() 🔥.
2:25:56 - Перезапуск бенчмарков.
2:27:32 - Неведомая причина создания DbContext вне контейнера.
2:32:51 - Проверка чатика #4
2:35:11 - Получили результаты бенчмарков.
2:36:20 - Как MSDI работает так быстро? 😳
2:46:16 - Как сбилдить кусок .Net Runtime и получить искомую сборку. 🤯
2:52:32 - Волшебные сборки от MSDI.
2:55:24 - Как это сделали Autofac ?
2:58:42 - Интеграция DI контейнера в ASP.
3:03:03 - Как заработать на 40 летних менеджерах по продажам #ВыИТиИзИт.😂
3:05:05 - Monitor vs ConcurrentDictionary в MS DI.
Видео Пишем с нуля Dependency Injection на C#/.NET | От "Hello World" до Autofac/NInject/MS DI канала Dev Jungles - Andrii Podkolzin
Telegram канал Dev Jungles - https://t.me/DevJungles
GitHub Link: https://github.com/podkolzzzin/DI.Ideas
Поддержать канал можно:
- Спонсорством на YouTube
- Переводом на карту или пополнением банки монобанка:
Dev Jungles YouTube Channel Fund
https://send.monobank.ua/jar/7iAP3sZkm9
Номер карты банки:
5375 4112 0230 1466
- Или криптой:
BTC - 18C3jsFYwviN5FvzpAt4uMWRfUeVKvdWxy
ETH - 0x2903f63ba9009732272e91a299053b9d7b623216
USDT on ERC20 - 0x2903f63ba9009732272e91a299053b9d7b623216
USDT on TRC20 - TSmS5RzQKbWdxZkoM2oRo9HK8FYBaq744T
LTC - LN3CkrnvZLZTXDUhqTy1gUKMVpLjEPA4G2
DOGE - DPwon439jf3axVSBwyuXso6z7CivuJF655
AAVE - 0x2903f63ba9009732272e91a299053b9d7b623216
Waves - 3P8D57Zw7CrqW2o7dHpvZR2UzAzQRFA2kZd
Сейчас в любом проекте используется DI. В Asp.NET Core, есть встроенный контейнер, впрочем это не мешает часто использовать и сторонние контейнеры. Я, например, большой фанат такого контейнера как Autofac, знаю есть еще те, кто любит NInject или Unity.
Наверное, почти каждый задумывался о том как они работают. Кто-то примерно понимает как можно сделать что-то подобное, кто-то и близко не представляет. Стрим подойдет и для тех и для других. Первые узнают как самый простой вариант можно разогнать и какой performance он выдаст в сравнении со другими контейнерами, а последних я аккуратно и нужно проведу сквозь все нюансы этого в режиме livecoding.
Будет и Benchmarking и Reflection.Emit и деревья выражений(Expression Trees), может даже успеем немного коcнуться Source Generators.
Рубрика "Строим с нуля" на канале мне кажется наиболее ценной. Она на все 100% авторская, я сам придумываю код и прорабатываю как его по шагам лучше всего донести. Изучая что-либо я до конца мог разобраться в вопросе только создав что-то подобное с нуля: изучая коллекция я писал свои, изучая WinForms делал свою систему контролов итд. И когда проходишь такой путь, то он гравируется на подкорке мозга навсегда. Ты можешь забыть какие-то детали, но общий принцип останется с тобой навсегда. А значит используя готовые решения ты всегда будешь буквально чувствовать, как оно себя поведет в той или иной ситуации - ведь ты будешь знать почему.
Таймкоды:
0:00 - Вступление
0:53 - Основная идея!
2:14 - Дополнительные темы.
6:52 - Обзор чатика, новости канала.
11:40 - Что почитать про многопоточку 👀.
12:13 - Пояснил за DI , IoC , DIP 🔥.
18:20 - Начинаем разработку.
21:09 - Создаем пример DI контейнера .
24:04 - Transient , Scoped , Singletone 🔥.
25:40 - Структура DI контейнера .
28:21 - class ServiceDescriptor .
32:09 - пример ContainerBuilder .
34:01 - Методы расширения IContainerBuilder .
41:17 - Проверка чатика #1.
43:17 - Реализация IContainerBuilder и IContainer .
44:58 - Допиливаем недостающие классы и методы.
48:57 - метод CreateInstance() .
53:34 - Проверка DI контейнера .
56:45 - Приватные констуркторы - ваше личное дело. 😂
1:00:35 - Проверка чатика #2
1:02:29 - Кеширование метаданных и не только.
1:10:18 - Реализация методов RegisterTransient и Scope .
1:19:07 - Чатик попыл. 😂
1:12:54 - Реализация уничтожения объектов.
1:24:10 - Глубина проблемы и её решение.
1:32:15 - Проверка чатика #3
1:34:00 - Почему ConfigureAwait(false) ? 👀
1:34:18 - Объяснение ValueTask 👀.
1:36:55 - Оптимизация производительности DI контейнера .
1:43:25 - BaseActivationBuilder class.
1:52:11 - Прокидвание ActivationBuilder в DI контейнер .
1:57:34 - Бенчмарки для *DI контейнера*.
2:09:36 - Кейс использования Transient вместо Scope.🔥
2:11:01 - Анализ Бенчмарков.
2:12:07 - Добавления MS DI и Autofac для сравнения быстродействия.
2:19:05 - Кто какой контейнер использует на проектах.
2:21:28 - Какой lifetime использовать для DbContext? 🔥.
2:23:04 - AddDbContextPool() 🔥.
2:25:56 - Перезапуск бенчмарков.
2:27:32 - Неведомая причина создания DbContext вне контейнера.
2:32:51 - Проверка чатика #4
2:35:11 - Получили результаты бенчмарков.
2:36:20 - Как MSDI работает так быстро? 😳
2:46:16 - Как сбилдить кусок .Net Runtime и получить искомую сборку. 🤯
2:52:32 - Волшебные сборки от MSDI.
2:55:24 - Как это сделали Autofac ?
2:58:42 - Интеграция DI контейнера в ASP.
3:03:03 - Как заработать на 40 летних менеджерах по продажам #ВыИТиИзИт.😂
3:05:05 - Monitor vs ConcurrentDictionary в MS DI.
Видео Пишем с нуля Dependency Injection на C#/.NET | От "Hello World" до Autofac/NInject/MS DI канала Dev Jungles - Andrii Podkolzin
DotNet Core Asp.NET Back-End CSharp Software Development DevJungles Web HTTP REST Dependency Injection DI Dotnet Benchmarking Performance Reflection Lambdas Autofac Ninject MS DI IoC container Container Visual Studio Source Generators Roslyn API Андрей Подколзин Andrii Podkolzin Dev Jungles Пишем код с нуля Строим с нуля stream level: medium+
Комментарии отсутствуют
Информация о видео
7 июля 2022 г. 23:20:26
03:09:09
Другие видео канала





















