Сервис-ориентированная архитектура (SOA) и ресурсо-ориентированная архитектура (ROA) — это шаблоны архитектурного проектирования, используемые для реализации надежных масштабируемых архитектур распределенных приложений. Распределенные архитектуры состоят из компонентов, которые используются в сети через четко определенные интерфейсы.
В ROA эти компоненты называются ресурсами, а в SOA — службами. В этой статье представлен обзор ресурсно-ориентированной архитектуры.
Ресурсно-ориентированная архитектура (ROA) — это стиль архитектуры, который расширяет архитектурный стиль REST и предлагает более широкую, расширяемую, гибкую и независимую от транспорта архитектуру. Парадигма ресурсно-ориентированной архитектуры (ROA) построена на понятии ресурса. Ресурс — это автономный идентифицируемый объект, имеющий состояние, которому может быть назначен универсальный указатель ресурса (URI). В то время как служба представляет собой выполнение запрошенного действия, ресурс представляет собой распределенный компонент, управляемый через согласованный стандартизированный интерфейс.
Одной из характеристик ресурсо-ориентированной архитектуры является то, что она не зависит от транспорта. Таким образом, должны быть определенные механизмы для раскрытия ресурсо-ориентированных сервисов внешнему миру. Когда потребитель запрашивает унифицированный указатель ресурсов (URL) и указывает метод доступа (например, GET, PUT, POST и DELETE), URL-адрес преобразуется в относительный внутренний URI. Метод доступа претворяется в жизнь.
Ресурсо-ориентированная архитектура основана всего на четырех концепциях:
Вот четыре свойства ресурсно-ориентированной архитектуры:
Ресурсы являются строительными блоками ROA; ресурс — это логическое представление информации. Например, студент — это абстрактная коллекция точек данных, которые могут быть представлены различными способами, включая XHTML, JSON и XML. Имя ресурса включает в себя следующее:
Ресурс — это наиболее важная абстракция информации в архитектуре REST или RESTful. Термин «ресурс» относится к любой идентифицируемой информации. Такой информацией может быть документ, компьютер, автомобиль, временная служба (например, «сегодняшняя погода в Огайо»), совокупность других ресурсов, человек, студент и так далее.
Каждое представление неизменяемого ресурса идентифицируется относительным универсальным индикатором ресурса (URI) и может включать подключения к другим ресурсам, а также к другим неизменяемым ресурсам. Обратите внимание, что у ресурса также может быть несколько URI.
Каждый ресурс должен иметь следующие характеристики:
Унифицированный идентификатор ресурса (URI) — это последовательность символов, которая содержит имя и адрес ресурса и используется для идентификации логического или физического ресурса. Обратите внимание, что ресурс должен иметь один или несколько URI. Без URI часть информации не считается ресурсом, поскольку на нее нельзя ссылаться или получить к ней доступ. Вы можете использовать URI для идентификации чего угодно, например объектов реального мира, веб-страниц, книг и т. д.
Вот четыре основных свойства ресурсно-ориентированных архитектур:
Адресуемость является важным свойством ресурсо-ориентированных архитектур. Приложение можно считать адресуемым, если оно публикует интересные аспекты своего набора данных в качестве конечных точек службы. Эти сервисы, в свою очередь, могут быть использованы для работы с данными приложения. Поскольку ресурсы в ROA предоставляются с использованием URI, приложение должно предоставлять свои данные с использованием URI.
Отсутствие состояния — еще одна особенность ресурсо-ориентированных архитектур, подразумевающая, что каждый HTTP-запрос в этой архитектуре выполняется изолированно. Другими словами, когда клиент запрашивает ресурс у сервера, клиент должен предоставить всю информацию, которая может потребоваться серверу для успешного выполнения запроса. Сервер никогда не сохраняет информацию из предыдущих запросов, т. е. на сервере не хранится информация о состоянии. Если серверу требуется информация из более раннего запроса для обработки запроса, клиент должен снова отправить эту информацию в другом запросе.
В ресурсно-ориентированной архитектуре представления представляют собой гипермедиа: документы, содержащие как данные, так и ссылки на другие ресурсы. RESTful веб-сервисы следуйте принципу Hypermedia As The Engine Of Application State (HATEOS). Это принцип, согласно которому формат данных влияет на состояния перехода в вашем приложении. Ссылки на другие ресурсы встроены в ответ, но они могут различаться для одного и того же ресурса в зависимости от его текущего состояния.
Одной из наиболее важных характеристик сети является ее взаимосвязанность. т. е. практически вся информация в Интернете связана друг с другом посредством гиперссылок. Гиперссылка может использоваться для подключения любого ресурса, доступного в Интернете, к другому ресурсу. Приложение, построенное на основе ROA, должно иметь все свои ресурсы, связанные друг с другом и наоборот. Когда мы выбираем подходящее представление для ресурса, мы можем добиться связности в приложении.
Единый интерфейс
У вас должен быть набор четко определенных методов, которые могут манипулировать ресурсами вашего приложения. Например, HTTP предоставляет следующие общие операции, которые вам обычно необходимо выполнять в любом приложении:
Вот два других важных метода HTTP, которые вы должны знать:
HTTP HEAD — используется для получения представления ресурса, состоящего только из метаданных.
OPTIONS HTTP — используется для проверки того, какие методы HTTP поддерживаются конкретным ресурсом.
Ориентированная на ресурсы архитектура не имеет состояния и вращается вокруг ресурса. URI используется для идентификации каждого ресурса. Вы всегда можете иметь несколько копий одного и того же ресурса на своем компьютере одновременно. Вы также можете иметь несколько URI для одного ресурса.
ROA, SOA, разработка, REST