Плюсы компонентной архитектуры
| № | Компонентная архитектура | Сервисно-Ориентированная Архитектура |
| 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 | Слой инфраструктуры не нуждается в версионировании, но может ее иметь. | Слой инфраструктуры требуется обновлять вручную (версионирование неизбежно). |