котором компоненты представления напрямую взаимодействуют с компонентами
бизнес-слоя, или слабое связывание, когда применяется абстракция, скрывающая
детали компонентов бизнес-слоя? Для простоты в насыщенном клиентском
приложении или RIA, в котором оба набора компонентов располагаются на клиенте,
можно использовать тесное связывание между компонентами представления и
бизнес-слоя, но слабое связывание между этими компонентами обеспечит лучшую
тестируемость и гибкость. Если компоненты бизнес-слоя насыщенного клиентского
приложения или RIA располагаются на сервере приложений или Веб-сервере,
спроектируйте интерфейс сервиса, чтобы обеспечить предельно слабое
связывание.
Взаимодействие. Если компоненты бизнес-слоя и слоя представления
размещаются на одном уровне, используйте компонентные взаимодействия через
события и методы, что обеспечивает максимальную производительность. Однако
реализуйте интерфейс сервиса и используйте взаимодействия посредством обмена
сообщениями между слоем представления и компонентами бизнес-слоя, если
компоненты бизнес-слоя и Веб-сервер располагаются на разных уровнях; если
разрабатывается Веб-приложение со слабым связыванием между слоем
представления и бизнес-слоем; или при наличии насыщенного клиента или
приложения RIA. Если насыщенное клиентское приложение или RIA подключаются
к серверу приложений или Веб-серверу лишь время от времени, необходимо
внимательно подойти к вопросу проектирования интерфейса сервиса, который
должен обеспечивать повторную синхронизацию клиента при подключении.
При реализации взаимодействия посредством сообщений продумайте, как будут
обрабатываться повторяющиеся запросы и обеспечиваться гарантированная доставка
сообщений. Идемпотентность (способность игнорировать дублирующиеся запросы) важна для
сервисных приложений; основанных на сообщениях приложений, которые используют такую
систему обмена сообщениями, как Microsoft Message Queuing; или для Веб-приложений, в
которых долго выполняющиеся процессы могут привести к попыткам пользователя выполнить
одно действие несколько раз. Гарантированная доставка необходима для основанных на
сообщениях приложений, которые используют такую систему обмена сообщениями, как
Microsoft Message Queuing; сервисов, применяющих маршрутизаторы сообщений между
клиентом и сервисом; или сервисов, поддерживающих операции типа «отправил и забыл»,
при которых клиент отправляет сообщение, не ожидая ответа на него. Также не забывайте, что
кэшированные сообщения, сохраняемые в ожидании обработки, могут устаревать.
Шаг 3 – Выбор соответствующей поддержки транзакций
Компоненты бизнес-слоя отвечают за координирование и управление всеми транзакциями,
которые могут потребоваться в бизнес-слое. Но, прежде всего, необходимо убедиться в
необходимости поддержки транзакций. Транзакции гарантируют, что наборы действий над
одним или более диспетчерами ресурсов, такими как базы данных или очереди сообщений,
выполняются единым блоком независимо от других транзакций. Если хотя бы одно из
действий набора дает сбой, для всех остальных действий должен быть выполнен откат, чтобы
обеспечить согласованность состояния системы. Например, имеется операция, которая