Похоже, что есть много мнений по этому поводу;это интересное чтение.Вот мое мнение.
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, C ++, LAMP, ...), как определено разработчикамии разработчики этого экземпляра.
SOA-решение или экосистема решений - это архитектура, построенная на принципах SOA;он состоит из сервисов, которые создаются и используются в соответствии с принципами SOA, опять же, с использованием любых технологий, выбранных разработчиками.