回答:
(XML、SOAP、WSDL)などの基本的なテクノロジーは、サービスをエンティティとして独自に記述、検索、および呼び出す手段を提供します。ただし、これらのテクノロジーは、より複雑なコラボレーションにおけるサービスの役割について、動作の詳細を提供しません。このコラボレーションには、ビジネスプロセスを構築する一連のアクティビティとアクティビティ間の関係が含まれます。このプロセスを構築するには、サービスオーケストレーションとサービスコレオグラフィーの2つの方法があります。
サービスオーケストレーションは、さまざまなサービス間の相互作用を調整する単一の集中型実行可能ビジネスプロセス(オーケストレーター)を表します。オーケストレーターは、サービスの呼び出しと結合を担当します。
参加しているすべてのサービス間の関係は、単一のエンドポイント(つまり、複合サービス)によって記述されます。オーケストレーションには、個々のサービス間のトランザクションの管理が含まれます。オーケストレーションは、サービス構成に集中型アプローチを採用しています。
サービスの振り付けは、参加しているサービスのグローバルな説明であり、メッセージの交換、相互作用のルール、および2つ以上のエンドポイント間の合意によって定義されます。コレオグラフィーは、サービス構成に分散型アプローチを採用しています。
コレオグラフィーは、複数のサービス間の相互作用を記述します。オーケストレーションは、一方の当事者の観点からの制御を表します。これは、コレオグラフィ がオーケストレーションとは異なり、関連するサービス間の相互作用を制御するロジックが存在する必要があることを意味します。
サービスオーケストレーション:固定ロジックによっていくつかのサービスをまとめます。このロジックは1か所で説明されています。マネージャーがミクロ管理をしている人々のチームを想像できます。マネージャーは、何をいつ、誰がすべきかを正確に伝えます。チームメンバーはジョブの目標全体を気にせず、マネージャーが出力を1つの成果物に結合します。実用的な例は、BPELプロセスです。BPELプロセスはロジックを含み、複数のサービスを呼び出し、それらの応答を単一のサービス応答に結合できます。
サービスの振り付け:決定ロジックは分散されており、一元化されたポイントはありません。あなたは誰もが共通の利益を目指しており、マイクロ管理なしで積極的に働く家を想像することができます。または、異なるメンバーが相互に依存し、共通の目標のために働く人体を想像できます。実際の例は、イベント駆動型処理です。この場合、エージェントはイベントによってアクティブ化され、そのジョブを実行します。すべてのエージェントが一緒にシステムを作ります。一元化されたロジックはありません。振付の可能性は、現実の世界とより整合しているため、オーケストレーションをはるかに超える可能性があります。
ビジネスロジックに焦点を当てる必要があるので、これら2つをあまり区別する必要はないと私は考えています。単一のロジックポイントが機能する場合、オーケストレーションを行います。一元化されたロジックでは問題をカバーできない場合でも、とにかく振り付けを余儀なくされます。そのため、ITのオーケストレーションに出くわすことがよくありますが、コレオグラフィは、より学術的な概念であり、研究対象となっています。そして、現実の世界のように、実際にそれを知らずに振り付けをすることもよくあります。
サービスは、アトミックサービスと他のサービスで構成されるサービスとを区別できます。このような構成は「オーケストレーション」と呼ばれます。時にはワークフロー、時にはビジネスプロセス。たとえば、BPELはオーケストレーション言語ですが、それ自体を「ビジネスプロセス実行言語」と呼んでいます。
サービスを階層的に構成する必要はありません。つまり、2つのサービスが互いに通信する可能性があります。それらの間で実行されるプロトコルは、「コレオグラフィー」と呼ばれます。2つのサービスの場合がありますが、通常は2つ以上のサービスが関係しています。コレオグラフィーの各サービスは、パートナーサービスのオーケストレーターと見なされる場合があります。コレオグラフィーに参加する各サービスは、オーケストレーション/ワークフロー/プロセスとして実現できます。
オーケストレーションは各サービスの完全な動作を示しますが、コレオグラフィーは各サービスのインターフェース動作の説明を組み合わせています。
コレオグラフィー、インターフェースの振る舞い、プロバイダーの振る舞い、およびオーケストレーションを区別する優れた科学記事は、次のものです 。 337-368
スレッドは古いですが、私と同じようにこの質問を探してここでつまずいた人のためにスレッドに書いています。これは、サービス指向アーキテクチャー(SOA)でかなり議論されている質問であり、初心者にはより明確な説明が必要です。
オーケストレーション:実行可能プロセス
振付:マルチパーティコラボレーション
対照的に、振付は中央コーディネーターに依存していません。むしろ、コレオグラフィーに関与する各Webサービスは、その操作をいつ実行し、誰と対話するかを正確に知っています。コレオグラフィーは、パブリックビジネスプロセスでのメッセージの交換に焦点を合わせた共同作業です。
コレオグラフィーのすべての参加者は、ビジネスプロセス、実行する操作、交換するメッセージ、およびメッセージ交換のタイミングを認識する必要があります。
振付とオーケストレーション
Webサービスを構成してビジネスプロセスを実行する観点から見ると、オーケストレーションはより柔軟なパラダイムであり、コレオグラフィーに比べて次の利点があります。
コンポーネントプロセスの調整は、既知のコーディネーターによって集中管理されます。
Webサービスは、より大きなビジネスプロセスに参加していることを意識することなく組み込むことができます。
アンドレイと他の人々は、オーケストレーションとは何で、振付とは何かを説明するのに優れた仕事をしました。ソフトウェアアーキテクトがこれらの2つの選択肢のどちらかを選択する場合、それらを異なる品質に関して比較することも重要です。
振付に加えてオーケストレーションプラス
オーケストレーションを超える振り付けプラス
パフォーマンス:オーケストレーションでは、ワークフロースクリプトの解釈とオーケストレーションプラットフォーム自体の追加レイヤーにより、パフォーマンスのオーバーヘッドが発生します。
コスト:振り付けは、関連する学習曲線とガバナンスの負担がある追加のミドルウェアや言語を必要としません。
オーケストレーター要素が高可用性のメカニズムを採用していない場合、オーケストレーションソリューションはSPOFを導入する可能性があります。コメントでこれを指摘してくれた@Deepak porに感謝します。
振付は、高度に分散化された組織にとって内部的に適していると思います。中央のビジネスプロセスエグゼキュータは必要ありません。これにより、組織の各サブユニットによる独立した成長と発展が促進されます。
(私はこのオーケストレーション対振付の質問の解釈に同意します:http : //geekexplains.blogspot.com/2008/07/ways-of-combining-web-services.html)
オーケストレーションは、プロセス内のすべてのアクターを制御できる場合に役立ちます。それらはすべて1つの制御ドメインにあり、アクティビティのフローを指示できます。もちろん、これは、自分が制御できる1つの組織内で制定されるビジネスプロセスを指定する場合に最も頻繁に発生します。
コレオグラフィーは、2人以上の関係者(他の関係者のプロセス、またはおそらくそれらのプロセスの可視性)を制御できない関係者がアクティビティとプロセスを調整して情報と価値を共有する方法を指定する方法です。制御/可視性のドメイン間の調整が必要な場合は、振り付けを使用します。振付は、ネットワークプロトコルのような単純なシナリオで考えることができます。当事者間の要求と応答の許容可能なパターンを決定します。
オーケストレーションには指揮者と楽器奏者がいます。プレイヤーは指揮者の行動に従ってプレーします。導体を交換した場合、ハーモニック表現は異なります。つまり、同じプレー(サービス)ですが、結果が異なります。たとえば、金銭的な取り決めの提案を提供するために、オーケストレーションサービスは、指揮者のテンプレート(ビジネスの結果を返すか、その演奏を調整/更新する)を各プレーヤー(エンティティまたはユーティリティサービス、信用調査など)に要求(呼び出し)して実施します(ビジネスルール)。振付には、振付家とダンサーのグループがあります。振付は方向性ですが、ダンサーの各グループはその方向性を実現する方法において自律的です。