MVC
アーキテクチャの採用によるビジネスロジックのコンポーネント化
cFramework は、Sun Microsystems
から公開されているBluePrints
のデザインを踏襲し、その中で推奨されているMVCアーキテクチャを採用しています。MVCアーキテクチャはSmalltalk
においてGUI のアプリケーションを構築するためのパターンとして考案されたものですが、Model をView
とController から分離して、Model の再利用性を高めようとする考え方は、実装技術に依存することなく、Web
ベースのシステムに対しても有効です。MVC
アーキテクチャは、コンポーネントの再利用を促進していくうえで最適なアーキテクチャパターンの1 つです。
Web 層とEJB
層の分離
cFramework は、システム全体をWeb
サーバ(サーブレットコンテナ)とEJBサーバ(EJBコンテナ)に分散配置できるように考慮しています。Web
層では、ブラウザからのリクエストの受付、EJB 層へのリクエストオブジェクト(イベント)の生成、EJB
層へのリクエスト、次画面の決定、画面遷移を大きな役割としています。EJB
層では、クライアントのタイプ(ブラウザ、Java
アプリケーション、アプレットなど)を意識することなく、ビジネスロジックを実行するという役割を担っています。
スケーラビリティ
cFramework は、EJB を利用しないWeb
アプリケーションを構築することもできます。特に照会系のシステムで、コンポーネント化の必要がない場合は、EJB
層へのリクエストをおこなうことなく、メインサーブレットとビューだけで動作できるように構築されています。また、EJB
層へのリクエストをおこなう場合とおこなわない場合との違いをできる限りなくし、どちらのパターンでもHTTP
セッションやHTTP リクエストに保管したオブジェクトをView
が自律的に照会するように設計されています。
もちろん、大規模な開発においては、プログラムをWeb層とEJB層へ分離するなど分散環境への対応を図る必要があり、cFrameworkではそれを意識することなく開発に専念できます。
優れた再利用性により、生産性が向上
cFramework上で開発されたJavaプログラムやEJBコンポーネント、ビジネスフローは様々なアプリケーションモデルで再利用が可能になります。MVCアーキテクチャに基づいたこれらのコンポーネントを再利用することで、新規開発においても追加開発においても開発期間が短縮され、生産性が大幅に向上します。
システムコンポーネントやユーティリティを標準装備
本来、ソフトウェアアーキテクチャであるフレームワークにはアプリケーションや機能は含まれていません。ログファイルの取得やオブジェクトの永続化、入力チェックなどはフレームワークから見れば一つのアプリケーションに過ぎません。しかしながら、Webアプリケーションにおけるコンポーネント開発の生産性をさらに向上し、信頼性の高いシステムを、短期間に構築するためには、いくつか標準的なシステムコンポーネントやユーティリティがあると便利です。cFramework2.0では以下のようなシステムコンポーネントやユーティティを提供しています。
DI(Dependency-Injection)コンテナとの協調
コンポーネント間の依存性を内部から排除し、コンテナ管理で依存関係を構成します。オブジェクト間の依存度が低くなるため,あるオブジェクトに対する変更の影響範囲が狭くなります。そのため再利用可能なコンポーネントを作り易くなり、さらに組み合わせが楽になるので、再利用もしやすくなります。
依存性の注入
|
cFrameworkでの構成
|
AOPの利用
Aspect Oriented Programming (アスペクト指向プログラミング) の略。
プログラム本来の目的とは異なる処理を内部に埋め込まず、外部から織り込むように作成することによって、元のソースコードに変更を加えずに新たな処理を追加したり、誤った処理を減らし可読性のよいプログラムを作成可能になります。
cFrameworkでの構成
|
フレームワークエンジンのプラガブルな拡張
フレームワークエンジンを各機能へ分割しました。ユーザが“フレームワーク“自体を拡張可能できるようになりました。
フレームワークエンジンを各機能へ分割
|
■システムコンポーネント cSQLBuilder cSQLBuilder
は,SQL文を断片化させたテンプレートをXMLとして記述し,実行時にパラメータ値の集合を与えることによって,動的SQL文を自動的に組み立てるコンポーネントです。
|
cValidator アプリケーションが大規模化していくにつれて,検査するべき入力内容も増加していきます。しかし,フィールドごとに検査内容を定義する方法では,アプリケーションの大規模化への対応や,仕様変更時の一貫性の維持に難点がありました。cValidatorでは制約という概念を導入することで,フィールドとフィールドに対する検査内容を分離しました。
|
cInputcheck 従来のcFrameworkで提供していた入力チェックコンポーネントです。従来のcFramework上で開発したアプリケーションをcFramework2.0上で稼働させるために提供しています。cFramework2.0で新規に開発するアプリケーションではcValidatorを使用してください。
cPersistence 従来のcFrameworkで提供していたO-Rマッピングツール(リレーショナルデータベースにオブジェクト指向データベースと同様の操作でアクセスするためのツール)です。従来のcFramework上で開発したアプリケーションをcFramework2.0上で稼働させるために提供しています。cFramework2.0で新規に開発するアプリケーションではcSQLBuilderを使用してください。
cContentsTemplate 従来のcFrameworkで提供していたテンプレートエンジンコンポーネントです。従来のcFramework上で開発したアプリケーションをcFramework2.0上で稼働させるために提供しています。cFramework2.0で新規に開発するアプリケーションではJSPおよびGridTag等のタグライブラリを使用してください
cLogWrapper
cLogWrapperはロギングコンポーネントをラッピングし,開発者に統一的なロギングインタフェースを提供します。開発者が将来他のロギングコンポーネントを使用する場合,ソースを変更することなく,他のロギングコンポーネントへ移行できます。
■ユーティリティ GridTagユーティリティ cFramework を使用したWeb
アプリケーション内で用いられる情報をHTML として出力する際に,簡単に情報を表形式で表示させます
FileUpload
プラグイン RFC1867 で定義されるHTML
のフォームを利用したアップロードをサポートするためのクラス群
■開発支援ツール Eclipse Plugin for
cFramework(EPC) EPCはcFramework の各種設定ファイルの編集を容易に行うためのEclipse
プラグインです。開発者はこのプラグインを使用することによって,cFrameworkの各種設定ファイルのXML
構文の詳細な仕様について知らなくても,各種設定ファイルの設定を行うことができます。また,Eclipse
のプラグインとした事でリクエストマッピングファイルの編集とリクエストマッピングファイルに記述される各種クラスの編集をEclipse
から行うことができます。
|
ハンドラの組み込みによるシステムの構築 EJBを利用するWebベースのシステムでは、HTTPリクエストからのパラメータの取得やEJBHome
クラスのlookup、画面遷移の制御など共通に利用できる部品を揃えることにより、設計.開発の省力化を図ることができます。この"共通に利用できる部品"をcFramework
として準備し、ターゲットのシステムごとに異なる部分を各種ハンドラで実装していくというスタイルを採用しています。ハンドラベースによる開発スタイルはクラス設計を画一化し、品質の均等化が図れます。
ベースコンポーネントとパッケージコンポーネント cFramework
では、再利用の機会を広げる意味からベースコンポーネントとパッケージコンポーネントという考え方を採用しています。これはドメインのエンティティを表現したオブジェクト(ベースコンポーネント)と、そのオブジェクトを呼び出すコントローラ的な役割を持つオブジェクト(パッケージコンポーネント)では、再利用の機会が異なるはずであるという考えに基づいたものです。ベースコンポーネントという細粒コンポーネントは再利用の機会が広がる分、再利用時のコントローラ系の開発工数が増大します。一方、処理の流れまで記述してあるパッケージコンポーネントレベルでの再利用は、要求仕様との違いにより再利用の機会が狭まりますが、適用できた場合の工数削減は大きいでしょう。このように複数の再利用レベルを設定することにより、柔軟な再利用方法を提供することができます。
複数のアプリケーションサーバのサポート cFramework
は、アプリケーションサーバの違いを吸収し、複数のアプリケーションサーバで同じバイトコードを稼動させることができます。理論上、Java
2 Platform、Enterprise
Edition(J2EE)準拠のアプリケーションサーバ間ではポータビリティが保証されるわけですが、実際動作させるには様々な障害があるためcFramework
は随時稼動確認をしています。
複数言語対応機能 cFramework2.0ではロケールにより使用するスクリーン定義ファイルを自動的に切り替える機能を追加しました。この機能追加により例えば、日本語、英語、中国語用のスクリーン定義ファイルを用意することによって、ロケールに応じた複数言語対応のWebアプリケーションの開発効率を向上させることができます。
|
|
| | |