フォトアルバム

2011年10月

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

なかのひと

373news.com

google Search

  • Google
    blog.ganymean.org
    WWW

Google Analytics

Mach-II

cf.objective 2007 サマリ

Coldfusionファンには、生唾ものの情報です。

CF-OOPのまとめをしなきゃと思って、本家メンバーのRSSフィードをチェックしていたら、cf.objectiveのプレゼン概要を、Matt Woodwardが日々google Docs形式でアップしています。ご覧あれ!

 cf.objective 2007 - Jason Delmore KeynoteColdFusion Weekly Flickr Photos
 Mark Mandel - Intro to Transfer ORM
 Hal Helms - Object Modeling
Sean Corfield - AJAX in Scorpio
Adam Lehman - .NET and Exchange Integration with Scorpio 
 CFEclipse Project - Mark Drew
Adam Lehman - Scorpio Server Monitoring and Alerts
 Peter Farrell - Head First Mach-II
 Peter Farrell - What's New in Mach-II 1.5
Jason Delmore - 1337 Scorpio
Sean Corfield - Real World SOA With ColdSpring and Transfer
Ben Forta - Top Secret Scorpio
 Dave Ross - ColdSpring 101
 Maxim Porges - Maximizing Your CF/Flex Applications With Java

 


Mach-IIとColdspringの統合

ModelGlue:UnityとColldspringの統合アプリケーションは希少なので、Mach-IIとColdspringの統合例を探してみました。テンプレート的なものから本格的なものまで以下の3つが大変参考になります。

  1. appbooster(Kurt Wiersma、テンプレート的アプリ)
  2. M2bookstorereactor(Matt Williams、ORM:Reactor使用)
  3. Machblog(Matt Woodward / Peter J. Farrell、本格ブログ)

また、Kurt Wiersmaのプレゼンは、大変わかりやすです。ご参考までにどうぞ!

CF-OOPのリソースリスト

昨日に続いて、CF-OOPに関する頭の体操をしています。
やはり、参考になるのは、Brian Rinaldi のディレクトリかなあーと思って、ググッてみると、
Objects and Frameworks - the Big Resource List
というタイトルで、CF-OOPマニアにはヨダレが垂れるような記事をわかりやすく整理してくれています。

これを読んで頭慣らしかなあー。

MachBlog

Matt WoodwardとPeter J.Farrellが、Mach-IIとColdSpringを使ったMachBlogを立ち上げているようです。
URLは、その名のとおり、

http://www.machblog.org/

です。興味ある方は、コンタクトしてみてください。

CF-Unitedでの発表

[ColdSpring-Dev]のメーリングリストで、Sean A Corfieldが予告した。
6月下旬のCF-Unitedで、ModelGlue、ColdSpring、Reactor、そしてFuseBoxが商用利用可能なオープンソースとして公開されるらしい。
非常に楽しみだ。自社の開発に持ち込むか、このまま趣味の世界で続けるか悩むなあ・・・

mach-ii.jp

会社の同僚からmixiへの招待をもらった。
Coldfusion関連で2つのコミュニティがあった。
ひとつは、ColdFusion。もうひとつは、Mach-II for ColdFusion。
Mach-II for ColdFusionの中を覗くと、管理人の侍さんが
Mach-IIの日本語ウェブサイト http://www.mach-ii.jp/ を
立ち上げていたので、Mach-IIの日本語化に人肌脱いでみようと
思い、協力を申し出たところ管理人からOKをいただいた。
Mach-II.comのドキュメントの更新チェックと過去に翻訳した
ドキュメントのチェックを今月は集中的にやろうと思う。

MachII1.1.0リリース!

Mach-II Ver1.1.0がリリースされました。
今回のリリースから、Peter J Farrellがコアメンバーになっています。
彼のブログの記事からVer1.1.0のリリースノートを抜粋・翻訳しておきます。
一つづつ読みこなしながら詳細をリポートしようと思います。

  • Full backwards compatibility – fully tested under CFMX 6.1 and 7
    • 完全後方互換(CFMX6.1とCFMX7で検証済)
  • Developed under a new community oriented development process
    • コミュニティ志向開発プロセスの採用
  • Updated sample applications
    • サンプルアプリケーションの更新
  • 14 page Mach-II Frequently Asked Questions PDF
  • New QuickStart by Matt Woodward
    • 新クイックスタートのリリース(By Matt Woodward)
  • Bug fixes!
    • バグフィックス
  • New Redirect command
    • 新リダイレクトコマンド
  • ResultArg and ContentArg attributes (no more having to use the request scope as a data bus)
    • ResultArg/ContentArg属性(リクエストスコープのデータバス使用は不要となる)
  • Better exception handling
    • 改良された例外処理
  • XML config file validation (CFMX7 only)
    • XML Configファイルの検証(CFMX7のみ)
  • The ability to get the original cfcatch object when an exception occurs
    • 例外発生時のオリジナルcfcatchオブジェクトのハンドリング
  • New invokers for listeners
    • リスナーの新しい呼出方法
  • Updated and completely NEW documentation
    • 更新され、完全にリニューアルされたドキュメント
  • Better hints in the framework - fire up your CFCExplorer when you need help
    • CFCExplorerで利用可能なフレームワーク用ヒントファイルの提供

CFMX用フレームワーク比較

Sean CorfieldがColdfusion用フレームワークの比較プレゼンを彼のブログにアップした。
Fusebox4、Mach-II、Model-Glueの3つについて、特徴と概観図をシンプルに比較しており、大変わかりやすい。
早速、Model-Glue+ColdSpringとTartanの比較資料における概観図に引用させてもらった。

Model-Glue FAQ

SeanのブログにModel-GlueのFAQ例が紹介されていた。
もう少しブレークダウンしたFAQが必要だとは思いますが、日本語訳したものを取り急ぎご紹介しておきます。

Eddie Awad’s Blog

全般

ビュースタックのうちどれがユーザに表示されますか?
レンダリングされた最後のViewだけがユーザに表示されます。


HTML FormとURL変数はどこに保存されますか?

全てのHTML formとURL変数は、ModelGlue.Core.Eventオブジェクトに保存されます。

Event起動の優先順位は?(resultタグ)
明示的なresult(名前属性を有する)を暗黙的なresult(名前属性を有しない)の前に起動します。

コントローラー:

データをViewに渡すには?
データをViewに渡す (コンプレックスデータタイプを含む)にはarguments.event.setValue(”name”, value)を使います。


ModelGlue.xmlのConfigデータセクションにアクセスするには?
<config>と</config>で与えられるModelGlue.xmlのConfigデータセッティングにアクセスするには、GetModelGlue().getConfigSetting(”settingName”)を使います。


マップドイベントを呼び出すには?

resultをeventにマッピングし、イベントを呼び出すにはarguments.event.addResult(”eventName”)を使います。


ConfigBeanへの参照を得るには?

まず、 <cfset appConfig = GetModelGlue().GetConfigBean("yourBeanFile.xml")> を使い、 セットしたデータをフェッチするには、appConfig.getSettingName() を使います。


Messageの引数にアクセスするには?

arguments.event.getArgument(”name”)を使います。

ModelGlue.xml:

Viewにデータを送るには?
Viewにデータを送るには、
<include>タグの中で<value>タグをこのように使います。 
<event-handler name="dosomething">
            <views>
                <include template=”view.cfm” name=”body”>
                    <value name=”name” value=”value” />
                </include>
            </views>
        </event-handler>

overwrite=”true” か overwrite=”false” を <value>タグに追加することによって、オーバライドするかしないかを指定することができます。


既存Viewに追加するには?

ユニークでないView名をincludeタグに与えるには、'append=”true”‘ を属性に追加しますI。そうすることで、既存Viewのコンテンツに追加書き出しできます。
    <event-handler name="dosomething">
        <views>
            <include template=”view1.cfm” name=”body” />
            <include template=”view2.cfm” name=”body” append=”true” />
        </views>
    </event-handler>

‘append=”true”‘ がない場合、既存Viewをオーバライドします。


M
odelGlue.xmlに一つまたはそれ以上のControllerを定義できますか?
はい、複数のControllerを定義できますが、Controller間でユニークなmessage名である必要があります。


Model-Glueには特別なmessageが準備されていますか?

ModelGlue.xmlでは, Controller内に次のような特別なMessageをマッピングできます:

onRequestStart: リクエスト開始時に必要となる処理をここに記述します。
onRequestEnd:
リクエスト終了時に必要となる処理をここに記述します。
onQueueComplete: すべてのViewが追加され、レンダリングされる前に必要となる処理をここに記述します。


messageに引数を追加できますか?
はい、次のようにしてMessageに引数を追加できます。
<message name="dosomething">
        <argument name=”name” value=”value” />
    </message>

Controller内の対応するファンクション内で次のようにして引数を読み出せます。
arguments.event.getArgument(”name”)

Views:

レンダリングされたViewスタック内のViewにデータをセットするには?
Use viewState.setValue(”name”,”value”)


Controller、ModelGlue.xml及びViewスタックからデータを読み出すには?
Use viewState.getValue(”name”, “default value”)


V
iewスタック内におけるViewの存在をチェックするには?
Use viewCollection.Exists(”viewName”)


過去に定義されたViewコンテンツを表示するには?
Use viewCollection.getView(”viewName”)

リソース:

 

Mach-IIは死んだ?

Sean Corfieldのブログでは、最近"Mach-IIが死んだ""Mach-II退場、ModelGlue入場"を意味するような記事やタイトルが飛び交っている。私も昨年からMach-IIのドキュメントを読みあさったりしていたのだけど、なかなかサンデープログラマーには敷居が高くて、なかなかサンプルアプリケーションを作り出せずにいた。
でも、Model-Glueに接していらい、Mach-IIから乗り換えることに決めた。

先日、SeanがFuseBoxベースのCatClubというプログラムを、Mach-II、Model-Glueに移植した例を彼のブログに掲載した。確かにModel-Glueが一番エレガントだ。今後は、Model-Glue+TarTanが主流になると思う。

Mach-IIとModel-Glue(続き)

Sean Corfieldが、Mach-IIとModel-Glueに関する記事の続きを書いた。

More thoughts on Mach II and Model-Glue
Mach-II アプリケーションのModel-Glueへの移管でわかったこと。

総じてModel-Glueの長所を言及している。

1.event-handlerの定義がMach-IIとModel-Glueで異なる。ちょっと混乱?
    Mach-II          <event-handler event= ... >
    Model-Glue    <event-handler name=... >
2.シンタックスの構造化とシンプルなタグ
    Mach-II           フラットシンタックス
         event-handlersセクション:連続した1行単位のXMLタグ

              event-handlerセクション

                   event-mappingセクション
                   event-argsセクション
                   notifyセクション
                   annouceセクション
                   filterセクション

    Model-Glue    ネステッドシンタックス

         event-handlersセクション:ネストされ、インデントされ構造化されたXMLタグ
              broadcastsセクション
                   messageセクション   
              viewsセクション
                   includeセクション
              resultsセクション
                   resultセクション

結果として、Mach-IIと比較して、Model-Glueのほうが、コントロールロジックとプレゼンテーションロジックを明確に分離でき、eventオブジェクトをデータバスとして一貫して使用できる・・・

3.リスナー定義数の削減
    Mach-II            25個のListnerCFCs
    Model-Glue        6個のControllerCFCs
4.ちょっと困ったこと
    notifyセクションとview-pageセクションの組合せで実現できていたビューの結果をMach-IIではビジネスロジック中で使用できていたが、Model-Glueでは代替手段(Cfsavecontent)を使うことでしかできない。

5.総括:Model-Glueがいい!
    There's no doubt that Model-Glue has benefitted from the experiences of both Mach II and Fusebox but it has also added its own unique elements. Consistency and simplicity are key drivers for Model-Glue which means you sacrifice some power and expressiveness. As always, it's all about tradeoffs and you need to make the choice based on the needs of your project (and, to some extent, your own personal preferences).

Mach-IIとModel-Glue

最近は、Model-Glueのマニュアルの日本語化を通じてModel-Glueの概要を作成していた。
Model-GlueってMach-IIより敷居が低くて結構使えるなーって思いつつ会社の新しい業務プロセスに応用してみようと思っていたところ、Sean Corfieldがブログでそのことを言及していました。

MachII OUT, Model-Glue In!
MacromediaのWebチームのスタンダードになっているMach-IIは、アプリケーション構造、コントロールフローがmacii.xmlファイルに書かれているので、メンテナンス性が悪い。いわば、コンテナのマネージメント:"Inversion of Control"(制御の逆転)を行うため、Model-Glueへの移行を検討した。

Mach-ii.xml file:
    522行, 23Kバイト(XML圧縮後), 25個のListner定義
ModelGlue.xml file:
    427行, 11Kバイト(XML圧縮前), 6個のController定義、5個のConfigBeanCFCs、
    22個のBean定義ファイル(710行, 16Kバイト).

早速、Mach-IIとModel-Glueの比較をビジュアル化してみようと思う。

CFMX開発 Mach-II vs FuseBox

Mach-IIとFuseBoxの領域モデルについて、Hal Helms とJeff Petersが熱く語っているサイトの内容をゆっくり熟読してみた。
広くCFMX開発者で認識されている

Mach-I I ⇒ OO(Object Oriented)
FuseBox ⇒ Procedual

ではなく、

Mach-I I ⇒ 厳密なOO    
       ⇒ OOを熟知したOOPが必須
                  ⇒ 敷居が高い
FuseBox ⇒ ゆるやかなOO
                ⇒ OOを熟知していなくても、OOPもどきができる
                  ⇒ 敷居が低い

ということのようだ。
ブログの記事をハックして表示するためのサンプルプログラムを作りながら、比較してみよう。

CFMX開発 フレームワーク比較表2

CFMX用フレームワーク比較表で、Fusebox、Mach-II、Model-Glueの比較をしていたことを思い出して、もう比較表を見直してみました。
やっぱり、Fuseboxは敷居の低さ、Mach-IIはプロフェッショナル用、Model-Glueは両方のいいとこ取りって感じです。

各比較項目のうち、1行目は共通点、2行目以降は差異点です。
(以下、各フレームワークの略称 FB:Fusebox/M2:Mach-II/MG:Model-Glue)

・XML
All use XML config files
FB has multiple XML,  M2/MG has one XML
・MVC
Can use MVC
FB allows but does not enforce, M2/MG pretty much forces it
・MVC Structure
Model/View directories
FB typically has controller circuit directory, M2/MG has implicit controller in framework
・CFCs
Can use CFCs
FB allows but does not enforce, M2/MG pretty much forces it
・Plugins
All have plugin points
FB has more plugin points, M2 distinguishes events and views, MG has simple request/queue model
・Access control
All have private / public concepts
FB has per circuit and per fuseaction as well as roles-based model, M2/MG has per event access only
・Auth / Security
None
FB has roles support builtin, M2 provides a sample filter, MG is free form
・Install / Config
One-stop core files, basic properties in XML file
One-stop core files is brand new in FB41, FB provides finer control over framework behavior, MG has a simple framework control model
・Modularity of Application
None
FB has circuits to partition large applications
・Modularity of Site
None
M2 allows multiple sub-applications to share application scope
・Commonality
Can explicitly invoke fuseactions / announce events / add results to handle common functionality  FB has per-circuit pre-/post-fuseaction hooks, providing framework level support for commonality
・Views
All encourage views to contain “only HTML” (no logic)
FB/MG lets you include a view directly, M2 requires that you declare all views in XML
・Handler Model
All declare 'handlers' for 'events' in XML
FB is a static, explicit invocation model, M2 is a dynamic, implicit invocation model, MG is somewhere in between
・Data bus
Can use request scope as data bus (but it's not always best practice) – MG uses event object   FB allows variables scope as data bus, M2 allows event object as data bus, MG enforces event object as data bus
・Global data
None
FB has fusebox.init.cfm, M2 uses either 《property》 tags or plugin (or both), MG has settings
・Model CFC Structure
Most CFC methods could be the same
FB uses standard init() construction controlled by explicit code in fusebox.init.cfm or circuit, M2 reserves init() and uses a managed configure() method to initialize CFCs – with no arguments – and CFCs must extend the framework, MG has base controller init() method
・Conditional logic
None
FB has some conditional logic in the XML grammar, M2 requires conditional logic placed in CFCs, MG requires controller CFCs
・Model Actions
All have the concept of separating business model logic from presentation logic
FB allows a model action to set multiple outputs, M2 uses strict call/return semantics so each action can have only one result, MG allows a model to set multiple outputs via event object
・Model Queries
None
FB specifically separates out persistence operations (by a naming convention on files), M2/MG draws no distinction between actions and queries

ちょっと長かったかな?

CFMX開発 フレームワーク論

CFMX開発とフレームワークをGoogleで検索したら、ここに参考資料がありました。
フレームワークとは?を以下のように述べている。ふむふむ・・・

1.パターン
家づくりを考えろ!
建築様式と建造方法にはどんなパターンがありますか?
2.ルール
やっていいこと、やってはいけないこと、そして最適解。
屋根を地面にある家はないだろう?
3.構造
壁、ドア、窓、屋根の型式を定義しなさい。
産業的に統一されたパターンとルールが、標準ドア(カスタムフィットオプションが可能な)を供給する。

さらに、Coldfusionの3つのフレームワークを以下のように比較している。

1.Mach-II
MVCイベントドリブンベースのcfcフレームワーク
2.Fusebox4.1
簡単、標準、柔軟、自然なcfmフレームワーク
3.Tartan
オブジェクト指向のコマンドドリブンベースのサービス層フレームワーク

なんとなく、個人的な好みとしては、Mach-II+Tartanかなー。

CFMX開発 Fuseboxドキュメント

Fuseboxの日本語ドキュメントを探したら、ここにありました。

Fusebox メソドロジー

FuseboxとMach-IIを比較すると、こんな感じかなー。

Fusebox cfmベースのフレームワーク(シロウトさんもOK!)

Mach-II  cfcベースのフレームワーク(プロ向け!)

ログイン

  • コントロールパネルへのログイン
    アカウント:

    パスワード:

更新ブログ

最近のトラックバック

Google

ブログ powered by TypePad
Member since 04/2005