Що таке ресурсно-орієнтована архітектура (ROA)?

Ресурсно-орієнтована архітектура (ROA) — це архітектурний стиль, який розширює архітектурний стиль REST і пропонує ширшу, розширювану, гнучку та незалежну від транспорту архітектуру. Парадигма ресурсно-орієнтованої архітектури (ROA) побудована на понятті ресурсу. Ресурс — це автономний ідентифікований об’єкт зі станом, якому можна призначити універсальний ідентифікатор ресурсу (URI). Якщо служба виконує запитану дію, то ресурс — це розподілений компонент, яким керують через узгоджений стандартизований інтерфейс.

Однією з характеристик ресурсно-орієнтованої архітектури є її незалежність від транспорту. Тож мають існувати визначені механізми для надання ресурсно-орієнтованих сервісів зовнішньому світу. Коли споживач запитує уніфікований покажчик ресурсу (URL) і вказує метод доступу (наприклад, GET, PUT, POST і DELETE), URL-адреса перетворюється на відносний внутрішній URI. Метод доступу виконується.

Ресурсно-орієнтована архітектура ґрунтується лише на чотирьох концепціях:

  1. Ресурси
  2. URI
  3. Представлення
  4. Посилання та зв’язність

Ось чотири властивості ресурсно-орієнтованої архітектури:

  • Адресованість
  • Відсутність стану
  • Зв’язність
  • Єдиний інтерфейс

Ресурсно-орієнтована архітектура: ресурси

Ресурси — це будівельні блоки ROA; ресурс — це логічне представлення інформації. Наприклад, студент — це абстрактна сукупність точок даних, яку можна представити різними способами, зокрема XHTML, JSON і XML. Назва ресурсу містить таке:

  • Тип ресурсу
  • Ідентифікатор ресурсу
  • Назва батьківського ресурсу
  • Назва служби API.

Ресурс — це найважливіша абстракція інформації в архітектурі REST або RESTful. Термін «ресурс» стосується будь-якої ідентифікованої інформації. Такою інформацією може бути документ, комп’ютер, автомобіль, тимчасова служба (наприклад, «сьогоднішня погода в Огайо»), сукупність інших ресурсів, людина, студент тощо.

Кожне представлення незмінюваного ресурсу ідентифікується відносним універсальним ідентифікатором ресурсу (URI) і може містити посилання на інші ресурси, а також на інші незмінювані ресурси. Зверніть увагу, що ресурс також може мати кілька URI.

Кожен ресурс має відповідати таким характеристикам:

  • має бути унікальним
  • має мати принаймні одне представлення
  • має атрибути й схему, до якої можна отримати доступ і яка може надати контекст

Уніфікований ідентифікатор ресурсу (URI)

Уніфікований ідентифікатор ресурсу (URI) — це послідовність символів, яка містить назву й адресу ресурсу та використовується для ідентифікації логічного або фізичного ресурсу. Зверніть увагу, що ресурс має мати один або кілька URI. Без URI певна інформація не вважається ресурсом, оскільки на неї не можна послатися або отримати до неї доступ. Ви можете використовувати URI для ідентифікації будь-чого, наприклад об’єктів реального світу, вебсторінок, книжок тощо.


Особливості ресурсно-орієнтованих архітектур ROA

Ось чотири основні властивості ресурсно-орієнтованих архітектур:

Адресованість

Адресованість — важлива властивість ресурсно-орієнтованих архітектур. Застосунок можна вважати адресованим, якщо він публікує цікаві аспекти свого набору даних як кінцеві точки служби. Ці служби, своєю чергою, можна використовувати для роботи з даними застосунку. Оскільки ресурси в ROA надаються за допомогою URI, застосунок має надавати свої дані за допомогою URI.

Відсутність стану

Відсутність стану — ще одна особливість ресурсно-орієнтованих архітектур, яка означає, що кожен HTTP-запит у цій архітектурі виконується ізольовано. Іншими словами, коли клієнт запитує ресурс у сервера, клієнт має надати всю інформацію, яка може знадобитися серверу для успішного виконання запиту. Сервер ніколи не зберігає інформацію з попередніх запитів, тобто на сервері не зберігається інформація про стан. Якщо серверу потрібна інформація з попереднього запиту для обробки поточного, клієнт має знову надіслати цю інформацію в іншому запиті.

Зв’язність

У ресурсно-орієнтованій архітектурі представлення — це гіпермедіа: документи, що містять і дані, і посилання на інші ресурси. RESTful вебсервіси дотримуються принципу Hypermedia As The Engine Of Application State (HATEOS). Цей принцип полягає в тому, що формат даних впливає на стани переходів у вашому застосунку. Посилання на інші ресурси вбудовані у відповідь, але вони можуть відрізнятися для того самого ресурсу залежно від його поточного стану.

Однією з найважливіших характеристик мережі є її взаємозв’язок, тобто практично вся інформація в Інтернеті пов’язана між собою гіперпосиланнями. Гіперпосилання можна використовувати, щоб з’єднати будь-який доступний в Інтернеті ресурс з іншим ресурсом. Застосунок, побудований на основі ROA, має містити ресурси, пов’язані між собою, і навпаки. Коли ми вибираємо відповідне представлення ресурсу, то можемо забезпечити зв’язність у застосунку.

Єдиний інтерфейс
У вас має бути набір чітко визначених методів, які можуть маніпулювати ресурсами вашого застосунку. Наприклад, HTTP надає такі поширені операції, які зазвичай потрібно виконувати в будь-якому застосунку:

  • HTTP GET — отримати ресурс
  • HTTP POST — створити нові ресурси
  • HTTP PUT — змінити наявний ресурс
  • HTTP DELETE — видалити наявний ресурс

HTTP-методи HEAD і OPTIONS

Ось ще два важливі методи HTTP, про які варто знати:

HTTP HEAD — використовується для отримання представлення ресурсу, що містить лише метадані.

HTTP OPTIONS — використовується, щоб перевірити, які методи HTTP підтримує конкретний ресурс.

Підсумуймо

Ресурсно-орієнтована архітектура не має стану й обертається навколо ресурсу. URI використовується для ідентифікації кожного ресурсу. Ви завжди можете одночасно мати на своєму комп’ютері кілька копій того самого ресурсу. Також ви можете мати кілька URI для одного ресурсу.