Главная страница   /   18. Внедрение зависимостей и расширяемость (ASP.NET MVC 4 в действии

ASP.NET MVC 4 в действии

ASP.NET MVC 4 в действии

Джеффри Палермо

18. Внедрение зависимостей и расширяемость

Данная глава охватывает следующие темы:

  • Создание пользовательских фабрик контроллеров
  • Внедрение зависимостей в контроллерах
  • Использование DependencyResolver в рамках StructureMap
  • Обзор возможностей расширения

Знание того, как создавать работоспособное программное обеспечение, является важным. Вероятно, большинство корпоративных систем большую часть своего жизненного цикла проводят в фазе работоспособности, нежели в фазе первоначальной разработки. Например, представьте себе, что вы разрабатываете финансовую систему, которая будет использоваться на протяжении следующих пяти лет. На первоначальную разработку может понадобиться 6 месяцев или один год, но как только этой системой начнет пользоваться потребитель, она войдет в фазу непрерывной эксплуатации и пробудет в ней на протяжении всего оставшегося жизненного цикла.

В течение этого времени, вероятно, нужно будет определять дефекты, знакомиться с новыми элементами и модифицировать существующие элементы, так как с течением времени изменяются требования. Способность выполнять эти изменения быстро и с легкостью важна (особенно если ваш клиент, в противном случае, может начать терять деньги). Уверенность в том, что код работоспособен, также помогает новым разработчикам начать преуспевать в работе над проектом и понимать, как он работает, даже в тех случаях, когда первоначальные разработчики с тех времен сильно продвинулись вперед.

Существует множество способов содействия поддержанию кода в работоспособном состоянии, к примеру, наличие автоматизированных регрессионных тестов или разбиение огромных, сложных программ на маленькие, что способствует более легкому управлению частями программы.

В случае объектно-ориентированных языков таких, как C#, это обычно означает, что классы должны создаваться с индивидуальными, конкретными обязанностями. Вместо размещения всех обязанностей в одном месте (например, единственный класс, который управляет пользовательскими входными данными, обращением к базе данных или отображением HTML) вы имеете классы, предназначенные для конкретных целей. Конечным результатом является то, что вы можете разрабатывать конкретные фрагменты функциональности без необходимости затрагивать другие области кода. Результатом этого подхода является то, что приложения обычно состоят из огромного количества небольших компонентов, которые работают совместно для достижения определенного результата.

В этой главе мы рассмотрим то, как механизм внедрения зависимостей (DI) может применяться для того, чтобы достичь разделения. Мы начнем с изучения этого механизма, а затем рассмотрим, как ASP.NET MVC позволяет нам эффективно применять этот механизм посредством использования контейнера, который выступает в роли клея, соединяющего все эти компоненты.

Внимание

В этой главе мы поговорим о том, как важно создавать работоспособное программное обеспечение, и как механизмы, к примеру, DI, могут помочь достичь этого. Но важно не начать чересчур концентрироваться на технических деталях.

Что касается разработчиков, то очень часто можно начать отвлекаться на технические детали, конструкторские паттерны и создание первоклассной, работоспособной архитектуры вместо того, чтобы фокусироваться на том, что действительно является важным – решение проблем пользователя. Наличие самого работоспособного в мире кода не поможет пользователю, если приложение в действительности не работает.

В конечном счете, вам придется оценить, сколько времени и усилий необходимо вложить в работоспособность конкретного проекта. Например, представьте себе, что вы создаете веб-сайт в поддержку кампании политического кандидата. Вероятно, не стоит создавать сложную, высоко работоспособную и расширенную архитектуру для этого сайта, если от него планируют избавиться, как только закончится трехмесячная кампания.

Знание того, когда и где уместно использовать механизм или средство также важно, как и знание того, как применять этот механизм или средство.

18.1. Знакомство с механизмом внедрения зависимостей

18.2. Использование механизма внедрения зависимостей в ASP.NET MVC

18.3. Резюме