金曜日, 7月 25, 2008
【Reflex】 ResourceOperator公開を機にあらためて紹介
トランザクション処理に対応したResource Operator、Resource Locator、また、Source Generatorが完成したので近日中に公開したいと思う。Reflexフレームワークについては何度か説明してきたが、これを機にあらためて概要を説明したい。上図にあるように、Reflexは、3つのサーバコンポーネントとクライアントのコンポーネントから構成される。
まず、Reflex Coreに含まれる、Resource Mapperは、シリアライザー・デシリアライザーで、XMLやJSONからJavaBeanに変換するAPIをもつ。
Reflex Operatorは、Entityに対してCRUD操作ができるようにするためのコンポーネントで、ローカル/リモートを意識することなく呼び出せることが特長である。リモートのEntity呼び出しは、JNDIにURIが登録されているかどうかで判別される。現在のところ、トランザクション処理はローカル呼び出しのときのみ有効となる。(そのうちリモートでも対応する)
Resource Locatorは、EntityのURIを解決するためのコンポーネントである。これ自身がEntityとして振舞い、JNDIにURIを登録・削除する機能をもつサービスとなる。Source Generatorは、項目の文字列からEntityのソース、およびSQLを自動生成するツールである。CoCを前提にしたフレームワークでは、マッピングなどで名前が厳密に定義されないといけないため、自動生成ツールは必須だと考え作成した。
Reflex Viewは、Entityの内容を元にHTMLやPDFを生成するコンポーネントである。HTML生成はブラウザのJavaScript、PDF生成はサーバのライブラリ(Reflex iText)で動作する。詳細はこちらを参照願いたい。ワンソースマルチビューを実現する
上図は、Reflexの各コンポーネントを配置したものである。一番大きな水色枠がサーバ一つを表している。サーバは、Tomcat、Jettyを想定しているが、Resource LocatorはJettyでないと動かない。紫の枠がReflexのフレームワーク、緑の枠が自動生成されたコンポーネントなので、手で書く必要のあるものは、実質、黄色のBlogicだけである。
今回公開予定のResourceOperatorは、プロジェクト開発の経験、反省点を踏まえて改良したものである。トランザクションスクリプトパターンを採用しており、成功時にだけコミット、失敗してExceptionがスローされたときにロールバックされるようになっている。このように、トランザクションを開発者に管理を意識させないように工夫している。トランザクション管理はDIを使ったものが主流だが、Reflexではコンパクトにしたかったので使用していない。今回は、Resource Operator、Resource Locator、Source Generatorの3つを公開する。Reflex iTextはサービスとして公開予定なのでオープンソースにはしないがReflex View(HTML)はそのうち公開する。また、Reflex MapReduceもサービスとして公開予定である。
ここでちょっと上図を見てほしい。これは、2004年にXMLコンソーシアムで発表したときのプレゼン資料の抜粋であるが、Reflexのコンポーネント図とよく似ていることがわかるだろう。当時はSOAPが主流だったので通信のコンポーネントにAXISを使い、バインディングツールにはCastorを使っていた。Castorを使った開発はすばらしく生産性が高かったので、その後のReflexの開発の動機となった。
この図は、暗号化用のXSS4Jなどが含まれているものの、Reflexと比べると複雑である。また、AXISでは、クライアントとサーバは明確に区別され1対1で接続されるが、Reflexでは、サーバとクライアントが対称で区別せず、1:多で複数のコンポーネントを接続できる。
最後にぜんぜん関係ない話をひとつしたい。
2005年のプレゼン資料をあさっていたら、AJAXとRCPの比較なんてものがでてきた。当然、間違いだらけである。これを今訂正するとしたら、「ビジネスロジックを分担するまでには至らない」だろうか。Reflex Viewにおいても、ブラウザ上のJavaScriptビジネスロジックを認めている。
逆に、「高い技術力、センスが要求されるので、一部の開発者でなければ無理」は、概ね当たっているのではないだろうか。開発者のスキルあるなしで、特にパフォーマンスの面で雲泥の差となる場合が多い。AJAXが注目されつつある時期だったのでRCPをひいきめに書いた記憶がある・・それでもAJAXは大流行したのであるが・・・・。
2005年プレゼン資料
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿