Материал из Wiki.
Се́рвисно-ориенти́рованная архитекту́ра (англ. SOA, service-oriented architecture) — подход к разработке программного обеспечения, основанный на использовании сервисов (служб) со стандартизированными интерфейсами.
Компоненты программы могут быть распределены по разным узлам сети, и предлагаются как независимые, слабо связанные, заменяемые сервисы-приложения. Программные комплексы, разработанные в соответствии с СОА, часто реализуются как набор веб-сервисов, интегрированных при помощи известных стандартных протоколов (SOAP, WSDL, и т. п.)
Интерфейс компонентов СОА-программы предоставляет инкапсуляцию деталей реализации конкретного компонента (ОС, платформы, языка программирования, вендора, и т. п.) от остальных компонентов. Таким образом, СОА предоставляет гибкий и элегантный способ комбинирования и многократного использования компонентов для построения сложных распределённых программных комплексов.
СОА хорошо зарекомендовала себя для построения крупных корпоративных программных приложений. Целый ряд разработчиков и интеграторов предлагают инструменты и решения на основе СОА (например, платформа IBM WebSphere или SAP NetWeaver®).
[править] Определение SOA
СОА - это модель для объединения вычислительных ресурсов (в основном, приложений и данных) с требованиями достижения желаемых результатов для потребителей сервисов (которые могут быть представлены как конечными пользователями, так и другими сервисами). OASIS (Организация по Продвижению Стандартов Структурированной Информации) определяет СОА следующим образом:
Парадигма для организации и использования распределенных возможностей, которые могут принадлежать доменам с различными владельцами. Она предоставляет универсальные средства по предложению, раскрытию, взаимодействию и использованию возможностей для производства желаемых эффектов, согласующихся с измеряемыми предусловиями и ожиданиями.
[править] Принципы SOA
Слабые связи
[править] Другие SOA-Концепции
Архитектура не привязана к какой-то определённой технологии. Она может быть реализована с использованием широкого спектра технологий, включая такие технологии как REST, RPC, DCOM, CORBA или веб-сервисы. SOA может быть реализована используя один из этих протоколов и, например, может использовать механизм файловой системы для обмена данными. Главное, что отличает SOA, это использование независимых сервисов с чётко определёнными интерфейсами, которые могут быть вызваны стандартным способом для выполнения их задач, при условии, что сервисы заранее ничего не знает о приложении, которое их вызовет, а приложение не знает каким образом сервисы выполняют свою задачу.
СОА также может быть рассматриваться как стиль архитуктуры информационных систем,
который позволяет создавать приложения, построенные путём комбинации слабо-связанных и
взаимодействующих сервисов. Эти сервисы взаимодействуют на основе строго определённого платформенно-независимого и языково-независимого интерфейса (например, WSDL). Определение интерфейса скрывает языково-зависимую реализацию сервиса.
Таким образом системы, основанные на СОА, могут быть независимы от технологий разработки и платформ (таких как Java, .NET и т.д.). К примеру, сервисы, написанные на C#, работающие на платформах .Net и сервисы на Java, работающие на платформах Java EE, могут быть с одинаковым успехом вызваны общим составным приложением. Приложения, работающие на одних платформах, могут вызывать сервисы, работающие на других платформах, что облегчает повторное использование компонентов.
СОА может поддерживать интеграцию и консолидацию операций в составе сложных систем, однако СОА не определяет и не предоставляет методологий или фреймворков для документирования сервисов.
Языки высокого уровня, такие как BPEL или спецификации, такие как WS-CDL и WS-Coordination расширяют концепцию сервиса, предоставляя метод оркестрации для объединения мелких сервисов в более обширные бизнес-сервисы, которые, в свою очередь, могут быть включены в состав технологических процессов и бизнес-процессов, реализованных в составных приложений или порталов.
Использование компонентной архитектуры (SCA) для реализации СОА -- это область текущих исследований.