フォトアルバム

2009年7月

      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  

なかのひと

アンケート

  • Do you Like?
    アンケート
    どのColdfusion用フレームワークが好き?
    ModelGlue:Unity
    ModelGLue
    Mach-II
    FuseBox
    LiteWire
    OnTap
    ColdBox
    OnAir
    cfWheels
    CFRails

    [PR]アンログ.jp 自動車保険

373news.com

想ひ出

  • Dvc00050
    携帯で撮った写真をアルバムにしています。

サムネイル

  • CF-OOP









  • ganymean.org









  • シナプス

Google Analytics

« 2008年2月 | メイン | 2008年9月 »

Model-Glue3.0のSES URLマネージャーの使用方法

Model-Glue3.0の新機能4:SES URLとURLマネージャー で紹介したSES URLについて、その使用方法が早速Model-Glueメーリングリストで話題になっていました。Doug Hughesがブログで取り上げた記事がまとまっているので紹介しておきます。

1つ目の方法:Model-Glue全体に適用する場合

  • Model-GlueコアファイルのModelGlueConfiguration.xmlの"modelglue.UrlManager" Beanのクラス属性値を直接書き換える。
  • 変更前:"ModelGlue.gesture.eventrequest.url.UrlManager"

<bean id="modelglue.UrlManager" class="ModelGlue.gesture.eventrequest.url.UrlManager">

	<property name="modelGlue">
<ref bean="modelglue.ModelGlue" />
</property>
</bean>
  • 変更後:"ModelGlue.gesture.eventrequest.url.SesUrlManager"

<bean id="modelglue.UrlManager" class="ModelGlue.gesture.eventrequest.url.SesUrlManager">

	<property name="modelGlue">
<ref bean="modelglue.ModelGlue" />
</property>
</bean>

2つ目の方法:アプリケーション毎に適用する場合

  • アプリケーション毎のColdSpring.xmlファイルに"modelglue.UrlManager" beanを定義する。

<bean id="modelglue.UrlManager" class="ModelGlue.gesture.eventrequest.url.SesUrlManager">
    <property name="modelGlue">
        <ref bean="modelglue.ModelGlue" />
    </property>
</bean>


 

Model-Glue3.0の新機能9:Model-Glueリモーティング

Model-Glue3.0の新機能9は、Model-Glueリモーティングです。

Joe曰く、「HTMLだけのWebアプリは終わりました。典型的なColdFusionアプリケーションは、HTMLおよびFlex(Flexベースのウィジェット)の両方を包含することになるでしょう。」とのことです。確かにそうですね。

★Flex / Flashのサポート
Gestureでは、HTMLのエントリーポイントとしてのindex.cfmはもちろん、FlexまたはFlashウィジェットのためのエントリポイントとしてのModelGlueGateway CFCも含みます。

★Flexアプリでのユーザリスト取得例
JSON(.XMLデータも同様):

<event-handler name=”user.list.page”
        <broadcasts>
        <message name=”needUserList” />
        </broadcasts>
        <views format=”HTML,HTMLPartial”>
        <include template=”dspUserList.cfm” name=”body” />
        </views>
        <views format=”JSON”>
        <include template=”dspDataAsJson.cfm” name=”body”>
                <value name=”data” name=”userQuery” />
        </include>
        </views>
        <results format=”HTML”>
        <result do=”view.template” />
        </results>
</event-handler>

. MXML:

<mx:RemoteObject id=”modelGlueGateway”destination=”ColdFusion”source=”ModelGlueGateway” />

. AS3:

var event:ModelGlueEvent =new ModelGlueEvent(“user.list”, [“userQuery”]);
modelGlueGateway.runEvent(event);

現時点では未実装ですが、HTML、Flex、Flashのエンドポイントに対応できることは大変楽しみです。
Model-Glue:Gestureは、Model-Glue:Flexを統合することになるのでしょうか?

Model-Glue3.0の新機能8:マルチ出力フォーマット対応

Model-Glue3.0の8番目の新機能は、マルチ出力フォーマット対応機能です。
なお、この機能は現時点で未実装ですので、注意してください。

Webアプリケーション用MVCフレームワークは、もはやWebページだけでなく、さまざまな出力フォーマットに対応できる必要があります:

  • HTML形式
  • 部分HTML形式
  • XML形式
  • JSON形式

今までのModel-Glue開発では、悪評の高い重複作業が発生していました。
つまり、N個のフォーマット形式に対応するため、N個のイベントハンドラーを必要とします。

HTMLフォーマット:

<event-handler name=”user.list.page”>
        <broadcasts>
        <message name=”needUserList” />
         </broadcasts>
        <views>
        <include template=”dspUserList.cfm” name=”body” />
        </views>
        <results>
        <result do=”view.template” />
        </results>
</event-handler>

断片HTMLフォーマット(<div>置換):

<event-handler name=”user.list.pagepartial”>
        <broadcasts>
        <message name=”needUserList” />
        </broadcasts>
        <views>
        <include template=”dspUserList.cfm” name=”body” />
        </views>
</event-handler>

XMLフォーマット:

<event-handler name=”user.list.xml”>
        <broadcasts>
        <message name=”needUserList” />
        </broadcasts>
        <views>
        <include template=”dspDataAsXML.cfm” name=”body”>
                    <value name=”data” name=”userQuery” />
        </include>
        </views>
</event-handler>

JSONフォーマット:

<event-handler name=”user.list.json”>
        <broadcasts>
        <message name=”needUserList” />
        </broadcasts>
        <views>
        <include template=”dspDataAsJson.cfm” name=”body”>
                <value name=”data” name=”userQuery” />
            </include>
        </views>
</event-handler>

Gestureでは、<broadcasts>、<views>、<results>ブロックは、特定のフォーマットだけに作用するように設定できます。
フォーマット名は、URLまたはFormのHTTP要求で指定される要求メッセージの書式設定方法(デフォルト:"requestFormat")です。
これにより、Gestureでは4つのフォーマットを1つのイベントハンドラーで定義可能となります:

<event-handler name=”user.list.page”>
    <broadcasts>
        <message name=”needUserList” />
        </broadcasts>
        <views format=”HTML,HTMLPartial”>
            <include template=”dspUserList.cfm” name=”body” />
        </views>
        <views format=”JSON”>
        <include template=”dspDataAsJson.cfm” name=”body”>
                <value name=”data” name=”userQuery” />
        </include>
        </views>
        <results format=”HTML”>
        <result do=”view.template” />
        </results>
</event-handler>

Model-Glue3.0の新機能7:コンテンツキャッシュ

Model-Glue3.0の7番目の新機能は、コンテンツキャッシュ機能です。

ポイントは、以下の3点のようです。

  1. 大部分のMVCフレームワークは、何らかのキャッシングメカニズムを提供しています。
  2. Model-Glue3.0は、オブジェクトキャッシュを提供しません。サービス層の仕事だと思うからです
  3. Model-Glue3.0は、コンテンツキャッシュを"dead-simple"に提供します。

★キャッシュキーとタイムアウト
以下のコードは、アプリケーションスコープにおいて、コンテンツ内にhomepageというキーがあるものをキャッシュします。タイムアウト時間は、300秒です。

<event-handler name=”page.home” cache=”application” cacheKey=”homepage” timeout=”300”/>

★キャッシュキー・バリュー(Cachekeyvalues)
.イベントキーからダイナミックにキャッシュを生成するには、CacheKeyValues を使用します。

<event-handler name=”user.profile” cacheKeyValues=”sessionId”/>

<event-handler name=”product.details” cacheKeyValues=”productId”/>

★キャッシュの解除方法は?
.コントローラー内のリスナー関数で、指定イベントのキャッシュキーを無効にできます:

<cfset beans.cacheAdapter.purge(“page.home”) />

続きを読む "Model-Glue3.0の新機能7:コンテンツキャッシュ" »

Model-Glueの新機能6:Beanインジェクション

Model-Glue3.0の6番目の新機能は、Beanインジェクション機能です。

一言でいうと、Autowiringがより便利になったよ!ってことです。

Model-Glue2.0では、コントローラ内に"ビーンA"のsetter関数を定義することによって、コントローラーが"ビーンB"をビーンAに自動的にAutowiringします。

Model-Glue3.0では、Beanインジェクション機能という名称に進化し、コントローラ内のsetter関数定義が一切不要になりました。

どういうことかと言うと、"Beans"スコープをビーンCFCに定義するだけで、コントローラーが直接Autowiringしてくれるというものです。便利!

<cfcomponent beans=”someDAO” />

また、 コントローラー内では、以下のように使い方もできます。

  <cfset beans.SomeDAO.save(SomeThing) />


Model-Glue3.0の新機能5:ヘルパー

Model-Glue3.0の5番目の新機能は、ヘルパー機能です。

以前のModel-Glueで使用してきたUDFはどうなるのでしょうか?
. 以前のModel-Glueでは、UDFの使用は、ちょっと不便でした・・・
. view内でUDFライブラリーをインクルード可能であったが、そのための厄介な設定が必要でした。
. またコントローラー層で利用できませんでした。

★簡単なヘルパー:Include-Style
. CFLib.orgのdateLib.cfmを"/helpers"フォルダに配置すると、そのすべての関数がコントローラーと
  ビューの内部で"helpers"スコープ関数として利用できます。

<cfoutput>#helpers.dateLib.daysTilXmas()#</cfoutput>

★簡単なヘルパー: CFC-Style
. ヘルパー関数として動作するCFCを"/helpers"フォルダに配置すると、
  includeのようにそのすべての関数が"helpers"スコープにコピーされます。

Model-Glue3.0の新機能4:SES URLとURLマネージャー

Model-Glue3.0の4番目の新機能は、SES URLとURLマネージャーです。

. SES URLをサポートしました。
  index.cfm/eventname/key1/value1/key2/value2 形式でのSES URLでアクセス可能です。

. オーバーホールされたEventContext常駐アーキテクチャーのおかげで、URLManagerを通してSES URLをプラグイン的に実装することができました。

. SES URLセーフであるViewをビルドするために、イベントコンテキスト機能を使用します:

  <a href=”#event.linkTo(“user.profile”, “userId,profileId”) />

このように、Viewファイルに記述すると、リンクURLは、次のようにSES形式/非SES形式の両方でアクセス可能となります。

  • 非SES URL形式:index.cfm?userId=2&profileId=42
  • SES URL形式 :index.cfm/userId/2/profileId/42

Model-Glue3.0の新機能3:Application.cfcとの統合

Model-Glue3.0の3番目の新機能は、Application.cfcとの統合です。

. アプリケーション開始、セッション開始もしくはセッション終了を知りたい場合、
. Model-Glue3では、メッセージリスナーに次のように定義するだけです:

<message-listener message=”onApplicationStart” .../>
<message-listener message=”onSessionStart” .../>
<message-listener message=”onSessionEnd” .../>

Model-Glue3.0の新機能2:イベントタイプ

Model-Glue3.0の2番目の新機能は、イベントタイプ(Event Type)です。

この機能は、ModelGlue.xmlファイルの<Event-handler>タグ内でサイト横断的なビューテンプレートを使用すると、<results>タグを反復して記述する必要があります。

<event-handler name="do.this">
    <results>
        <result do="view.template" />
    </results>
</event-handler>

Model-Glue3.0では、イベントハンドラーのサブクラスを定義することによって、イベント完了後に継続して実施するイベントをイベントタイプの引数として与えられるようになっています。つまり、

<Event-handler name="do.this" type="events.templatedEvent" />

"view.template"を実行する<results>タグだけを定義したイベント"events.templatedEvent"をtype属性で与えると、"do.this"の実行後に、"events.templatedEvent"が実行されるという仕掛けです。

定義するイベントのサブクラスは、<results>タグの他に、<broardcasts>タグや<views>タグを含めることができます。

Model-Glue3.0の新機能1:イベント自動生成

Model-Glue3.0の新機能1は、Event eneration(イベントの自動生成)です。

一言でいうと、Model-Glue.xmlのイベントハンドラーを逐一定義せずに、URLにイベントを定義していくと、自動的にイベントが作成され、対応するコントローラー(CFC)、ビューファイル(CFM)、イベント定義&リスナー定義ファイル(ModelGlue.xml)を作成してくれるという優れものです。
この機能は、開発モード(deveropment=true)のみで提供されます。
ColdBoxで先行提供された機能ですが、私もまだ試していないので、あとから実施に試してみます(笑。

以下のYouTubeは、Joe RinehartによるEvent Genarationのデモビデオです。
雰囲気をつかむのには、いいかもしれません。

YouTube: Model-Glue 3 (

続きを読む "Model-Glue3.0の新機能1:イベント自動生成" »

Model-Glue3(Gesture)αリリース!

先週末は、久しぶりにCF-OOP関連のサイトを渡り歩いた。
理由は、Flex3やAIR(APPLO)がリリースされて以降、ColdFusionの開発環境に大きな刺激が加わり、Model-Glue:Unityでは限界かなあと思い始めていたからであった。

そういう意味では、ColdBox が一番開発ニーズを先取りしているような気がしたのだが、Model-Glueが先月3.0(コードネーム:Gesture)をαリリースしていたので、こちらを先にチェックしてみることにした。

Model-Glue3(Gesture)の新機能は、SVN内の開発ロードショウ.PDFを抜粋すると、以下のとおりです。
      ■Model-Glue3.0の新機能
・新機能1:イベント自動生成(開発モード)
・新機能2:イベントタイプ
・新機能3:Application.cfcとの統合
・新機能4:SES URLとURLマネージャー
・新機能5:ヘルパー
・新機能6:Beanインジェクション(Autowiring)
・新機能7:コンテンツキャッシュ
・新機能8:マルチ出力対応 ※未実装
・新機能9:Model-Glueリモーティング ※未実装

ColdBoxに先を越された分、しっかりと原点に返っているような気がします。
次回以降、意訳したものを紹介していこうと思います。



ログイン

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

    パスワード:

PR情報

  • [[PR]]
  • おすすめバナー

更新ブログ

google Search

  • Google
    blog.ganymean.org
    WWW

最近のトラックバック

Google

SHINOBI

Blog powered by TypePad
Member since 04/2005