2

Service Oriented Architecture Principlesサイトでは、SOA ではサービス構成が重要であると述べています。しかし、Service Loose Coupling も同様に重要です。

これは、「オーケストレーション層」だけがシステム内のサービスの呼び出しを許可されているということですか?

私が SOA を理解しているように、「オーケストレーション層」はすべてのサービスを 1 つのソフトウェア アプリケーションに「接着」します。それをFig.AとFig.Bに描いてみました。

2 つの違いは、図 A ではアプリケーションがサービスで構成され、すべてのロジックが「オーケストレーション レイヤー」で実行されることです (サービスへのすべての呼び出しは「オーケストレーション レイヤー」からのみ実行されます)。図 B では、アプリケーションはサービスから構成されていますが、1 つのサービスが別のサービスを呼び出します。

図 B のアーキテクチャは、SOA の「サービスの疎結合」原則に違反していますか? サービスはSOAで別のサービスを呼び出すことができますか? さらに一般的に言えば、サービスの疎結合、抽象化、再利用性、自律性などの点で、図 A のアーキテクチャは図 B のアーキテクチャよりも優れていると考えられますか?

私の推測では、A アーキテクチャははるかに普遍的ですが、「オーケストレーション レイヤー」と呼び出されたすべてのサービスとの間で不要なデータ転送が追加される可能性があります。

SOA サービス呼び出し

4

1 に答える 1

0

サービス 1 と 2 の下のすべてがコントラクトの背後にカプセル化されていると仮定すると、これらは疎結合になります。ただし、B はサービス 1 を解放するオーケストレーション レイヤーの機能を活用しません。A と B の明確な善悪はありませんが、トレードオフがあります。図 A では、B が A に返す内容の詳細をオーケストレーション レイヤーまで抽出する必要があるため、さらに開発作業が必要になります。また、関連するデータのリストがある場合、B はパラメーターのコレクションを条件として渡すことができるようにする必要があります。ただし、これにより、svc 1 は svc 2 について何も知ることができなくなります。したがって、サービスが 2 つの異なるチームによって所有および管理されている場合、A はこれらのチームが自律的に作業できるようにします。例えば、サービス 1 が顧客情報サービス (CIS) であり、サービス 2 が支払いサービスである場合、オーケストレーション レイヤーはサービス 2 と CIS データをつなぎ合わせて、顧客名とその最新の支払いデータのリストを返すことができます。図 A では、オーケストレーション レイヤーでメモリ内結合を使用してスティッチングを行っています。次に、クライアントがオーケストレーション レイヤーを呼び出します。B を使用すると、クライアントはサービス 1 を直接呼び出すことができますが、サービスが相互に呼び出すことを許可し始めると、再入可能な呼び出しの可能性を含む厄介な依存関係グラフになる可能性があります。チームが小規模で、svc 1 と 2 の両方を所有している場合、これらの依存関係を追跡できます。ただし、異なるチームがある場合、依存関係が B で簡単に認識されなかったり、適切に管理されなかったりすることがあります。図 A では、オーケストレーション レイヤーでメモリ内結合を使用してスティッチングを行っています。次に、クライアントがオーケストレーション レイヤーを呼び出します。B を使用すると、クライアントはサービス 1 を直接呼び出すことができますが、サービスが相互に呼び出すことを許可し始めると、再入可能な呼び出しの可能性を含む厄介な依存関係グラフになる可能性があります。チームが小規模で、svc 1 と 2 の両方を所有している場合、これらの依存関係を追跡できます。ただし、異なるチームがある場合、依存関係が B で簡単に認識されなかったり、適切に管理されなかったりすることがあります。図 A では、オーケストレーション レイヤーでメモリ内結合を使用してスティッチングを行っています。次に、クライアントがオーケストレーション レイヤーを呼び出します。B を使用すると、クライアントはサービス 1 を直接呼び出すことができますが、サービスが相互に呼び出すことを許可し始めると、再入可能な呼び出しの可能性を含む厄介な依存関係グラフになる可能性があります。チームが小規模で、svc 1 と 2 の両方を所有している場合、これらの依存関係を追跡できます。ただし、異なるチームがある場合、依存関係が B で簡単に認識されなかったり、適切に管理されなかったりすることがあります。チームが小規模で、svc 1 と 2 の両方を所有している場合、これらの依存関係を追跡できます。ただし、異なるチームがある場合、依存関係が B で簡単に認識されなかったり、適切に管理されなかったりすることがあります。チームが小規模で、svc 1 と 2 の両方を所有している場合、これらの依存関係を追跡できます。ただし、異なるチームがある場合、依存関係が B で簡単に認識されなかったり、適切に管理されなかったりすることがあります。

于 2012-12-22T04:21:40.213 に答える