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

Се́рвис-ориенти́рованная архитекту́ра (СОА, англ. service-oriented architecture- SOA) — модульный подход к разработке программного обеспечения, базирующийся на обеспечении удаленного использования по стандартизированным протоколам распределённых, слабо связанных[англ.], легко заменяемых компонентов (сервисов) со стандартизированными интерфейсами.

Программные комплексы, разработанные в соответствии с СОА, обычно реализуются как набор веб-служб, взаимодействующих по протоколу SOAP, но существуют и другие реализации (например, на базе jini, CORBA, на основе REST).

Интерфейсы компонентов в сервис-ориентированной архитектуре инкапсулируют детали реализации (операционную систему, платформу, язык программирования) от остальных компонентов, таким образом обеспечивая комбинирование и многократное использование компонентов для построения сложных распределённых программных комплексов, обеспечивая независимость от используемых платформ и инструментов разработки, способствуя масштабируемости и управляемости создаваемых систем.

Получила распространение в конце 1990-х — начале 2000-х годов. С середины 2010-х годов обрела популярность микросервисная архитектура — вариант СОА, базирующийся на применении, насколько это возможно, минимальных по размеру сервисов.

Технологии реализации

Сервис-ориентированная архитектура не привязана к какой-либо определённой технологии. Она может быть реализована с использованием широкого спектра технологий, включая такие технологии как REST, RPC, DCOM, CORBA или веб-сервисы. SOA может быть реализована с использованием одного из этих протоколов и, например, дополнительно может использовать механизм файловой системы для обмена данными.

Основная особенность SOA — это использование независимых сервисов, выполняющих точно определённые задачи, вызываемые стандартным способом через точно определённые интерфейсы, при отсутствии у сервисов знаний о вызывающих их приложениях, а у приложений — о способах, которыми сервисы выполняют свою задачу.

Элементы сервис-ориентированной архитектуры, по: Dirk Krafzig, Karl Banke, and Dirk Slama. Enterprise SOA. Prentice Hall, 2005

SOA также может рассматриваться как стиль архитектуры информационных систем, который позволяет создавать приложения, построенные путём комбинации слабо связанных взаимодействующих сервисов. Эти сервисы взаимодействуют на основе строго определённого платформенно- и языково-независимого интерфейса (например, WSDL). Определение интерфейса скрывает языковую реализацию сервиса.

Таким образом, системы, основанные на SOA, могут быть независимы от технологий разработки и платформ (таких как Java, .NET и т. д.). К примеру, сервисы, написанные на C#, работающие на платформах .NET и сервисы на Java, работающие на платформах Java EE, могут быть одинаковым образом вызваны общим составным приложением. Таким образом приложениям, работающим на одних платформах, обеспечивается возможность вызывать сервисы, работающие на других платформах, что облегчает повторное использование компонентов.

SOA может поддерживать интеграцию и консолидацию операций в составе сложных систем, однако SOA не определяет и не предоставляет методологии или фреймворки для документирования сервисов.

Языки высокого уровня, такие как BPEL, или спецификации, такие как WS-CDL[англ.] и WS-Coordination[англ.], расширяют концепцию сервиса, предоставляя метод оркестровки, для объединения сервисов низших уровней в более обширные бизнес-сервисы, которые, в свою очередь, могут быть использованы технологическими и бизнес-процессами, реализованными в виде составных приложений или порталов.

Использование компонентной архитектуры (SCA) для реализации SOA — это область текущих исследований.

Ссылки

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!