Подтвердить что ты не робот

В чем разница между API и SOA

Есть много вопросов What is the difference between..., но я не смог найти этот.

Википедия говорит об этом API

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

И это о SOA

SOA также, как правило, предоставляет пользователям доступ к сервисам, таким как веб-приложения, доступ к имеющимся сервисам на основе SOA.

Не обе технологии, когда вы предоставляете услуги другим службам?
Может ли кто-то расширить это?

4b9b3361

Ответ 1

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

В качестве примера у вас может быть одна служба, ответственная за захват заказов клиентов, которая публикует событие OrderCaptured для шины; и отдельную службу, отвечающую за отслеживание при выставлении счета клиенту и сколько стоит, который подписывается на шину и отвечает на событие OrderCaptured. Первой услуге, возможно, не нужно ничего знать о выставлении счетов из-за разделения ответственности. И обе службы не должны знать друг о друге, только о событиях, происходящих вокруг них.

API - это интерфейс, который предоставляет компонент/служба, чтобы другие компоненты могли связываться с ним. В приведенном выше примере шина предоставляет общий API для нескольких служб для связи.

Вкратце:

API = любой способ связи, отображаемый программным компонентом.

SOA = набор принципов корпоративного архитектурного проектирования для решения проблем масштабируемости путем разделения ответственности на сервисы.

Ответ 2

В других словах:

SOA - это шаблон архитектуры.

API - один из способов введения или включения шаблона SOA.

SOA - это метод проектирования "Планирование" {Blue Print}.

API - это фактическая реализация проекта.

Ответ 3

Краткая и краткая версия:

API - это слой для обеспечения доступа к данным через http, web-сокеты и т.д. и более дружественный для мобильных устройств. Эти API должны быть сконструированы с учетом поддержки SOA и в настоящее время используют современные технологии, развивающиеся вокруг JSON и REST.

SOA - это более высокий уровень бизнес-решений A2A и B2B, где, когда бизнес должен передавать данные между различными типами среды, API построены, и вокруг него создаются бизнес-правила. Технологии обычно представляют собой XML, RPC и SOAP.

Оба используют взаимозаменяемые технологии. Безопасность может быть устранена на обоих, SOA обычно так, API меньше, если его целью является предоставление открытых данных.

Ответ 4

Похоже, есть много мнений об этом; это интересно читать. Вот мой прием.

SOA: SOA - это архитектурный шаблон, ориентированный на обслуживание, для построения и доступа к наборам программных компонентов/сервисов (как было отмечено в ответе выше). Принципы SOA, которые формируют шаблон SOA, можно найти во многих местах, не все из которых согласуются друг с другом, делая SOA несколько туманным термином. Служба SOA может быть построена практически с любой современной технологией разработки программного обеспечения (см. Ниже).

API. Обычно термин "API" используется для обозначения того, как программно использовать или взаимодействовать с программным решением. Он может ссылаться на такие вещи, как спецификации, язык программирования и его компоненты (API Java), спецификацию доступа и/или расширения решения COTS, спецификация использования услуги или набора услуг (включая подпись или структура данных, связанная с взаимодействием с сервисом) и т.д.

SOA и API: API для службы SOA может включать в себя концептуальные, технологично-агностические характеристики службы (например, один элемент данных будет последним именем клиента), а также физические, специфичные для технологии спецификации использования для каждого физического экземпляра этой службы SOA (например: два экземпляра будут доступны, один с использованием раскладки JSON, а другой - макет XML, каждый из которых содержит примерно эквивалентные физические спецификации для элемента данных LAST NAME).

Заблуждение: термин API должен использоваться только для обозначения RESTful или "простых, легких" или интерфейсов на основе JSON (примечание стороны: RESTful не эквивалентен "простому" или "легкому" ). Фактически, API может быть структурирован по многим шаблонам с использованием многих технологий, включая службы на основе WS *.

Заблуждение: SOA строго следует WS * или другим "сложным, тяжеловесным" интерфейсам. Фактически, сервисы SOA могут быть сконструированы и использованы с использованием практически любых современных технологий разработки программного обеспечения, включая подходы RESTful или файлы JSON.

Подробнее о SOA: SOA - это шаблон архитектуры, основанный на концепции, что возможности должны быть созданы как службы, которые имеют четкую спецификацию использования, и поэтому могут использоваться любым клиентом программного компонента, который может следовать этой спецификации использования, независимо от технологий, на которых служба был разработан или на котором был разработан "вызывающий клиент". Хорошо написанные услуги должны быть очень кросс-совместимыми.

Поскольку многие поставщики и поставщики с открытым исходным кодом создали SOA-ориентированные фреймворки, основанные на подходах на основе XML, в частности на стандартах WS *, SOA иногда ошибочно ограничивается связанными с WS * и/или XML-подходами. Но на самом деле SOA, как концептуальная модель, является агностикой технологии. Один концептуальный SOA-сервис может быть создан один или несколько раз во многих формах, каждый экземпляр выбирает из множества технологий (XML, JSON, WS *, подход REST, Java, С++, LAMP,...), как это определено разработчиками и разработчики этого экземпляра.

Решение SOA или экосистема решения является одним из элементов архитектуры SOA; он состоит из служб, которые построены и используются по принципам SOA, опять же, используя любые технологии, которые выбирают разработчики.