これは非常に理論的で抽象的な質問です: サービス指向アーキテクチャ (SOA) はコンポーネントベースのアプローチとどう違うのですか? SOA の概念は、コンポーネントベースのアプローチの拡張ですか?
あなたの考えは何ですか?このテーマを扱った優れた論文をご存知でしょうか?
これは非常に理論的で抽象的な質問です: サービス指向アーキテクチャ (SOA) はコンポーネントベースのアプローチとどう違うのですか? SOA の概念は、コンポーネントベースのアプローチの拡張ですか?
あなたの考えは何ですか?このテーマを扱った優れた論文をご存知でしょうか?
この記事の著者は、コンポーネント・ベースの開発を SOA をサポートするものと見なしています。最終的には、SOAを実装するサービスが必要であり、実装を提供する成果物としてコンポーネントを設計します。スキルの一部は、コンポーネントの粒度とまとまりを正しくすることです。
この観点は、今日の SOA が実際にどのように行われているかの合理的な特徴であると私は信じています。私にとって重要なのは、最初にサービス、つまりビジネスの意味で必要なことに焦点を合わせ、その後コンポーネントの設計に取りかかることです。[サービスの識別に関する記事はこちら。免責事項: 私は IBM の社員です。これらの記事は同僚によって書かれています。]
しかし、時計を巻き戻せば、コンポーネントベースの開発は SOA よりも前のアプローチであり、SOA と同じ目標の多くを持っていたことがわかると思います。私は、SOA は誇大宣伝にすぎず、古い概念に新しいラベルを貼り付けているにすぎないという意見は、過度に冷笑的だと考えています。ただし、CBD と SOA の間にはかなりの重複があります。SOA は、統合を行う方法についてこれまでで最高の集団的知恵であると私は考えています。キットバッグ全体が再び新しい名前に値するまで、より多くの新しい技術が登場することは間違いありません。
私の個人的な見解では、SOA が勢いを増したのは、組織内の異なる技術チーム (IBM ベースと Microsoft ベースなど) が互いのサービスを使用できるコンポーネントを構築できる一連のテクノロジが出現したためです。言い換えれば、新しいラベル (SOA) が魅力的であるような、コンポーネントの実行方法の成熟度が現れました。
この 2 つの概念は、相互に補完も矛盾もせず、かなり直交しています。錆びたフォークを私の目に刺すと脅して一般化を強要した場合、コンポーネントベースの開発は、特定のソフトウェアをモデル化して組み立てるための手法であると言えます。彼らはお互いに話すことができます。
私が言ったように、大雑把な一般化ですが、より具体的な質問なしであなたに与えるつもりはそれだけです:)
SOA はコンポーネント ベースの開発の高レベルな形式であり、コンポーネントはサービスと呼ばれる再利用可能な機能の一部になっていると言う人もいるかもしれません。
コンポーネント ベースの開発では、一般に 1 つのコード構文でコード フラグメント (場合によっては完全なオブジェクト スタック) のリポジトリが必要でした。たとえば、VB6 と VC++ の間の共通インターフェイス (たとえば、Windows API または COM、COM+ など) を介してこれらのフラグメントを移植または呼び出す必要があります。したがって、VC++ 関数は VB6 で使用および呼び出すことができます。したがって、コンポーネントの再利用には、再利用するために大量のリファクタリングが必要になることがあり、直感に反していました。早期バインディングと遅延バインディングの問題もありました。リポジトリ コンポーネントを使用するには、コード ベースの機能する部分としてビルドおよびデプロイする必要がありました。コードは、リポジトリに追加する前に単体テストを行う必要がありましたが、機能を確認するために統合テストが必要でした。君は' また、「オブジェクト インターフェイスを通過する」ために、正しいパラメータを作成する必要があります。繰り返しますが、これには通常、ラッパー コードが必要です。
これらのコード リポジトリには、真にクロス プラットフォームにするためのすべてが含まれているとは限りません。問題がドメイン間でセグメント化されている場合、特に統合システムでは、通常、プラットフォームの独立性が必要です。インターフェイスは、実際に機能するコードではなく、ビルドおよびデプロイされたソフトウェアに含まれています。
2つの間に欠けているのはフレームワークです。SOA は CBDv2 ではなく、その拡張でもありません。サービス実装のフレームワークを通過する必要があります。フレームワークも新しい概念ではありません。
CBD と SOA の両方が最終的にコードの再利用を促進します。一般に、CBD は SOA よりも範囲が狭いです。SOA を効果的にするにはフレームワークが必要ですが、CBD はそうではありません。CBD は、その開発言語とターゲット プラットフォームに結合されています。