プログラムを始めて2ヶ月目くらいの人に、「3階層」のアプリケーションのイメージ
をもってもらうことを、あーだ、こーだ考えていたら、こんなの思いつきました。
喫茶店を例にたとえると・・・
ユーザ=お客さん に接する人=ウエイター これが、UI層にあたります
厨房で調理するいわゆる茶店のマスターさん これが、ビジネス層
調理するための材料を冷蔵庫から出すようなひとが、 DB層
分業すると、効率が上がるってことは想像できるかと思います。
チェーン店にもこの分担を応用できそうですね(再利用の考え方)
さらに規模を大きくして、
客席が1000ある百貨店(古いな)で、3階建てくらいのビルの場合どうなるか、考えてみると
ウエイターに作業を指示する人、
厨房でも各担当者
にわかれてるほうが、俄然全体として無駄がなくなります。
で、細かくしていくと、こんな感じ
横っちょにあるのは作業担当者にかっちょいい名前をつけたと思ってください。
UI層
ウエイター UIC(UIコンポーネント)
ウエイターに作業を指示する人 UIP(UIプロセスコンポーネント)
ビジネス層
料理人に指示をする人 SI(サービスインターフェース) (*変更しました!)
できる料理を盛り付ける人 BW(ビジネスワークフロー)
料理を作る人 BC(ビジネスコンポーネント)
冷蔵庫からだした材料を下ごしらえする人 BE(ビジネスエンティティ)
DB層
材料を仕入れたり、冷蔵庫から出す人 DAC(データアクセスコンポーネント)
提携している店からコーヒーを持ってくる人 SA(サービスエージェント)
こんなかんじで作業分担できますね。
で、これらを図にすると、
こうなります。
どうでしょう?イメージしやすくなりましたでしょうか?
さらに詳しく知りたい場合は以下を参照してください。
3 層サービス アプリケーション
http://www.microsoft.com/japan/msdn/practices/type/Patterns/enterprise/ArcThreeLayeredSvcsApp.aspx
.NET のアプリケーション アーキテクチャ : アプリケーションとサービスの設計
http://www.microsoft.com/japan/msdn/net/bda/distapp.aspx
うーん。ビジネス層の中身がちょっと強引かww
# ってことで、修正しましたw
# 「できた料理をウエイターとりまとめ者に渡す人」→「料理人に指示をする人」