コンポーネントベースのアーキテクチャとは何ですか?
コンポーネントをレゴブロックと考えてください。
レゴで構造物を作るときは、さまざまな形、サイズ、色を選択できます。一部のブロックは、ドア、窓、その他の構造要素として特別に作られています。各ブロックには、他のブロックと接続するために必要なすべての機能があり、ブロックを追加または削除しても、構造にはほとんど影響がありません。
ソフトウェア コンポーネントは小さなプラスチック片よりもはるかに複雑ですが、概念は似ています。
各要素は、アーキテクチャ的に定義された方法でタスクを実行します。簡単にするために、コンポーネントはライブラリに保存され、開発者によって組み立てられ、API を通じて相互に通信します。
オブジェクトリクエストブローカーは「ソフトウェアバス」とも呼ばれ、すべてのコンポーネントが使用する単一の通信プレーンを提供することで通信を容易にします。通信は次のようないくつかの方法で行われます。 非同期的にブロードキャスト、メッセージ駆動型システム、または進行中のデータ ストリームの一部として行われます。
コンポーネントベースのアーキテクチャの概念は新しいものではありません。1960 年代後半の学術論文にもすでに言及されています。
IBMは、 システムオブジェクトモデル 1990年代初頭、コンポーネントからソフトウェアを構築する方法を定義する最初の商業的な取り組み。マイクロソフトの コンポーネントオブジェクトモデル および オブジェクトのリンクと埋め込みは、ほぼ同時期に導入され、商用展開のための最初のフレームワークを提供しました。
コンポーネントの5つの特徴
ソフトウェア コンポーネントには 5 つの共通の特性があります。
1。 再利用性
コンポーネントは、変更や特別な調整を必要とせずに、さまざまなアプリケーションにプラグインできます。
2.拡張性
コンポーネントは他のコンポーネントと組み合わせて新しい動作を作成します。
3. 代替可能性
同様の機能を持つコンポーネントは交換できます。
4。 カプセル化
コンポーネントは自己完結型であり、内部プロセスの詳細は隠しながらインターフェースを通じて機能を公開します。
5。 独立
コンポーネントは他のコンポーネントへの依存性が最小限であり、さまざまな環境やコンテキストで動作できます。
コンポーネントの例
コンポーネントは、疎結合された個別のサービスからアプリケーションを組み立てる、サービス指向およびマイクロサービス アーキテクチャの構成要素です。
マイクロサービスはDevOpsで使用される主要なアーキテクチャであり、 クラウドネイティブ開発開発者がアプリケーションの大部分をゼロから構築するのではなく、組み立てるため、生産性のメリットが高く評価されています。
コンポーネントの一例としては、Microsoft PowerPoint のスプレッドシート機能があります。ユーザーは、チャートやグラフの基になるデータを編集するときに、Microsoft Excel のような外観と動作を持つスプレッドシートを操作します。Excel の完全版ではありませんが、スプレッドシート ウィジェットには、基本的な機能をサポートするのに十分な機能が備わっています。
コンポーネントの他の例としては、電子商取引の取引で税金を計算する機能や、ログイン時にユーザーに質問に答えさせる機能などがあります。
コンポーネントとのトレードオフ
コンポーネントベースのアーキテクチャは、すべてのシナリオに適しているわけではないため、欠点がある場合があります。
まず、アプリケーションをモジュール化して機能的に独立した部分に分割する必要がありますが、これはアプリケーションが大きい場合には困難になる可能性があります。また、コンポーネントの再利用性の必要性により、カスタマイズ オプションが制限される可能性があります。
アプリケーションの要件に正確に一致するコンポーネントを見つけることも困難な場合があります。特定のアプリケーションでは多くのコンポーネントを監視する必要があり、コンポーネント ライブラリの更新とメンテナンスは複雑になる可能性があります。
コンポーネントの代替
コンポーネントベースの開発とアーキテクチャには、さまざまな代替手段があります。これには次のものが含まれます。
- マイクロカーネルアーキテクチャ コア処理コンポーネントと、特定の機能を持つ独立したプラグイン モジュールで構成されます。コンポーネントは相互に通信せず、マイクロカーネルとのみ通信します。
- クライアントサーバーアーキテクチャ データ、サービス、およびコンテンツの要求を交換する 2 つのコンポーネント (クライアントとサーバー) があります。それ以外は、それらはほとんど独立して動作します。
- イベント駆動型アーキテクチャ クレジットカードのスワイプやセンサーによるアラートの生成など、イベントに応じて動作する、分離された専用ソフトウェア モジュールで構成されています。
コンポーネントは、現代のソフトウェアの基本的な構成要素となっています。この用語は 20 年以上も前のものですが、その概念は健全であり、絶えず変化するテクノロジー環境に適応できることが証明されています。