Компонентная архитектура VS сервис-ориентированной архитектуры

Плюсы компонентной архитектуры

 №    Компонентная архитектураСервисно-Ориентированная Архитектура
 1Потребитель известен, т.к. компонент, вызывается другим компонентом / классом / подсистемами (все контракты зафиксированы в классе посреднике/медиаторе).Потребитель неизвестен (непонятно кто вызывает публичный сервис). В большинстве случаев клиенты будут динамически меняться (например frontend приложение в браузере).
 2Контракт в целом очень строг (на интерфейсе или VO)Для реализации строгости контракта требуется как минимум описание контрактов взаимодействия сервисов. Если два взаимодействующих сервиса написаны на одном языке, то желательно иметь общий список DTO для запросов/ответов или классы-интерфейсы для контрактов.
 3Совместимость не требует транспорта и протокола обмена данными.Совместимость основана на политике. Политика, в данном случае, означает описание характеристик, таких как транспорт, протокол и безопасность.
 4Доступ происходит через объекты памяти (посредством VM). При необходимости доступ в виде отдельного сервиса или части сервиса так же легко реализуем.Доступ через объекты памяти (посредством VM) не может быть реализован. Доступ осуществляется через стандартные протоколы/подходы, такие как SOAP / REST.
 5Не нуждается в объединении для одновременной работы.Объединение выполняется с помощью оркестрации
 6Производительность от хорошей до отличнойПроизводительность средняя или плохая. Сильная зависимость от внешних факторов, таких как другие сервисы / сеть / ширина полосы и т. д.
 7Разработка нефункциональных аспектов простаРазработка нефункциональных аспектов еще более сложна и проблематична
 8Нет затрат на передачу данныхЗатраты на передачу данных
9Нет затрат на сериализацию/десериализацию структур данныхЗатраты на сериализацию/десериализацию структур данных
 10Более простое и обычно более высокое соблюдение SLA (Service Level Agreement) при взаимодействии нескольких компонентовБолее сложное и более низкое соблюдение SLA при взаимодействии нескольких сервисов
 11Нет необходимости проверять аутентификацию, авторизацию во время выполнения    Дополнительные накладные расходы для каждого вызова службы в форме аутентификации, авторизации, аудита и т.д.
12Простые транзакции и простой откат (в случае проблем).Сложные распределенные транзакции и сложный откат. Необходимо брать блокировку сразу на все узлы, но это не очень эффективно и распределённая блокировка — это сложно, например алгоритм двухфазной блокировки
13Есть возможность переиспользования существующих подключений к другим ресурсам (например к базам данных).Нет возможности переиспользования существующих подключений к другим ресурсам (например к базам данных).
14Слой инфраструктуры не нуждается в версионировании, но может ее иметь.Слой инфраструктуры требуется обновлять вручную (версионирование неизбежно).

03.04.2011 16:52