Curlとアーキテクチャ(2)〜レイヤアーキテクチャ〜

今回は、レイヤアーキテクチャの観点からシンクライアント(Webアプリケーション)とリッチクライアントの位置付けを確認してみます。


レイヤアーキテクチャとして現在もっともベーシックなのは、おそらく3階層としての説明でしょう。すなわち、(用語は様々ですが)プレゼンテーション層、ビジネス層、データ層からなるアーキテクチャです。



単純には、プレゼンテーション層はユーザとの対話を行い、ビジネス層はビジネスロジックを実行し、データ層は永続的なデータを扱います。

リッチクライアントというのは、このレイヤアーキテクチャのうちプレゼンテーション層に相当する技術です(当たり前!?)。Webアプリケーションではプレゼンテーション層はサーバ上で実行されますが、リッチクライアントではその実行場所がクライアントに移ります。



Webアプリケーションでのプレゼンテーション層はHTTPのリクエスト/レスポンスを扱う部分です。また、ビジネス層のビジネスロジックを呼び出し、セッション管理を行い、HTMLを生成します。JavaであればJSPサーブレットの世界であり、StrutsなどのMVCフレームワークが置かれるのもこのプレゼンテーション層です。


よくある誤解は、curlを単なるJSPASPなどのHTML生成技術の代替として捉えてしまうことです。リッチクライアントは、MVCパターンにおけるView部分だけに相当する技術ではありません。MVCはプレゼンテーション層のデザインパターンであり、curlアプリケーション自体がMVCとして構築される対象です。



参考

レイヤアーキテクチャ自体について理解を深めたい方に。

企業情報システムのレイヤアーキテクチャについてはMartin Fowlerの以下の本に詳しいです。

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)


POSA本にはより根本的なレイヤアーキテクチャの解説があります。

ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系

ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系