サービス指向アーキテクチャー(SOA)は、サービスがネットワーク上の通信プロトコルを介してアプリケーションコンポーネントによって他のコンポーネントに提供されるソフトウェア設計のスタイルです。
Webサービスは、サービス指向アーキテクチャの一般的な実装です。
Webサービス以外のサービス指向アーキテクチャの他の実装は何ですか?
HTTPベースのサービスが主流になる前は、同様の機能を提供する他のシステムがいくつかありました。 Windowsの世界では、COMが人気のあるコンポーネントモデルであったとき、DCOMを使用するのが一般的でした。TCPを使用すると、リモートプロセスまたはリモートマシンのCOMオブジェクトのメソッドを呼び出すことができます。 。COM +は、DCOMに基づくアプリケーションサーバーであり、サービスの登録、実行、管理を可能にしました。MSMQは、1つのアプリがキューに書き込み、キュー処理サービスで取得できる分散非同期キューシステムのもう1つのオプションでした。
これらのテクノロジーやその他のテクノロジーを使用して、90年代に分散したサービス指向アーキテクチャーを構築しました。他のオプションは以前にも存在していました。 CORBAはCOMに似ていて、MS中心ではなく、CORBAコンポーネントを実行するアプリケーションサーバーがさまざまなプラットフォームに存在していました。
SOAとは、アプリケーションを個別の独立したドメインに分離することです。これは、コーディングにおける主な関心事の分離と似ていますが、アーキテクチャーレベルにあります。 SoCがOOPのような特定のテクノロジーやパラダイムに依存していないのと同じように、SOAはWebサービスや同様のオンラインRPCメカニズムに依存していません。実際、Webサービスはt「SOAの実装」は、SOAにsedが可能なアーキテクチャコンポーネントである限り、同じWSテクノロジが、単純なクライアント/サーバーアプリのバックエンドとしてよく使用されます。すべて。
SOA実際にWebサービスに関与する必要があることを理解していません(そのため、Wikipediaの記事は私の見解では少し誤解を招きます)SOAは、統合方法についてですアプリケーション上のシステムです。また、Webサービス、またはあらゆる種類のネットワークプロトコルの使用は、実装の詳細です。各サービスのロジックは、接続がどのように行われるかを知る必要はなく、知っておく必要がある境界上でのみ行う必要があります。したがって、誰がサービスがファイルの書き込みと読み取りを相互に通信できない、または標準の入出力を使用して通信できないと言いますか?
Webサービス以外のオプションを指す(または同じWikipediaの記事に直接リンクする)いくつかの回答を見てきましたが、これらはネットワークプロトコルについて考える場合に適しています。
しかし、再び、実装の詳細。ネットワークに依存しないオプションがあります(ただし、非効率的またはとんでもないことです)
Webサービスは現在、SOA)で最も有名なサービスの形式ですが、この概念を最初に紹介されたとき、3つのサービス層を利用しました:-
テクニカルサービス-例Oracleデータベースのストアドプロシージャは、ユーザーが理解しやすいキーをデータベースの内部主キーに変換するなど、特にエンドユーザーフレンドリーではない非常に小さなことを行うように設計されています。これらのサービスは、内部システムおよびより高レベルのサービスによって広く使用されています。
ビジネスサービス-外部の関係者が理解するにはレベルが高すぎますが、レベルは低すぎます。通常、いくつかのテクニカルサービスを調整して、有用な出力を生成することで作成されます。内部PKを取得し、PKによって参照されるレコードに関するデータを含むXMLのチャンクを返します。または、ドキュメント参照を取得して、ドキュメント管理システムからドキュメントのPDF=)を取得します。これらのサービスは、内部システムおよびより高レベルのサービスによって広く使用されています。
外部に公開されたサービス(通常はWebサービス)-外部の関係者に役立つサービス。例えばユーザーが理解できるキーを受け入れ、レコードを作成したドキュメントのPDFを返す)サービス(前述のすべてのサービスをオーケストレーションして作成)。
ウェブサーバーとして外部インターフェースを世界に示すかなりの数のものが、内部通信に他の異なるプロトコルを使用します。
一例として、Facebookは明らかにWebサイトです。ただし、内部監視などの多くは Thrift を使用して行われます。 Thriftは通常、HTTPのようなものではなく、独自のTHeaderプロトコルを使用して、ソケットの上で直接実行します。
ある種の境界線の場合もあります。たとえば、Googleの [〜#〜] grpc [〜#〜] は、(当然のことながら、名前を付ければ)Thriftと同じ一般的な順序でのRPC実装です。ただし、通常は、基礎となる通信プロトコルにHTTP/2を使用します。典型的なWebサイトとはあまり似ていませんが、HTTP/2を使用しているため、少なくともWebサービスと見なされる可能性があるという議論の余地があると思います。