Сервис-ориентированная архитектура и Web-сервисы

Сервис-ориентированная архитектура (SOA, англ. service-oriented architecture) — модульный подход к разработке программного обеспечения, основанный на использовании распределённых, слабо связанных (англ. loose coupling) заменяемых компонентов, оснащённых стандартизированными интерфейсами для взаимодействия по стандартизированным протоколам.
Программные комплексы, разработанные в соответствии с сервис-ориентированной архитектурой, обычно реализуются как набор веб-служб, взаимодействующих по протоколу SOAP, но существуют и другие реализации (например, на базе jini, CORBA, на основе REST).
Интерфейсы компонентов в сервис-ориентированной архитектуре инкапсулируют детали реализации (операционную систему, платформу, язык программирования) от остальных компонентов, таким образом обеспечивая комбинирование и многократное использование компонентов для построения сложных распределённых программных комплексов, обеспечивая независимость от используемых платформ и инструментов разработки, способствуя масштабируемости и управляемости создаваемых систем.
Архитектура не привязана к какой-либо определённой технологии. Она может быть реализована с использованием широкого спектра технологий, включая такие технологии как REST, RPC, DCOM, CORBA или веб-сервисы. SOA может быть реализована, используя один из этих протоколов и, например, может использовать дополнительно механизм файловой системы для обмена данными.
Главное, что отличает SOA — это использование независимых сервисов с чётко определёнными интерфейсами, которые для выполнения своих задач могут быть вызваны неким стандартным способом, при условии, что сервисы заранее ничего не знают о приложении, которое их вызовет, а приложение не знает, каким образом сервисы выполняют свою задачу.
SOA также может рассматриваться как стиль архитектуры информационных систем, который позволяет создавать приложения, построенные путём комбинации слабосвязанных и взаимодействующих сервисов. Эти сервисы взаимодействуют на основе какого-либо строго определённого платформенно-независимого и языково-независимого интерфейса (например, WSDL). Определение интерфейса скрывает языково-зависимую реализацию сервиса.
Таким образом, системы, основанные на SOA, могут быть независимы от технологий разработки и платформ (таких как Java, .NET и т. д.). К примеру, сервисы, написанные на C#, работающие на платформах .Net и сервисы на Java, работающие на платформах Java EE, могут быть с одинаковым успехом вызваны общим составным приложением. Приложения, работающие на одних платформах, могут вызывать сервисы, работающие на других платформах, что облегчает повторное использование компонентов.
SOA может поддерживать интеграцию и консолидацию операций в составе сложных систем, однако SOA не определяет и не предоставляет методологий или фреймворков для документирования сервисов.
Языки высокого уровня, такие как BPEL, или спецификации, такие как WS-CDL и WS-Coordination, расширяют концепцию сервиса, предоставляя метод оркестрации, для объединения мелких сервисов в более обширные бизнес-сервисы, которые, в свою очередь, могут быть включены в состав технологических процессов и бизнес-процессов, реализованных в виде составных приложений или порталов.
Использование компонентной архитектуры (SCA) для реализации SOA — это область текущих исследований.
Наиболее популярные продукты категории Сервис-ориентированная архитектура и Web-сервисы Все продукты категории
Поставщики Сервис-ориентированная архитектура и Web-сервисы
Производители Сервис-ориентированная архитектура и Web-сервисы
F.A.Q. Сервис-ориентированная архитектура и Web-сервисы
Что такое сервис-ориентированная архитектура?
Сервис-ориентированная архитектура (SOA) - это стиль архитектуры программного обеспечения, который поддерживает и распространяет компоненты приложения, которые включают в себя обнаружение, отображение данных, безопасность и многое другое. Сервис-ориентированная архитектура имеет две основные функции:
- Создание архитектурной модели, определяющей цели приложений и методов, которые помогут достичь этих целей.
- Определение спецификаций реализации, связанные через WSDL (язык описания веб-сервисов) и SOAP (протокол простого доступа к объектам).
Принципы сервис-ориентированной архитектуры состоят из девяти основных элементов:
- Стандартизированный договор на обслуживание, в котором определяются услуги, облегчающие для клиентских приложений понимание цели услуги.
- Слабая связь - это способ соединения компонентов в системе или сети, чтобы компоненты могли зависеть друг от друга в наименьшей степени приемлемой. При изменении функциональности или настроек службы не происходит простоев или сбоев в работе приложения.
- Сервисная абстракция скрывает логику того, что делает приложение. Он передает клиентскому приложению только то, что оно делает, а не то, как оно выполняет действие.
- Повторное использование сервисов разделяет сервисы с целью повторного использования, насколько это возможно, чтобы избежать затрат ресурсов на создание одного и того же кода и конфигураций.
- Сервисная автономия обеспечивает логику задачи или выполнения запроса в коде.
- Служба безгражданства, при которой службы не скрывают информацию из одного состояния в другое в клиентском приложении.
- Обнаружение службы через реестр служб.
- Составляемость службы разбивает большие проблемы на более мелкие элементы, сегментируя службу на модули, делая ее более управляемой.
- Функциональная совместимость услуг регулирует использование стандартов (например, XML) для обеспечения большей простоты использования и совместимости.
Как работает сервис-ориентированная архитектура?
Сервис-ориентированная архитектура (SOA) работает как поставщик компонентов сервисов приложений для других компонентов по сети. Сервис-ориентированная архитектура облегчает программным компонентам работу друг с другом в нескольких сетях.
Сервис-ориентированная архитектура реализована с помощью веб-сервисов (на основе WSDL и SOAP), чтобы быть более доступной по стандартным интернет-протоколам на независимых платформах и языках программирования.
Сервис-ориентированная архитектура имеет 3 основных цели, каждая из которых фокусируется на частях цикла приложений:
- Структурируйте процессы и программные компоненты как сервисы - упростив для разработчиков программного обеспечения последовательное создание приложений.
- Предоставить способ публикации доступных сервисов (функциональность и требования ввода/вывода) - позволяя разработчикам легко включать их в приложения.
- Контролировать использование этих сервисов в целях безопасности - главным образом вокруг компонентов в архитектуре и обеспечения безопасности соединений между этими компонентами.
Программное обеспечение архитектуры микросервисов является в значительной степени обновленной реализацией сервис-ориентированной архитектуры (SOA). Компоненты программного обеспечения создаются как сервисы, которые используются через API-интерфейсы, обеспечивающие безопасность и лучшие практики, как в традиционных сервис-ориентированных архитектурах.
Каковы преимущества сервис-ориентированной архитектуры?
Основными преимуществами сервис-ориентированных архитектурных решений являются:
- Расширяемость - легко может расширяться или дополняться.
- Возможность многократного использования - возможность повторного использования многоцелевой логики.
- Ремонтопригодность - возможность поддерживать его в актуальном состоянии без необходимости переделки и повторного построения архитектуры с теми же конфигурациями.

Сервис-ориентированная архитектура
Wikipedia
https://ru.wikipedia.org/wiki/Сервис-ориентированная_архитектураService-Oriented Architecture
https://avinetworks.com/glossary/service-oriented-architecture/