マーチン・ファウラー 翔泳社 2005-04-21
レイヤ化
ソフトウェア設計者が複雑なソフトウェアのシステムを分割するために使用する一般的な技法
レイヤ化のメリット
- 他のレイヤをよくしらなくても1つのレイヤを全体として考えることができる
e.g. イーサネットの動作方法を知らなくてもTCP上にあるFTPサービスを構築する方法を理解できる - 同じ基本サービスの代替実装でレイヤを置き換えることができる
e.g. FTPサービスは、イーサネット、PPP、ケーブル会社が変わったとしてもok - レイヤ間の依存を最小限にできる
e.g. ケーブル会社がIPを動作させる物理的な伝送システムを変更しても、FTPサービスを修正する必要はない - レイヤは標準化に適している
e.g. TCPとIPは、レイヤの動作方法を定義しているので標準である - レイヤを構築すれば多くの高水準のサービスがそのレイヤを使用できる
e.g. TCP/IPは、TFP,telnet,SSH,HTTPによって使用される。TCP/IPがなければ、高水準のプロトコルは独自の低水準のプロトコルを作成しなければいけない。
レイヤ化のデメリット
- レイヤは一部の物事をカプセル化してしまう
- レイヤを追加するとパフォーマンスを損ねる場合がある。
レイヤ化アーキテクチャで最も難しいのは、以下の内容を決定することである。
- 必要なレイヤ
- 各レイヤが行うべき内容