App Arch Guide 2.0( Microsoft patterns&practices )の第 6 章(リンク)で、メッセージバス、レイヤ・アーキテクチャ、SOA といったアーキテクチャスタイルについて語られている。これらのスタイルのほかにも、プラグイン、ピアツーピア、パブリッシュ/サブスクライブのような数多くのアーキテクチャパターンが存在する。何人かの著者は、アーキテクチャのスタイル、パターン、メタファを異なるものだとしている。
アーキテクチャスタイルとは何か? App Arch Guide によると、アーキテクチャスタイルとは次のようなものとされる。
一連の原則のことをいう。システムに抽象的なフレームワークを提供してくれる粒度のあらいパターンと考えてもらっていい。アーキテクチャスタイルはシステムをパーツに分割し、頻繁に起こる問題にたいして解決策を提供することで設計の再利用を促進してくれる。
このガイドの著者たちはたくさんのアーキテクチャスタイルを挙げている。
アーキテクチャスタイル 解 説 クライアント/サーバ システムを二つのアプリケーションに分割し、クライアントがサーバにたいしてサービスのリクエストを発行する。 コンポーネントベース アーキテクチャ アプリケーション設計を、再利用可能な機能や論理的なコンポーネントに分割する。それらの機能やコンポーネントは位置透過的で、明確な通信インタフェースを提供する。 レイヤアーキテクチャ アプリケーションの関心事を、積み重ねられたグループ(レイヤ)に分割する。 メッセージバス システムが実際の受取人を知らずとも互いに通信できるよう、一連の既知のフォーマットにもとづくメッセージを受送信できるソフトウェアシステム。 Nティア / 3ティア レイヤスタイルと大体同じようなやり方で機能性を別々のセグメントに分離する。ただし、各セグメントが物理的に別々のコンピュータに位置する層である点が異なる。 オブジェクト指向 アプリケーションやシステムに必要な課題を、再利用可能で自給自足的な個々のオブジェクトに分割するアーキテクチャスタイル。個々のオブジェクトには、自身と関連のあるデータと振る舞いが含まれている。 プレゼンテーションの分離 ユーザインタフェース( UI )とユーザが取り扱うデータから、ユーザとの相互作用の管理ロジックを切り離す。 サービス指向アーキテクチャ(SOA) 機能性を提供しまた消費するアプリケーションを、契約とメッセージを用いたサービスとしてあつかう。
これらのアーキテクチャスタイルはそれぞれ次のように、関心事のなかの特定の分野に対して適用される。
カテゴリ アーキテクチャスタイル 通 信 サービス指向アーキテクチャ(SOA)、メッセージバス、パイプ&フィルタ
デプロイメントデプロイメント クライアント/サーバ、3ティア、Nティア ドメイン
ドメインモデル、ゲートウェイ 相互作用 プレゼンテーションの分離 構造
コンポーネントベース、オブジェクト指向、レイヤアーキテクチャ
James McGovern、Scott W. Ambler、Michael E. Stevens、James Linn、Vikas Sharan、Elias K. Jo による書籍『A Practical Guide to Enterprise Architecture』(リンク)からいくつかの重要点を抜粋してまとめている J.D. Meier 氏は、アーキテクチャスタイルとパターンの微妙な違いについて(リンク)、次のように記している。
- アーキテクチャスタイルはシステムを組み立てるための中心的な概念である
- アーキテクチャパターンはサブシステムやモジュールそしてそれら同士の関連といったレベルにおける粒度の粗いソリューションを記述する
- システムメタファはもっと概念的で、ソフトウェアエンジニアリングの概念以上に現実世界の概念にかかわるものである
David Calvert 氏は 1996 年にアーキテクチャスタイルとパターンの部分的なリスト(リンク)を作成している。
- データフロー・システム --バッチシーケンシャル、パイプ&フィルタ
- コールアンドリターン・システム -- メインプログラムとサブルーチン、オブジェクト指向システム、階層的レイヤ
- 独立したコンポーネント -- 通信プロセス、イベントシステム
- 仮想マシン -- インタプリタ, ルールベースシステム
- データ中心システム(リポジトリ) -- データベース、ハイパーテキストシステム、ブラックボード
そのほかの現代的なパターンとしては、プラグイン、ピアツーピア、何も共有しない( Shared Nothing )アーキテクチャ、Representational State Transfer ( REST )、フロントエンド/バックエンド、がある。Wikipedia にはさらに完全なリストが記載されている。
原文はこちらです:http://www.infoq.com/news/2009/02/Architectural-Styles-Patterns