Flex/AIRアプリのアーキテクチャ探索 その1

MVCモデルでアプリを組もうとして、Viewへのデータをどう送ろうかと調べようとして、イベント駆動とMVCをキーワードに検索してたら、MVCよりいいよみたいな感じで PACPluggableMVC というのを見かけた。
(ちなみにMVCではObserverパターンを使うので、Flexではデータバインドを使うことになりそう。[Bindable]タグやmx.binding.utils.BindingUtilsを使うことになるはず。でもViewとModelが相互作用しないかが心配だった。どちらからだけ操作するならまだいいけども)


ここでもFlexにPACはいいのではないだろうかと書いてある。
http://idm.s9.xrea.com/ratio/2007/08/14/000654.html


まずPACを検索してみたが、PACもPresentation-Control-Abstractionとコンポーネントを分けていてMVCに似ていて違いがよくわからない。


探してまず一番分かりやすかったのが、ここ。
MVCパターンとPACパターン
CocoaにはMVCよりもPACの方が合っている?


MVCは縦割りで3つに分けるけど、PACはシステムを”エージェント”で分けて階層構造を作ること(Controlで上下関係を結ぶ)、プラス、各エージェントをP/A/Cに分けるというアイディアのよう。


さらに見つけた以下の卒論はPAC理解にもってこいだった(元の場所はなくなってる)。
「PACパターンによるWebアプリケーション開発」(PDF)


これのいいとこは、デメリットも書いてあるところ。
まず、大規模向き、とのこと。コンポーネントベースだから小中規模の反復型にもいいはずとも書いてあるが。他のサイトにも不必要に手間がかかる可能性ありそうとあった。MVCではそうでもないのだろうか。まあ一度試してみよう。
次に分業。GUIコンポーネント分割されるから確かにデザイナーはつらそう。が、今回は一人だからそんなの関係ない。
次にエージェント間の通信コスト。異なるマシンを使うわけでもインターネットを多用するわけでもない(ほぼクライアントで完結)から、これも問題ない。


PluggableMVCはほんの少し見たところコンポーネントの追加・削除に強いよう。MVCでやろうとした時に、動的にコンポーネント追加はできるのだろうか、何かしらインターフェースが必要だろうと思っていた。これに対処できるのだろうか?
動的コンポーネント追加=プラグイン式のアプリにも興味があるのでPluggableMVCも調べてみようと思う。


PACは以下の本で紹介されてるよう。
http://www.amazon.co.jp/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E2%80%95%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E4%BD%93%E7%B3%BB-F-%E3%83%96%E3%83%83%E3%82%B7%E3%83%A5%E3%83%9E%E3%83%B3/dp/4764902834