является типовой реализацией инверсии зависимостей. При использовании
Dependency Injection контейнер описывает сопоставления, определяющие как
находить компоненты, от которых могут зависеть другие компоненты, и контейнер
может создавать и вводить эти зависимые компоненты автоматически. Подход с
инверсией зависимостей обеспечивает гибкость и может помочь в реализации
модульного дизайна, поскольку зависимости определяются конфигурацией, а не
кодом. Также такой подход максимально упрощает тестирование, потому что
позволяет вводить тестовые классы на разные уровни дизайна.
Основанный на обмене сообщениями. Вместо взаимодействия с компонентами
других слоев напрямую через вызов их методов или доступ к свойствам можно
использовать связь посредством обмена сообщениями для реализации
интерфейсов и обеспечения взаимодействия между слоями. Существует несколько
решений для обмена сообщениями, такие как Windows Communication Foundation,
Веб-сервисы и Microsoft Message Queuing, которые поддерживают взаимодействие
через физические границы и границы процессов. Можно также комбинировать
абстрактные интерфейсы с общим типом сообщений, используемым для
определения структур данных для взаимодействия. Основное отличие подхода на
основе сообщений в том, что для взаимодействия между слоями используется
общий интерфейс, инкапсулирующий все детали взаимодействия. Этот интерфейс
может определять операции, схемы данных, контракты уведомления о сбоях,
политики системы безопасности и многие другие аспекты, относящиеся к обмену
данными между слоями. Основанный на обмене сообщениями подход
рекомендуется применять при реализации Веб-приложения и описании
интерфейса между слоем представления и бизнес-слоем, который должен
поддерживать множество типов клиентов, или если требуется поддерживать
взаимодействие через физические границы и границы процессов. Также
рассмотрите возможность применения такого подхода, если хотите формализовать
взаимодействие или взаимодействовать с интерфейсом, не сохраняющим
состояние, когда данные о состоянии передаются с сообщением.
Для реализации взаимодействия между слоем представления Веб-приложения и слоем
бизнес-логики рекомендуется использовать подход на основе сообщений. Если бизнес-слой не
сохраняет состояния между вызовами (другими словами, каждый вызов между слоем
представления и бизнес-слоем представляет новый контекст), можно передавать данные
контекста вместе с запросом и обеспечить общую модель обработки исключений и ошибок в
слое представления.
Шаг 8 – Выбор стратегии развертывания
Существует несколько общих шаблонов, которые представляют структуры развертывания
приложений, применяемые во многих решениях. Когда требуется выбрать наиболее
подходящее решение развертывания для приложения, полезно сначала рассмотреть общие
шаблоны. Только полностью разобравшись с разными схемами развертывания, можно
переходить к конкретным сценариям, требованиям и ограничениям безопасности, чтобы
определиться с наиболее подходящим шаблоном или шаблонами. Более подробно шаблоны
развертывания рассматриваются в главе 19, «Физические уровни и развертывание».