Содержание
- 2. Меня хорошо видно && слышно? Ставьте , если все хорошо Напишите в чат, если есть проблемы
- 3. Стандартный и нестандартные DI контейнеры в ASP.NET Core Гранковский Андрей Архитектор направления Альфа-Банк https://www.linkedin.com/in/agrankovskiy/
- 4. Гранковский Андрей 8 лет опыта в разработке программного обеспечения и из них последние 6 лет в
- 5. Активно участвуем Задаем вопрос в чат Вопросы вижу в чате, могу ответить не сразу Правила вебинара
- 6. Цели вебинара 1 Повторить преимущества DI/IOC принципа и основные возможности DI-контейнера для ASP.NET Core 2 Изучить
- 7. Смысл | Зачем вам это уметь DI - контейнеры - важнейший механизм для построения расширяемой архитектуры
- 8. Маршрут вебинара Best Practices/DI/IOC DI-контейнер ASP.NET Core Жизненный цикл объектов в DI-контейнере Нестандартные DI- контейнеры и
- 9. Репозиторий с примером Репозиторий с проектом для занятия, кому удобнее смотреть у себя - клонируем https://gitlab.com/devgrav/otus.teaching.promocodefactory.demo.di
- 10. DI/IOC
- 11. Маршрут вебинара Best Practices/DI/IOC DI-контейнер ASP.NET Core Жизненный цикл объектов в DI-контейнере Нестандартные DI- контейнеры и
- 12. Best Practices
- 13. Вопрос Кто уже делал дополнительное задание про Employees CRUD в первом ДЗ? Напишите в чат +
- 14. Вопрос Как вы считаете много ли кода приходится на заполнение и маппинг данных из одних объектов
- 15. Минутка Best Practices Такого кода очень много, многие операции бизнес-логики сводятся к простому маппингу в существующие
- 16. Минутка Best Practices Стараемся выносить маппинг и создание объектов в отдельные компоненты (Мапперы, Фабрики) и/или использовать
- 17. Инициализация и мапперы
- 18. Инициализация и мапперы Плюсы: Лучше Single Responsibility; Соблюдаем инкапсуляцию при создании объектов; Меньше багов Легче покрыть
- 19. Про Automapper Эти проблемы частично решает Automapper, но обычно в сторону простых моделей от Entities, плюс
- 20. Инициализация и мапперы https://gitlab.com/devgrav/otus.teaching.promocodefactory.demo.di EmployeesBestPracticesController
- 21. DI/IOC
- 22. Вопрос Тайминг: 2 минуты Что вообще такое зависимость класса? Напишите в чат или -, если нужно
- 23. Зависимости классов Зависимость — это любой объект, который требуется другому объекту.
- 24. Зависимости классов Зависимость Зависимость Зависимость
- 25. Вопрос Какие есть проблемы/преимущества у данных вариантов зависимостей? Напишите в чат по каждому виду: цифра -
- 26. Пример проблем с зависимостями из жизни
- 27. Пример проблем с зависимостями из жизни Есть Web-приложение, в нем есть функция генерации .pdf файла отчета
- 28. Dependency Injection Чтобы явно знать от каких классов зависит другой класс мы используем инъекции в конструктор,
- 29. SOLID S - Single Responsibility principle O - Open/Closed principle L - Liskov substitution principle I
- 30. Вопрос В чем отличие Dependency Injection и почему говорят еще про Dependency Inversion и Inversion of
- 31. Многоуровневая и гексагональная архитектура В чем разница у этих архитектур с точки зрения DI/IOC или ее
- 32. DI/IOC Формулировка: Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны
- 33. Контейнер Контейнер зависимостей (DI-контейнер) - это только инструмент создания/жизненного цикла и инъекции зависимостей, он ничего не
- 34. Гексагональная архитектура Port Port Port Port Port Port Domain Entities Application Services /Use Cases ASP.NET Core
- 35. DI-контейнер ASP.NET Core
- 36. Маршрут вебинара Best Practices/DI/IOC DI-контейнер ASP.NET Core Жизненный цикл объектов в DI-контейнере Нестандартные DI- контейнеры и
- 37. ASP.NET Core и DI DI - это основа архитектуры ASP.NET Core и отличие от предыдущего ASP.NET,
- 38. Возможности DI-контейнера ASP.NET Core Встроенный контейнер зависимостей предназначен для платформы ASP.NET Core и большинства клиентских приложений;
- 39. Возможности DI-контейнера ASP.NET Core Контейнер не поддерживает функции, которые на самом деле не нужны для большинства
- 40. Где конфигурируем зависимости? IServiceCollection - основная абстракция для работы с сервисами, которые хотим зарегистрировать в контейнере
- 41. Основные методы и сущности IServiceCollection (Список сущностей) BuildServiceProvider (Фиксируем зависимости) IServiceProvider.GetService (Получаем зависимость) Идемпотентные (в основном
- 42. Как работать с контейнером изолированно https://gitlab.com/devgrav/otus.teaching.promocodefactory.demo.di
- 43. Жизненный цикл объектов в DI-контейнере
- 44. Маршрут вебинара Best Practices/DI/IOC DI-контейнер ASP.NET Core Жизненный цикл объектов в DI-контейнере Нестандартные DI- контейнеры и
- 45. Жизненный цикл объектов в DI-контейнере Scoped Transient Singleton Три вида жизненного цикла зависимостей
- 46. Вопрос Тайминг: 2 минуты Что такое Transient и зачем нам может понадобиться Transient зависимость? Напишите в
- 47. Transient в ASP.NET Core Зависимость создается каждый раз, когда она нам нужна, хорошо подходит для Stateless
- 48. Transient зависимости https://gitlab.com/devgrav/otus.teaching.promocodefactory.demo.di
- 49. Singleton в ASP.NET Core Один экземпляр на все запросы, то есть будет создан один раз, не
- 50. Singleton зависимости https://gitlab.com/devgrav/otus.teaching.promocodefactory.demo.di
- 51. Вопрос Тайминг: 2 минуты Как работает Scoped для ASP.NET Core? Напишите в чат или -, если
- 52. Scoped в ASP.NET Core Основное, что надо знать про Scoped в ASP.NET Core: Будет создан один
- 53. Как создаем Scope https://gitlab.com/devgrav/otus.teaching.promocodefactory.demo.di
- 54. Зачем создавать новый Scope? Например, если все зависимости в рамках запроса разрешены, как Scoped, а нам
- 55. Про жизненный цикл При старте приложения ASP.NET Core собираем провайдер Провайдер будет существовать пока не остановим
- 56. Нестандартные DI-контейнеры и расширения
- 57. Маршрут вебинара Best Practices/DI/IOC DI-контейнер ASP.NET Core Жизненный цикл объектов в DI-контейнере Нестандартные DI- контейнеры и
- 58. Зачем менять DI контейнер в ASP.NET Core Инъекция в свойство; Инъекция по имени; Дочерние контейнеры; Настраиваемое
- 59. DI контейнеры в .NET Autofac Castle Windsor Lamar LightInject Ninject SimpleInjector Spring.NET Unity LinFu (inactive) Managed
- 60. Сравнение контейнеров Можно посмотреть по ссылке: https://danielpalme.github.io/IocPerformance Если кратко Autofac достаточно производительный и является одним из
- 61. Контейнер Autofac Очень популярен для ASP.NET MVC и имеет хорошую интеграцию с Core и документацию; Есть
- 62. Подключаем Autofac https://gitlab.com/devgrav/otus.teaching.promocodefactory.demo.di
- 63. Динамическое разрешение зависимостей через модули https://gitlab.com/devgrav/otus.teaching.promocodefactory.demo.di
- 64. Вопрос Тайминг: 2 минуты Зачем нам может понадобиться инъекция в свойство? Напишите в чат или -,
- 65. Инъекция в свойство Может быть полезно если у нас есть базовый контроллер, который написали сами и
- 66. Инъекция в свойство https://gitlab.com/devgrav/otus.teaching.promocodefactory.demo.di
- 67. Динамическое разрешение зависимостей через фабрику Если мы уже собрали контейнер, то в него просто так не
- 68. Динамическое разрешение зависимостей через фабрику https://gitlab.com/devgrav/otus.teaching.promocodefactory.demo.di Попробуйте по этим ссылкам настроить сами после занятия https://stackoverflow.com/questions/54127414/using-factory-pattern-with-asp-net-core-dependency-injection https://espressocoder.com/2018/10/08/injecting-a-factory-service-in-asp-net-core/
- 69. Конфигурация по соглашению На самостоятельную проработку Чтобы не писать каждый раз Add каждого сервиса было бы
- 70. Конфигурация по соглашению Можно использовать специальный контейнер вместо стандартного, но это может быть тяжелое решение, поэтому
- 71. Конфигурация по соглашению Можно посмотреть в документации Autofac https://autofaccn.readthedocs.io/en/latest/register/scanning.html
- 72. Scrutor https://andrewlock.net/using-scrutor-to-automatically-register-your-services-with-the-asp-net-core-di-container/ https://github.com/khellang/Scrutor Удобное расширение для ASP.NET Core контейнера DI
- 73. Выводы 1 2 3 Повторить преимущества DI/IOC принципа и основные возможности DI-контейнера для ASP.NET Core Изучили
- 74. Список материалов для изучения Внедрение зависимостей в .NET. Марк Симан https://www.ozon.ru/context/detail/id/22104901/ Чистая архитектура. Роберт Мартин https://www.ozon.ru/context/detail/id/144499396/
- 75. Заполните, пожалуйста, опрос о занятии по ссылке https://otus.ru/polls/15890/ Лучше всего написать что-то текстом!)
- 77. Скачать презентацию










































































Кружок Компьютерные презентации
Создание видеоролика
Основы самоорганизующихся сетей
Суперкомпьютерные программы Беларуси и России
Установка Oracle Database
Российская электронная школа
Возникновение понятия алгоритм
Оператор выбора на языке Pascal
Вызвать Excel. Создать новую рабочую книгу
Ссылка для скачивания презентации
Поколения ЭВМ1
Компьютерные вирусы
Программирование на языке Python
Проблемы и перспективы развития цифровизации страхового рынка в РФ
PSP mobile app description
Учёба занимает всё свободное время? на любимые игры нет времени? скачай это приложение!
Цифровой таймер. Семисегментный индикатор
Битрикс — фреймворк?
Приложение DriveWindow
Доверенная идентификация в избирательных информационных технологиях цифрового общества Сбербанк-МФТИ
Вариации по мотивам… Новые задания с развернутым ответом №25 и №26
Презентация на тему Введение в алгебру логики
Алгоритмы и модели трассировки печатных соединений в ЭА
Xfce. Свободная среда рабочего стола для Unix-подобных операционных систем
Файлы и файловые структуры
Локальные компьютерные сети. Адаптер. Виды адаптеров. Топология сети
Объектно-ориентированное программирование
Разработка технологического процесса изготовления тонкостенных деталей типа Профиль самолета МС-21