July 08, 2008

Web3層アーキテクチャとか

MVCに続いてweb3層アーキテクチャについても説明してみたいと思います。

web3層アーキテクチャとは、webシステムをプレゼンテーション層、アプリケーション層、データ層の3層に分割して設計する手法です。各層の呼び名はコンテキストによって異なる場合があります。

プレゼンテーション層はクライアントと直接通信を行い、ユーザインタフェースを提供します。
アプリケーション層はビジネスロジックを担当します。
データ層はデータの永続化を行います。

MVCが純粋にソフトウェアのアーキテクチャであったのに対して、3層アーキテクチャはハードウェアも含めた構成を表します。各層はそれぞれ別のマシンで動作可能であるように設計され、実際にそのように運用される場合が多いです。

多くの場合、プレゼンテーション層はWebサーバ(Apacheなど)、アプリケーション層はアプリケーションサーバ(JBossなど)、データ層はデータベースサーバ(MySQL)など、によって実現されます。

3層それぞれを別マシンで動作可能であるようなアーキテクチャにすることで、各層を変更したり、拡張したりすることが容易になります。例えば、Webサーバがリクエストを処理しきれなくなった場合に、Webサーバ部分をクラスタ化して負荷分散を行う、といった構成変更を、他の部分へ大きな影響を及ぼさずに行うことができます。

注意が必要なのは、ソフトウェアのアーキテクチャを3層アーキテクチャの用語を用いて説明する場合があることです。JavaEEで言うと、JSPとServletがプレゼンテーション層、Java Beanがアプリケーション層とデータ層、といった言い方をする場合があります。

MVCと3層アーキテクチャを対応させるとすれば、プレゼンテーション層にあたるのがViewとController、アプリケーション層とデータ層にあたるのがModel、ということになると思います。

ただし、MVCと3層アーキテクチャは本来別々の概念です。その辺はWikipediaが参考になると思います。
wikipedia:多層アーキテクチャ
リンク先にあるように、3層アーキテクチャでは、プレゼンテーション層とデータ層は直接通信せず、全ての通信は必ず中間層を通るのに対し、MVC では 3つがそれぞれ相互に通信します。

matssaku at 23:06│Comments(0)TrackBack(0)clip!雑記 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔