Известно, что все хорошие джедаи используют внедрение зависимости (перевод) в своих проектах, это увеличивает концентрацию мидихлориан в крови и тестируемость кода в приложении. В данной статье я хочу рассмотреть некоторые аспекты использования UnityContainer в ASP.NET приложении, а именно, использование инжекции зависимостей через конструкторы контроллеров в ASP.NET MVC и WebApi и хабов в SignalR. Пример приложения присутствует.
Метка «dependency injection» - 2
ASP.NET MVC, WebApi, SignalR и UnityContainer
2013-04-02 в 14:11, admin, рубрики: .net, ASP, asp.net mvc, dependency injection, signalr, web api, метки: .net, asp.net mvc, c++, dependency injection, signalr, web apiВнедрение зависимости c Inversion
2013-02-12 в 17:59, admin, рубрики: dependency injection, inversion of control, php, метки: dependency injection, inversion of control, PHPInversion это простой и функциональный контейнер внедрения зависимости для PHP 5.3. Поддерживает сервис-ориентированную архитектуру, ссылки, PRS-0, и Composer.
Установить можно через packagist.org: granula/inversion либо скачав и добавив к PRS-0 совместимому загрузчику.
$container = new InversionContainer();
$container['foo'] = 'MyClassFoo';
// ...
$foo = $container('foo');
Dependency Injection: анти-паттерны
2013-01-21 в 4:18, admin, рубрики: .net, dependency injection, паттерны, Программирование, Проектирование и рефакторинг, метки: dependency injection, паттерныСлабая связанность (low coupling) часто является признаком хорошо структурированной компьютерной системы и признаком хорошего дизайна. © Wikipedia
Dependency Injection (DI) — это набор паттернов и принципов разработки програмного обеспечения, которые позволяют писать слабосвязный код. По мнению М.Фаулера, DI является разновидностью более глобального принципа инверсии управления (IoC), также известного как “Hollywood Principle”. Между тем, границы принципов внедрения зависимости достаточно размыты. Невозможно провести действительно четкую границу между этим и другими принципами написания качественного объектно-ориентированного кода. Например, принцип Dependency Inversion из SOLID, который часто путают с Dependency Injection, как бы подразумевает внедрение зависимостей, но им не ограничивается.
Как для любых паттернов и принципов, для DI существуют анти-паттерны. Ниже я их перечислю (с несколько вольным переводом англоязычных названий на русский язык).
Руководство по использованию Dependency Injection в Symfony2
2013-01-09 в 15:13, admin, рубрики: dependency injection, php, symfony, Веб-разработка, метки: dependency injection, PHP, symfonyВ данной статье приводится пример создания простого сайта-блога с использованием паттерна Dependency Injection. Применяется подход с внедрением зависимостей во все возможные компоненты Symfony: контроллеры, doctrine-репозитории, формы.
Для упрощения статьи сократим число страниц сайта до двух:
- Добавление нового поста (/add)
- Отображение списка всех постов (/list)
Финальная архитектура приложения будет выглядеть следующим образом:
Читать полностью »
Разработка архитектуры приложения с использованием инверсии зависимости
2012-11-13 в 9:19, admin, рубрики: dependency injection, inversion of control, php, метки: dependency injection, inversion of control, PHP
В этой статье я хочу ещё раз поговорить о разработке архитектуры приложения с использованием инверсии зависимости (Inversion of Control).
Я уже писал на хабре о библиотеке IoC и о Modular. Теперь я пошел ещё дальше и упростил все что только можно и попробую объяснить принципы построения архитектуры. А так же расскажу о новой библиотеке Granula.
Читать полностью »
Как я изобретал велосипед, изучая технологии
2012-09-17 в 15:43, admin, рубрики: .net, autofac, dependency injection, moq, tdd, метки: .net, autofac, c++, dependency injection, moq, tdd Неоднократно слышал утверждение, что язык программирования изучать лучше всего в процессе создания чего-либо. Не мог с этим не согласиться, и решил, что это распространяется не только на язык, но и на всякие технологии сосуществующие с этим языком.
Протаптывать неизведанную дорожку самому непросто, гораздо легче изучить, как кто-то протаптывает эту дорожку перед тобой. К изучению документаций у меня не лежит душа, ей я пользуюсь как справочником, а изучать что то с нуля отнимает слишком много времени и сил, так как авторы оной обычно предполагают, что у читателя знания обширнее, практически все что нужно он уже знает. Велосипедные темы же освещают именно процесс обучения, хождение по граблям и все прочее. К сожалению, на интересные мне темы достаточно подробных статей не нашел, изучал урывками, и решил все-таки написать статью сам, в надежде упростить жизнь тем, кто может пойти следом.
Читать полностью »
Auto dependency injection manager
2012-08-20 в 16:08, admin, рубрики: dependency injection, javascript, Песочница, метки: dependency injection, javascriptВступление
Как все мы знаем javascript это язык в котором очень просто выстрелить себе в ногу. Работая с этим языком уже почти пять лет, я не раз сталкивался с тем, что javascript предоставляет очень скудные инструменты для создания абстракций высокого уровня. А, создавая полноценные MVVM/MVP приложения, сталкиваешься с тем что, основной проблемой является трудность сохранить код и абстракцию в чистоте, не говоря уж о полноценном следовании SOLID принципам.
Со временем я пришел к пониманию, что один из основных паттернов который смог бы мне помочь -это Dependency Injection. И я решил поэкспериментировать с ним в JS.
Конечно, JS не предоставляет инструментов для полноценного следования этому паттерну (элементарное отсутствие тех же рефлекшенов), поэтому я решил поставить для себя несколько Acceptance Criteria, которых я хотел бы достигнуть адаптировав этот паттерн к такой уникальной среде как JS.
Читать полностью »
DroidParts — библиотека для Android 8-in-1
2012-06-04 в 12:40, admin, рубрики: android development, dependency injection, orm, Разработка под android, метки: android development, dependency injection, orm Этой статьёй я открываю цикл, посвящённый разработке Android-приложений. Но не типичных для Google Play, написанных, очевидно, задней левой mНогой, а приложений корректных и элегантных. В этом деле нам поможет DroidParts — швейцарский нож Android-библиотек с 8 лезвиями:
- Dependency Injection: инициализация системных и собственных зависимостей;
- Object-Relational Mapping для SQLite: CRUD-операции «из коробки»;
- Поддержка Fragments, ActionBarSherlock;
- Простая (де-)сериализация JSON;
- AsyncTasks, IntentService с обработкой Exсeptions;
- RESTful HTTP client с поддержкой JSON;
- L.og без указания тега, конфигурируемый через AndroidManifest;
- Утилиты типа асинхронного http-загрузчика с кешированием, View- и Intent-помощников.
Буквально час назад*
увидела свет первая версия библиотеки, но сначала…
Читать полностью »
Условно-бесплатный курс Building ASP.NET MVC Apps with EF Code First, HTML5, and jQuery
2012-04-25 в 13:03, admin, рубрики: .net, ASP.NET, dependency injection, EF Code First, html5, jquery, mvc, Pluralsight, unity, метки: ASP.NET, dependency injection, EF Code First, html5, jquery, mvc, Pluralsight, unity
Pluralsight предоставляет условно-бесплатную подписку на данный курс в течение одного месяца. Для того, чтобы получить подписку, необходимо выполнить следующие действия:Читать полностью »
Взвешенно о PHP
2012-04-20 в 12:33, admin, рубрики: dependency injection, php, symfony, zend, метки: dependency injection, PHP, symfony, zendВ последние дни было достаточно много было сказано разного про PHP. Всё началось с поста Фрактал плохого дизайна и продолжилось некоторыми неловкими попытками защитить любимый язык. Как ни крути, а в статье о «фрактале» — всё факты. Спорить с фактами бессмысленно. Давайте взглянем правде в глаза и объективно постараемся оценить сильные и слабые стороны РНР.
Если честно, то в вопросе PHP самому языку уделяется слишком много внимания. Да, статья «фрактал плохого дизайна» показала многие подводные камни при использования PHP. Но знаете, всем пофиг. Просто за годы использования, мы, разработчики, ни разу не искали подводные камни, и потому уже интуитивно избегаем нечетких конструкций. Да, конечно, примеры в статье абсолютно фееричны, но представляют скорее академическую критику языка. А PHP никогда не был академическим языком и всегда представлял сугубо практическую ценность. На ней и хотелось бы сосредоточиться.