web-dev-qa-db-ja.com

APIとSOAの違いは何ですか

がたくさんあります What is the difference between...そこに質問しますが、私はこれを見つけることができませんでした。

ウィキペディアでは、これについて [〜#〜] api [〜#〜]

アプリケーションプログラミングインターフェイス(API)は、ソフトウェアコンポーネントが相互に通信するためのインターフェイスとして使用することを目的としたソースコードベースの仕様です。

そしてこれについて [〜#〜] soa [〜#〜]

また、SOAは一般に、Webベースのアプリケーションなどのサービスの利用者が利用可能なSOAベースのサービスを認識する方法を提供します。

他のサービスにサービスを提供する両方のテクノロジーではありませんか?
誰かがこれを拡張できますか?

31
Niklas

サービス指向アーキテクチャは、アーキテクチャの方法論です。これは、ビジネス指向の観点からの責任の分離を、共通API(多くの場合、必ずしもイベントをバスに発行することではない)によって通信する独立したサービスに指定する方法です。

たとえば、顧客の注文をキャプチャするサービスを1つ持つことができます。このサービスは、OrderCapturedイベントをバスに発行します。そして、顧客への請求時期と未払い額の追跡を担当する別のサービスは、バスを購読し、OrderCapturedイベントに応答します。最初のサービスは、責任の分離により、請求について何も知る必要がない場合があります。また、2つのサービスはお互いについて知る必要はなく、それらの周りで起こっているイベントについてのみ知る必要があります。

APIは、他のコンポーネントがAPIと通信できるように、コンポーネント/サービスが公開するインターフェースです。上記の例では、バスは通信する多くのサービスに共通のAPIを提供しています。

要約すれば:

API =ソフトウェアコンポーネントによって公開される通信方法。

SOA =責任をサービスに分割することにより、スケーラビリティの問題を解決するためのエンタープライズアーキテクチャ設計原則のセット。

39
perfectionist

言い換えると:

SOAはアーキテクチャパターンです。

APIは、SOAパターンを有効化または有効化する方法の1つです。

SOAは、「計画」{Blue Print}設計手法です。

APIは、設計の実際の実装です。

5
Kbdavis07

簡潔で簡潔なバージョン:

[〜#〜] api [〜#〜]は、http、Webソケットなどを介してデータアクセスを提供するためのレイヤーであり、モバイルフレンドリーです。これらのAPIは、SOAサポートを念頭に置いて設計する必要があり、現在、JSONおよびRESTを中心に進化する最新のテクノロジーを使用する必要があります。

[〜#〜] soa [〜#〜]は、A2AおよびB2Bのビジネスソリューションレイヤーであり、ビジネスが異なるタイプのメディア間でデータをやり取りする必要がある場合、APIが構築され、ビジネスルールはその周りに建てられました。テクノロジーは通常、XML、RPC、およびSOAPです。

両方とも交換可能な技術を使用しています。セキュリティは両方で対処できます。SOA通常はそうですが、APIがその目的がオープンデータを提供することである場合はそうではありません。

1
blamb

これについて多くの意見があるようです。興味深い読み物です。これが私の見解です。

SOA:SOAは、ソフトウェアコンポーネント/サービスのスイートを構築およびアクセスするためのサービス中心のアーキテクチャパターンです(上記の回答で述べたように)。 SOAパターンを形成するSOA原則は多くの場所で見られますが、すべてが互いに一貫しているわけではないため、SOAはやや曖昧な用語です。 SOAサービスは、ほぼすべての最新のソフトウェア開発テクノロジーセットで構築できます(以下を参照)。

API:一般に、「API」という用語は、ソフトウェアソリューションをプログラムで利用する方法またはインターフェイスする方法を指定するために使用されます。プログラミング言語とそのコンポーネント(Java API)の仕様、COTSソリューションへのアクセスおよび/または拡張方法の仕様、サービスまたはサービスのセット(署名を含む)の利用方法の仕様などを参照できます。またはサービスとのインターフェースに関連するデータ構造など)。

SOAとAPI:SOAサービスのAPIには、サービスの概念的で技術にとらわれない仕様(例:1つのデータ要素が顧客の姓)、物理的な、そのSOAサービスの各物理インスタンスのテクノロジー固有の使用仕様(例:2つのインスタンスが使用可能です。1つはJSONレイアウトを使用し、もう1つはXMLレイアウトを使用します。 NAME 'データ要素)。

誤解:APIという用語は、RESTfulまたは「シンプルで軽量」またはJSONベースのインターフェースを指す場合にのみ使用してください(RESTfulは「シンプル」または「軽量」と同等ではありません)。実際、APIは、WS *ベースのサービスを含む多くのタイプのテクノロジーを使用して、多くのパターンに従って構造化できます。

誤解:SOAは、WS *またはその他の「複雑で重量のある」インターフェースアプローチに厳密に従います。実際、SOAサービスは、RESTfulアプローチやJSONファイルなど、ほとんどすべての最新のソフトウェア開発テクノロジーセットを使用して構築および使用できます。

SOAの詳細:SOAは、機能を明確な使用仕様を持つサービスとしてインスタンス化する必要があるという概念に基づいて構築されたアーキテクチャパターンであり、その使用法に従うことができるソフトウェアコンポーネント「クライアント」で利用できますサービスが開発された技術または「呼び出しクライアント」が開発された技術に関係なく、仕様。適切に作成されたサービスは、高度な相互互換性が必要です。

多くのオープンソースプロバイダーとベンダーは、XMLベースのアプローチ、特にWS *の標準セットに基づくSOA指向のフレームワークを構築しているため、SOAが誤ってWS *と関連付けられることがあります。および/またはXML関連のアプローチ。しかし、実際には、概念パターンとしてのSOAはテクノロジーにとらわれません。 1つの概念SOAサービスをさまざまな形式で1回または複数回インスタンス化でき、各インスタンス化はさまざまなテクノロジー(XML、JSON、WS *、RESTアプローチ、Java、C++ 、LAMP、...)そのインスタンス化の設計者と開発者によって決定されます。

SOAソリューションまたはソリューションエコシステムは、SOA原則に基づいて設計されたものです。 SOAの原則に従って構築され、利用されるサービスで構成されます。この場合も、開発者が選択したテクノロジーを使用します。

0
Dave