На высоком уровне ответ Да, однако не полностью.
SOA требует думать о системе, в терминах
- Services (четко определенные бизнес-функции)
- компоненты (дискретные куски кода и/или структур данных)
- процессов (Service оркестровки. Как правило, с использованием BPEL)
Возможность создания новых услуг более высокого уровня или бизнес-процессов является основной особенностью хорошего SOA. XML, веб-сервисы на основе SOAP и соответствующие стандарты хорошо подходят для реализации SOA.
Также SOA имеет несколько принятых принципов - http://en.wikipedia.org/wiki/Service-oriented_architecture#Principles
- стандартизированный контракт на сервисное обслуживание - Услуги прилипают к договору связи, как это определено в совокупности с помощью одного или нескольких услуг, описания документов.
- Service Loose Coupling - Сервисы поддерживают отношения, которые сводят к минимуму зависимости и требуют только того, чтобы они поддерживали понимание друг друга.
- Служба абстракции - Помимо описания в контракте на обслуживание, услуги скрывают логику от внешнего мира.
- Сервис повторного использования - логика делится на службы с целью поощрения повторного использования.
- Автономия службы. Службы имеют контроль над логикой, которую они инкапсулируют.
- Гранулярность сервисов. Рассмотрение дизайна для обеспечения оптимального объема и правильного детализации бизнес-функций в ходе сервисной операции.
- Служба безгражданства - услуги минимизируют потребление ресурсов путем отсрочки управления информацией о состоянии, когда это необходимо
- Обнаружение служб - Сервисы дополняются коммуникативными метаданными, с помощью которых они могут быть эффективно обнаружены и интерпретированы.
- Сервисная способность - услуги являются эффективными участниками композиции независимо от размера и сложности композиции.
Ожидается, что на основе архитектуры SOA будет определено обслуживание. Поскольку веб-службам RESTful не дается окончательное определение службы (аналогично wsdl), для системы, основанной на REST, сложно выполнить большинство вышеуказанных принципов.
Чтобы достичь того же с помощью REST, вы должны были бы иметь RESTful Web Services + Orchestration (возможно с помощью какой-то легкий ESB как MuleESB или верблюда)
Также см этот ресурс - From SOA to REST
Добавление этой части в качестве пояснения для следующего комментария -
Для составления процессов требуется оркестровка. Именно это обеспечивает основную выгоду SOA.
Скажем, у вас есть приложение для обработки заказов с операциями как -
- AddItem
- addTax
- calculateTotal
- PlaceOrder
Первоначально вы создали процесс (с помощью BPEL) который последовательно использует эти операции. У вас есть клиенты, которые используют эту составную услугу. Через несколько месяцев появляется новый клиент, у которого есть освобождение от налогов, вместо того, чтобы писать новую услугу, вы можете просто создать новый процесс, пропустив операцию addTax. Таким образом, вы могли бы быстрее реализовать бизнес-функции, просто повторно используя существующий сервис. На практике существует несколько таких услуг.
Таким образом, технология BPEL или аналогичная (ESB или маршрутизация) необходима для SOA. Без использования бизнеса SOA на самом деле не является SOA.
Cross размещен на моем персональном блоге - http://blog.padmarag.com
Также проверьте этот новый ресурс я наткнулся - REST based SOA
Кто-нибудь рассматривал альтернативные варианты, не связанные с HTTP, для REST для внутри-служебной связи? В чрезвычайно частых критических облачных платформах REST имеет свои недостатки. Это работает, но, скорее всего, будет следующая эволюция в плане коммуникации. Интересно, есть ли здесь кто-нибудь, кто имеет некоторый вклад в этой области. Ожидая, что модератор не понравится этому комментарию, но думал, что я все равно попробую. :) –