У вас древний проект? Все зовут его «Legacy», а вас «неудачник»? Возможно они даже смеются над вами.
Давайте взглянем на ситуацию с другого ракурса. Все (все, Карл!) успешные проекты рано или поздно превращаются в Legacy-проекты.
Я затрону тему Legacy не просто как явление, а как возможность быть постоянно в тренде, прослыть супер-спецом (даже если ты знаешь всего два фреймворка), сделать карьеру, как делать, то что ты хочешь, а не то что тебя просят. Ладно, ладно, я наврал про два фреймворка, но все остальное чистая правда. Я покажу, что вы можете творить, имея правильный подход к Legacy коду.
Суть в том, что Legacy — это не грустно/уныло/немодно, это просто/клево/весело, если с умом подойти к задаче!
У вас древний проект? Все зовут его «Legacy», а вас «неудачник»? Возможно они даже смеются над вами.
Давайте взглянем на ситуацию с другого ракурса. Все (все, Карл!) успешные проекты рано или поздно превращаются в Legacy-проекты.
Я затрону тему Legacy не просто как явление, а как возможность быть постоянно в тренде, прослыть супер-спецом (даже если ты знаешь всего два фреймворка), сделать карьеру, как делать, то что ты хочешь, а не то что тебя просят. Ладно, ладно, я наврал про два фреймворка, но все остальное чистая правда. Я покажу, что вы можете творить, имея правильный подход к Legacy коду.
Суть в том, что Legacy — это не грустно/уныло/немодно, это просто/клево/весело, если с умом подойти к задаче!
Кирилл Маурин «Проектирование и разработка модульных приложений»MskDotNet Community
Выступление с MSK .NET Meetup #7
21 февраля 2017
Во вдоль и поперек изъезженной теме разработки модульных приложений есть много нового и полезного для большей части аудитории. Много материала из личного опыта автора с иллюстрацией из собственной микробиблиотеки с отрытым исходным кодом.
MSK .NET Meetup #7
21 февраля 2017
Мы поговорим о автоматических инструментах поиска ошибок в программах для.Net. Посмотрим на зоопарк средств статического анализа. Попробуем автоматически генерировать Unit-тесты с помощью IntelliTest.
Владимир Кошелев «Автоматический поиск ошибок»Yulia Tsisyk
MSK .NET Meetup #7
21 февраля 2017
Мы поговорим о автоматических инструментах поиска ошибок в программах для.Net. Посмотрим на зоопарк средств статического анализа. Попробуем автоматически генерировать Unit-тесты с помощью IntelliTest.
Кирилл Маурин «Проектирование и разработка модульных приложений» Yulia Tsisyk
Выступление с MSK .NET Meetup #7
21 февраля 2017
Во вдоль и поперек изъезженной теме разработки модульных приложений есть много нового и полезного для большей части аудитории. Много материала из личного опыта автора с иллюстрацией из собственной микробиблиотеки с отрытым исходным кодом.
Being in touch with trends in online learning is crucial for anyone responsible for managing and delivering E-Learning and training within their organisation. So we've prepared a handy infographic that contains our predicated 10 key E-Learning trends and foresights to watch out for in 2016. You can read the full blog on this at blog.aurionlearning.com
An immersive workshop at General Assembly, SF. I typically teach this workshop at General Assembly, San Francisco. To see a list of my upcoming classes, visit https://generalassemb.ly/instructors/seth-familian/4813
I also teach this workshop as a private lunch-and-learn or half-day immersive session for corporate clients. To learn more about pricing and availability, please contact me at http://familian1.com
3 Things Every Sales Team Needs to Be Thinking About in 2017Drift
Thinking about your sales team's goals for 2017? Drift's VP of Sales shares 3 things you can do to improve conversion rates and drive more revenue.
Read the full story on the Drift blog here: http://blog.drift.com/sales-team-tips
How to Become a Thought Leader in Your NicheLeslie Samuel
Are bloggers thought leaders? Here are some tips on how you can become one. Provide great value, put awesome content out there on a regular basis, and help others.
Each month, join us as we highlight and discuss hot topics ranging from the future of higher education to wearable technology, best productivity hacks and secrets to hiring top talent. Upload your SlideShares, and share your expertise with the world!
Not sure what to share on SlideShare?
SlideShares that inform, inspire and educate attract the most views. Beyond that, ideas for what you can upload are limitless. We’ve selected a few popular examples to get your creative juices flowing.
SlideShare is a global platform for sharing presentations, infographics, videos and documents. It has over 18 million pieces of professional content uploaded by experts like Eric Schmidt and Guy Kawasaki. The document provides tips for setting up an account on SlideShare, uploading content, optimizing it for searchability, and sharing it on social media to build an audience and reputation as a subject matter expert.
Сегодня многие фреймворки, такие как Prism или Autofac, позволяют разработчику организовать модульную структуру приложения. При этом часто бывает непонятно, для чего ещё нужны модули, кроме как для пресловутой "красоты архитектуры".
В рамках доклада я расскажу о том, какие существуют подходы к организации модульной структуры, в каких фреймворках они реализованы и для решения каких задач дает преимущество каждый подход.
Юрий Василевский «Автоматизация в XCode»
Yandex Mobile Camp в Санкт-Петербурге 2012
http://events.yandex.ru/events/yamobcamp/spb-may-2012/
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач. Мы обсудим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
Yandex Mobile Camp в Санкт-Петербурге, 30 мая 2012
Юрий Василевский, ведущий разработчик EPAM Systems, Mobile Solutions
Тема: Автоматизация в XCode
Тезисы:
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач.
Мы рассмотрим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...GoSharp
При разработке трехзвенного приложения часто возникает дублирующийся код. При добавлении новых сущностей и полей мы совершаем действия, которые укладываются в определенный паттерн. Как говорят, "протаскиваем веревки". В докладе Вы узнаете Design Patterns и приемы, для того, чтобы избежать дублирований и сократить время разработки.
Шаблонизаторы упрощают процесс формирования HTML и только. Но браузеру нужен совсем не HTML, а DOM. Необходимо преобразование. И вот тут начинается самое интересное: танцы с бубном и стрельба по ногам. В докладе пойдёт речь об общепринятом подходе получения DOM фрагмента, постпроцессинге и альтернативах. Сравним, измерим и узнаем как это делать быстрее всего.
Кирилл Маурин «Проектирование и разработка модульных приложений»MskDotNet Community
Выступление с MSK .NET Meetup #7
21 февраля 2017
Во вдоль и поперек изъезженной теме разработки модульных приложений есть много нового и полезного для большей части аудитории. Много материала из личного опыта автора с иллюстрацией из собственной микробиблиотеки с отрытым исходным кодом.
MSK .NET Meetup #7
21 февраля 2017
Мы поговорим о автоматических инструментах поиска ошибок в программах для.Net. Посмотрим на зоопарк средств статического анализа. Попробуем автоматически генерировать Unit-тесты с помощью IntelliTest.
Владимир Кошелев «Автоматический поиск ошибок»Yulia Tsisyk
MSK .NET Meetup #7
21 февраля 2017
Мы поговорим о автоматических инструментах поиска ошибок в программах для.Net. Посмотрим на зоопарк средств статического анализа. Попробуем автоматически генерировать Unit-тесты с помощью IntelliTest.
Кирилл Маурин «Проектирование и разработка модульных приложений» Yulia Tsisyk
Выступление с MSK .NET Meetup #7
21 февраля 2017
Во вдоль и поперек изъезженной теме разработки модульных приложений есть много нового и полезного для большей части аудитории. Много материала из личного опыта автора с иллюстрацией из собственной микробиблиотеки с отрытым исходным кодом.
Being in touch with trends in online learning is crucial for anyone responsible for managing and delivering E-Learning and training within their organisation. So we've prepared a handy infographic that contains our predicated 10 key E-Learning trends and foresights to watch out for in 2016. You can read the full blog on this at blog.aurionlearning.com
An immersive workshop at General Assembly, SF. I typically teach this workshop at General Assembly, San Francisco. To see a list of my upcoming classes, visit https://generalassemb.ly/instructors/seth-familian/4813
I also teach this workshop as a private lunch-and-learn or half-day immersive session for corporate clients. To learn more about pricing and availability, please contact me at http://familian1.com
3 Things Every Sales Team Needs to Be Thinking About in 2017Drift
Thinking about your sales team's goals for 2017? Drift's VP of Sales shares 3 things you can do to improve conversion rates and drive more revenue.
Read the full story on the Drift blog here: http://blog.drift.com/sales-team-tips
How to Become a Thought Leader in Your NicheLeslie Samuel
Are bloggers thought leaders? Here are some tips on how you can become one. Provide great value, put awesome content out there on a regular basis, and help others.
Each month, join us as we highlight and discuss hot topics ranging from the future of higher education to wearable technology, best productivity hacks and secrets to hiring top talent. Upload your SlideShares, and share your expertise with the world!
Not sure what to share on SlideShare?
SlideShares that inform, inspire and educate attract the most views. Beyond that, ideas for what you can upload are limitless. We’ve selected a few popular examples to get your creative juices flowing.
SlideShare is a global platform for sharing presentations, infographics, videos and documents. It has over 18 million pieces of professional content uploaded by experts like Eric Schmidt and Guy Kawasaki. The document provides tips for setting up an account on SlideShare, uploading content, optimizing it for searchability, and sharing it on social media to build an audience and reputation as a subject matter expert.
Сегодня многие фреймворки, такие как Prism или Autofac, позволяют разработчику организовать модульную структуру приложения. При этом часто бывает непонятно, для чего ещё нужны модули, кроме как для пресловутой "красоты архитектуры".
В рамках доклада я расскажу о том, какие существуют подходы к организации модульной структуры, в каких фреймворках они реализованы и для решения каких задач дает преимущество каждый подход.
Юрий Василевский «Автоматизация в XCode»
Yandex Mobile Camp в Санкт-Петербурге 2012
http://events.yandex.ru/events/yamobcamp/spb-may-2012/
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач. Мы обсудим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
Yandex Mobile Camp в Санкт-Петербурге, 30 мая 2012
Юрий Василевский, ведущий разработчик EPAM Systems, Mobile Solutions
Тема: Автоматизация в XCode
Тезисы:
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач.
Мы рассмотрим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...GoSharp
При разработке трехзвенного приложения часто возникает дублирующийся код. При добавлении новых сущностей и полей мы совершаем действия, которые укладываются в определенный паттерн. Как говорят, "протаскиваем веревки". В докладе Вы узнаете Design Patterns и приемы, для того, чтобы избежать дублирований и сократить время разработки.
Шаблонизаторы упрощают процесс формирования HTML и только. Но браузеру нужен совсем не HTML, а DOM. Необходимо преобразование. И вот тут начинается самое интересное: танцы с бубном и стрельба по ногам. В докладе пойдёт речь об общепринятом подходе получения DOM фрагмента, постпроцессинге и альтернативах. Сравним, измерим и узнаем как это делать быстрее всего.
Есть такая штука как инструментирование кода. Мало кто знает о ней, даже пользуясь результатами ее применения. Между тем, с инструментированием можно делать много всего интересного и, главное, полезного. Например, это может вам помочь лучше понять код или сделать процесс разработки более эффективным. Примеры инструментирования кода и принципы его работы.
Egor Fedorov "Behavior-driven development in Python"Fwdays
The goal of the BDD technique is to establish successful communication between customers, business analysts, programmers, and testers for the whole life of the project.
That is why a language was created, in which the expected behavior of the application is described in simple text form, and then through the BDD framework, the text is translated into program code, which could already be used in testing the software product.
Where BDD is applied, software requirements turn into living code, and tests instead of a programming language are written in simple human language.
In this talk, using the automation of website testing as an example, the Behave framework for Python will be shown.
The talk will be about:
writing bdd files;
performing them in behave;
running BDD as tests in pytest;
integrating everything into the CI pipeline.
Промышленные контроллеры IIoT — это целая экосистема, которую разработчики.NET обычно обходят стороной. В докладе продолжим погружение в мир дружбы.NET и автономного оборудования, рассмотрим некоторые частые проблемы и "железные" заморочки, возникающие при общении с промышленным контроллерами. Расскажу, как не сломать зубы о "железные" протоколы и почему "умные" устройства пока не могут потеснить "глупых" промышленных собратьев в IIoT.дет интересно.
Николай Гусев «Функциональное программирование для C# разработчиков»MskDotNet Community
Функциональное программирование набирает популярность с каждым днем. Тут и там выходят новые библиотеки, фреймворки и языки, вдохновлённые функциональными концепциями. Всё больше программистов начинают ценить неизменяемое состояние и чистые функции, простую и удобную композицию конструкций и компилятор, находящий львиную долю ошибок ещё до запуска приложения. Язык C# с каждым годом вбирает в себя новые идеи из мира функционального программирования. Мы уже привыкли к удобному Linq и к передаче функций как параметров. А иногда C# и сам становится колыбелью новых идей, например, Reactive Extensions (спасибо Эрику Мейеру). Интересно, какие ещё конструкции функционального программирования можно было бы использовать в C#? Об этом мы и поговорим в нашем докладе. Заодно узнаем, как обрабатывать ошибки в стиле функционального программирования, как избавиться от Null Reference Exception, как ещё можно использовать Linq и многое другое. Приходите, будет интересно.
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...MskDotNet Community
Технология.net Core от Microsoft позволила.Net разработчикам разворачивать приложения на Linux. Вместе с этим появилось и множество новых возможностей для более эффективной разработки и поставки. В докладе будут разобраны основные проблемы разработки, поставки, тестирования и рассмотрены схемы их решения, используя такие средства как: GitLab, Vgarant+VirtualBox, TeamCity, Ansible, Octopus Deploy, Docker. Мы поговорим про создание тестовых сред, управление инфраструктурой из кода и CI/CD. Основная цель доклада — продемонстрировать, что.net Core на Linux — это выгодно, быстро и управляемо.
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовMskDotNet Community
Как помочь тестам находить баги? Что лучше: каждый новый запуск на новом наборе данных или же стабильность? Как сделать тестовые данные эффективными?
В докладе рассматривается Property based подход для написания unit-тестов.
На реальных примерах будет показано то, какими возможностями обладает FsCheck в связке с C#, какие есть плюсы и минусы у данного инструмента и стоит ли тратить время на его изучение.
Доклад посвящён специфике.NET Framework в рамках очередной версии хит-парада угроз безопасности приложений OWASP TOP 10, опубликованной в ноябре этого года. Поговорим о том, каким образом каждая из угроз может проявляться в.NET-приложениях, как от этого защищаться и, немного, об общем подходе к разработке защищённых приложений в.NET
Дмитрий Сошников Искусственный интеллект и нейросети для .NET-разработчиковMskDotNet Community
2017-12-16 MskDotNet Субботник
Искусственный интеллект сейчас является одной из самых обсуждаемых тем и главным двигателем цифровой трансформации бизнеса. Стратегия Microsoft в области ИИ включает в себя демократизацию ИИ для разработчиков, т.е. предоставление простых в использовании фреймворков и сервисов для решения интеллектуальных задач. Мы расскажем, как.NET-разработчики могут использовать возможности ИИ в своих проектах: начиная от готовых когнитивных сервисов, работающих в облаке, заканчивая обучением нейросетей на.NET-языках и запуском сложных нейросетевых моделей на компактных устройствах типа Raspberry Pi.
Если вы пишете веб-приложения только под Windows, однако рано или поздно выбор определенной ОС накладывает на вас свои ограничения, наступает время подумать о кроссплатформенной разработке веб-приложений. К чему нужно быть готовым? Mono или .Net Core? Готовы ли Вы портировать свое приложение? Я расскажу о нашем опыте перехода на mono и о том, как это было, с какими проблемами мы столкнулись в первую очередь и почему. Помимо ASP.NET приложений мы так же портировали наш MS SQL Server под Docker. А в заключении мы поговорим о веб-серверах для ASP.NET приложений: — XSP — Apache — nginx
Иван Кочуркин. Теория и практика парсинга формальных языковMskDotNet Community
В докладе рассказывается об инструментах и практиках парсинга формальных языков: как исходного кода, так и собственных предметно-ориентированных (DSL). О том, какие бывают парсеры и проблемы при их использовании. Доклад повествует как о базовых вещах: о токенах, деревьях разбора, абстрактных синтаксических деревьях (AST), так и о продвинутых: о методах обработки препроцессорных директив и восстановления от ошибок, о парсинге островных, нечувствительных к регистру языков и фрагментов кода. Помимо парсинга в докладе затрагивается тема обработки древовидных структур. Материал доклада основан на практических задачах и акцентирован на технологиях ANTLR и Roslyn.
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...MskDotNet Community
Поговорим об эволюции в мире вэб-приложений, современных технологиях и фреймворках, которые используют в вэб-разработке сегодня.
Обсудим основные архитектурные принципы при создании вэб-решений для разных клиентов. Обсудим, как сделать и запустить бэк-энд на Asp.NET.Core в Visual Studio 2017. Далее поговорим, как написать и запустить фронт-энд с использованием React.JS, Redux, Routing, Bootstrap в IntelliJ IDEA 2017.
В конце доклада немного заглянем в будущее, что нас ждет в вэб-разработке завтра?
Поговорим о системе конфигурации в.net. Как она работает на больших проектах, какие проблемы и почему все очень плохо. Какой подход мы применили у себя, чтобы избавиться от некоторых проблем. Как изменились подходы сейчас в.net core. Что с конфигами в ASP.NET Core и как быть, когда кругом микросервисы.
На встрече мы поговорим о том, как не бояться изменений и как быть к ним готовым. Дадим определение АОП. Рассмотрим проблемы, хорошо решаемые инструментами АОП. Построим модульную систему, применяя АОП. Сравним динамический и статический подходы в АОП. Дадим рекомендации по применению АОП.
Вас ждет река теории впадающая в море практики.
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"MskDotNet Community
Поговорим что такое React и зачем он нужен разработчикам, разберемся что такое ReactJS.NET и JavaScriptServices,
Обсудим как интегрировать React компоненты в существующую Razor разметку или даже в WebForms. Расскажем о том какие проблемы с производительностью существуют при серверном рендеринге компонентов и как их решать.
Андрей Матвеев "Основные принципы микросервисов и их реализации"MskDotNet Community
Посмотрим, что скрывается за модным buzzword’ом, взвесим обещанные плюсы и найдем минусы, о которых умалчивают. Разберемся зачем они нужны, и пора ли отказываться от монолита. И попробуем понять, как же их делать.
MSK .NET Meetup #8
21 марта 2017
Сегодня понятие интернета вещей ассоциируется с двумя направлениями: облаком и устройствами. И если об облаках говорят много, то о устройствах в концепции IoT информации намного меньше. Мы поговорим о том, что же это за "вещи", какая у них роль, из чего они сделаны и как они работают.
MSK .NET Meetup #8
21 марта 2017
Путь от лабораторного прототипа к промышленной эксплуатации системы IoT тернист. Разработчиков ждут неожиданные проблемы, которые не могут возникнуть в лаборатории. Доклад о том как набить себе по меньше шишек и сделать работающую систему.
Стас Павлов «Построение безопасной архитектуры IoT решений на примере Azure I...MskDotNet Community
MSK .NET Meetup #8
21 марта 2017
При проектировании системы важно понять, каким угрозам эта система может подвергаться, и разработать соответствующие меры защиты при проектировании и построении её архитектуры. Особенно важно с самого начала учитывать требования безопасности при проектировании продукта. Если вы понимаете, каким образом злоумышленники могут скомпрометировать вашу систему, то это поможет еще до начала работы принять соответствующие меры по снижению рисков. В докладе на примере рефренсной архитектуры Azure IoT будет рассмотрено, каким образом можно спроектировать архитектуру соответствующую необходимому уровню безопасности.
Стас Павлов «Построение безопасной архитектуры IoT решений на примере Azure I...
Илья Ефимов «IoC/DI на примере Autofac»
1. Меня зовут Илья, я занимаюсь разработкой с использованием .Net в
компании Luxoft.
efimilya@gmail.com
+7 910 900 4727
Сложность разрабатываемых систем и количество унаследованного
кода заставляют использовать инструменты и подходы.
IoC/DI в этом очень помогает.
1
3. Объектно-ориентированный дизайн включает
1. Создание экземпляра
2. Передача его потребителю
3. Управление временем жизни
4. Бизнес-логика
5. Очистка ненужного экземпляра
IoC-контейнер берет на себя 1, 2, 3, 5
3
4. 1. Что такое IoC? В чем инверсия?
2. В чем преимущества IoC/DI?
3. Как это связано с буквой D из SOLID?
4. Что такое вложенные контейнеры?
5. IDisposable и IoC-контейнеры.
6. Автоматические фабрики.
4
6. 6
Object A Object B
ссылается
Object A Object B
Реализует
InterfaceA
ссылается
7. Регистрация зависимостей в отдельных контейнерах.
Которые могут брать зависимости из родительских контейнеров.
Регистритрация зависимостей, параметризованных данными времени
выполнения.
Поэтому не придется обходиться с этими данными вручную
(передавать в качестве параметров).
Компоненты не могут иметь доступ друг к другу во время выполнения.
Можно освободить ресурсы, вызвав Dispose вложенного контейнера.
7
9. Первое решение.
Вся регистрация в одном контейнере.
Создание экземпляр дочернего окна явно через
конструктор.
Передача ему нужных зависимостей (исходя из
введенных пользователем данных).
9
10. Плюсы:
Мы решили задачу
Зависимости (за исключение одной) мы разрешили
через контейнер.
10
11. Минусы:
Одну из зависимостей создана через new.
Противоречит IoC/DI.
Не сможем использовать очистку.
Если увеличится количество компонентов,
увеличится сложность решения.
11
12. Второе решение
Использование вложенных скоупов.
Регистрация зависимостей в отдельных
контейнерах.
Вложенный контейнер конфигурируются на
момент выполнения.
12
13. Минусы:
На первый взгляд это может показаться довольно
сложным и запутанным приемом (издержки
подхода)
13
14. Плюсы:
Нет ни одного оператора new.
Простая регистрация и разрешение зависимостей.
14
15. Задача усложнилась.
Добавились новые требования.
Стало больше компонентов.
Контекстно-зависимые компоненты распологаются
глубоко относительно ChildWindowViewModel
Поэтому создание ее экземпляра становится сложным.
15
16. Первому решению плюсов не добавилось. Минусы усугубились:
builder.Register<ChildWindowViewModelFactory>(
context =>
{
var parentContext = context.Persist();
return speaker =>
new ChildWindowViewModel(
GetSpeaker(speaker, parentContext), new ChildHeaderViewModel(
new HeaderTextFormatter(
GetFormatHeaderStrategy(speaker, parentContext)),
parentContext.Resolve<HeaderTextProvider>()));
});
16
17. Второе решение не усложнилось
Добавилась всего-лишь регистрация новых компонентов
17
18. Задача для бекэнда:
Обслужить запрос пользователя.
А именно: загрузить исходные данные.
На их основе произвести вычисления.
18
19. Первое решение.
Регистрация всех компонентов в одном
контейнере.
Передача зависимостей через параметры методов.
19
21. Минусы:
Приходится часто передавать параметры методам.
public int Calculate(int customerId, int programId, string operationName)
{
var customer = _customerRepository.Get(customerId);
var program = _programRepository.Get(programId);
var operation = _operationRepository.Get(operationName);
return _firstStepAggregator.Aggregate(customer, program, operation) +
_secondStepAggregator.Aggregate(customer, program, operation);
}
public int Aggregate(Customer customer, Program program, Operation operation)
{
return (_customerHandler.Handle(customer) +
_programHandler.Handle(program) +
_operationHandler.Handle(operation)) * _globalServiceData.Value;
}
21
24. Плюсы:
Данные, которые мы передавали в качестве параметров,
теперь зарегестрированы в контейнере и получать к ним
доступ очень просто.
Методы стали намного проще по сигнатуре.
public int Calculate()
{
return _firstStepAggregator.Aggregate() +
_secondStepAggregator.Aggregate();
}
public int Aggregate()
{
return (_customerHandler.Handle() +
_programHandler.Handle() +
_operationHandler.Handle()) * _globalServiceData.Value;
}
24
27. CompositeDisposable
Контейнер для элементов IDisposable.
Очистка нескольких компонентов за раз.
Удобно, например, для отписки от событий.
27
28. Func<int, string, … ,T>
Создание экземпляров, которые на вход
принимают загерестрированные зависимости, а
также произвольные параметры.
Экземпляр создан через контейнер, а значит мы
получаем все преимущества контейнера (передача
зависимостей, управление временем жизни и
очистка).
28
29. IoC/DI делает часть работы за нас.
Помогает упростить объектно-ориентированный
дизайн.
Autofac поддерживает вложенные контейнеры.
А также автоматические фабрики.
29
30. Книга Марка Симана - внедрение зависимостей в .net
Документация Autofac
Исходный код презентации
Статья Удобное создание Composition Root с помощью
Autofac
Статья Самая простая и надежная реализация Статья шаблона
проектирования Dispose
Статья Disposable без границ
30