Содержание
- 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. Скачать презентацию
 Slaidy.com
 Slaidy.com










































































 Отдел перспективных разработок - Good Line
 Отдел перспективных разработок - Good Line Системное ПО
 Системное ПО Создание онлайн-викторин, игр и квестов
 Создание онлайн-викторин, игр и квестов Традиционные источники информации
 Традиционные источники информации Java - приложения с различными системами управления базами данных (СУБД)
 Java - приложения с различными системами управления базами данных (СУБД) Защита информации
 Защита информации Please make sentences using these useful phrases
 Please make sentences using these useful phrases Наследование
 Наследование Поиск в массиве
 Поиск в массиве Циклические конструкции Цикл с предусловием Цикл с постусловием Цикл с параметром Вложенные циклы
 Циклические конструкции Цикл с предусловием Цикл с постусловием Цикл с параметром Вложенные циклы Создание пользовательских интерфейсов средствами MFC
 Создание пользовательских интерфейсов средствами MFC Повторяющиеся элементы в окружающем мире. 6 класс
 Повторяющиеся элементы в окружающем мире. 6 класс Стандартные программы windows
 Стандартные программы windows Pixel art - направление цифрового искусства, которое заключается в создании изображений на уровне пикселя
 Pixel art - направление цифрового искусства, которое заключается в создании изображений на уровне пикселя Стилистические особенности пресс-релиза
 Стилистические особенности пресс-релиза Программирование на языке Pascal
 Программирование на языке Pascal Галерея изображений средствами CSS Урок 15
 Галерея изображений средствами CSS Урок 15 Язык программирования Qbasic
 Язык программирования Qbasic Описание настройки программного отраслевой направленности
 Описание настройки программного отраслевой направленности Представление чисел в памяти компьютера
 Представление чисел в памяти компьютера English Time. Час Англійської. Запускаємо Appinvenor. Lesson 25
 English Time. Час Англійської. Запускаємо Appinvenor. Lesson 25 Виды информации. Урок 3
 Виды информации. Урок 3 Программное обеспечение компьютера
 Программное обеспечение компьютера Базовые знания и понятия
 Базовые знания и понятия 7-1-3_
 7-1-3_ Тестирование и отладка программного средства. Отладка ПС
 Тестирование и отладка программного средства. Отладка ПС Морской фон
 Морской фон Информация вокруг нас
 Информация вокруг нас