8章コンポーネントベース思考
「3章 モジュール性」では、関連するコードの集まりであるモジュールについて説明した。しかし、アーキテクトは通常、モジュールの物理的表現であるコンポーネントをベースにアーキテクチャを考える。
開発者は、開発プラットフォームに応じたさまざまな方法で、モジュールをパッケージ化する。モジュールが物理的にパッケージ化されたものを、私たちは「コンポーネント」と呼んでいる。Javaのjarファイル、.NETのdll、Rubyのgemなど、ほとんどの言語はモジュールを物理的にパッケージ化する仕組みをサポートしている。この章では、分類から発見まで、コンポーネントに関するアーキテクチャ上の考慮事項について説明する。
8.1 コンポーネントの分類
コンポーネントの概念をさまざまな要因に基づいて細分化することは、開発者にとって有用だ。そのうちのいくつかを、図8-1に示す。
コンポーネントとは、言語固有の仕組みによってアーティファクトをグループ化するものだが、階層化を行うために、それらはしばしば入れ子構造となる。図8-1に示すように、最も単純なコンポーネントは、関連コードをクラス(非オブジェクト指向言語では関数)よりも高度なモジュールによってラップしたものとなる。この単純なラッパーは、しばしばライブラリと呼ばれる。ライブラリは、呼び出したコードと同じアドレス空間で実行され、言語の関数呼び出しメカニズムを介して通信する。ライブラリは通常、(Windowsユーザーの悩みの種であったDLL⦅ダイナミックリンクライブラリ⦆のような注目すべき例外はあるものの)コンパイル時の依存関係になる。
図8-1 コンポーネントのさまざまな種類
コンポーネントの種類には、サブシステムやレイヤー、イベントプロセッサー向けのデプロイ可能ユニット、サービスなどがある。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access