ASP.NET Dynamic Dataとは?
ASP.NET Dynamic Data(以下、Dynamic Data)は、ASP.NET 3.5 SP1(.NET Framework 3.5 SP1)で追加されたデータありきのアプリケーションで、データ駆動のWebアプリケーションを開発する際に利用するプロジェクトテンプレートです(図1)。
![図1 Dynamic Data概要図](http://cz-cdn.shoeisha.jp/static/images/article/5595/5595_fig1.gif)
エンティティ化されたデータをもとに、どのデータ型をどういうデータフィールド(データ表示を行うテーブルの列)で表示するかなどの関連付けを、スキャフォールディングと呼ばれる機能で指定します。スキャフォールディング機能を利用すると次のようなメリットが挙げられます。
- データモデルと動的ユーザーコントロールのマッピングを自動で実施してくれるのでコードがほぼ不要
- 動的にページが生成されるのでCRUD機能やページング、ソートなどを提供してくれる
- 動的ユーザーコントロールの作成や外観の変更など、カスタマイズが容易にできる
データドリブンのWebアプリケーションとして簡単に作成できるDynamic Dataは魅力的ですが、現場での活用シナリオはWeb版の簡易マスタメンテとしての利用が最適かもしれないという印象を受けます。一括取り込み、一括削除などは、現時点ではLINQの制約から難しいので、1つずつの項目の編集、追加や全体を鳥瞰するという用途であれば、便利なアプリケーションが構築できるのではないでしょうか。
さらっと説明しましたが、Dynamic Dataを使いこなすために必要なコアの知識は次の3つです。
- フィールドテンプレート
- 属性クラス
- フィルタ
本稿ではこれらの基本的なコアの知識について紹介し、次回以降に組み込みやカスタマイズについて紹介していきます。
また、Dynamic Dataを活用するにあたり重要な用語として「メタデータ」があります。Dynamic Dataにおけるメタデータとはテーブルのデータ構成などの情報を扱うデータです。Dynamic Dataではメタデータを効率的に使用することで、データ駆動アプリケーションの簡単な作成と、拡張性の高いカスタマイズを実現しています。
Microsoftから現在、SilverlightアプリケーションでAccessアプリケーションのようなものを作ることができる業務プロフェッショナル向けのツール「LightSwitch」のBetaが登場しました。データを扱うという部分においてDynamic Dataと同じ方向性ではありますが、違いもあります。ざっと列挙すると次のとおりです。
- LightSwitchはSilverlightプラグインが必要(Silverlightアプリケーションです)
- Dynamic Dataは無償のExpress Editionでも開発ができるが、2010年10月の時点ではLightSwitchは有償提供の予定
- LightSwitchはスキーマを利用者が設定する必要がある
今後の動向がどうなるか不明ですが、プラグイン無しで利用でき、イントラネット内でもブラウザがあれば利用できるDynamic Dataは確実にニーズがあると言えます(Silverlightをイントラネット内で利用する場合には少々手間がかかります)。後は、開発者側のカスタマイズやプロジェクトの要件に合致するかどうかなので、Dynamic Dataの学習が無駄になることはありません。
ASP.NET Dynamic Dataのソリューション構成とサンプルアプリケーション
カスタマイズをするためにはソリューションの構成を理解しておくことが大前提となるため、最初にDynamic Dataのソリューション構成とサンプルアプリケーションを説明します。この部分は前述の記事にて紹介されていますが、.NET 4で機能拡張されたDynamic Dataではソリューション構成も若干変更されています。
Dynamic Dataでは、アプリケーション作成時に多くのフォルダと動的データフィールドが用意されています(図2)。
![図2 Dynamic Dataソリューション構成図](http://cz-cdn.shoeisha.jp/static/images/article/5595/5595_fig2.gif)
Dynamic Dataにおけるフォルダやファイルの概要は次のとおりです。
フォルダ名 | 概要 |
Dynamic Dataフォルダ | Dynamic Dataアプリケーションで使用する情報が詰め込まれているフォルダ |
Contentフォルダ | Dynamic Dataアプリケーションにおいて、FieldTemplate/Filtersフォルダ以外に利用するユーザーコントロールや、Imageファイルを配置するフォルダ |
Imagesフォルダ | Contentフォルダ内にあるImage画像を配置するフォルダ |
CustomPagesフォルダ | PagesTemplatesのテンプレートではなく、独自のページを利用したい場合に利用 |
EntityTemplatesフォルダ | データテーブル(既定ではGridView)のテーブルレイアウトをカスタマイズしたいときに使用するフォルダ |
FieldTemplatesフォルダ | データテーブル(既定ではGridView)に表示されるべきデータを型推論し、動的にデータを表示するためのユーザーコントロールを格納するフォルダ |
Filtersフォルダ | .NET 4版のDynamic Dataで追加。ユーザーが選択した項目や値からフィルタ機能を実施するためのユーザーコントロールを格納するフォルダ |
PageTemplatesフォルダ | Dynamic Dataを利用するページのテンプレートをすべて格納するフォルダ。標準ではすべてここのページファイルを利用 |
Scriptsフォルダ | .NET 4版のDynamic Dataで追加。jQuery 1.4.1が格納されているフォルダ。必要に応じてスクリプトファイルを配置 |
Default.aspx | 実行時のトップページ |
Global.asax | スキャフォールディング機能の利用の有無や、データモデルの登録、URLルーティングの設定などを実施 |
上記のとおり、Dynamic Dataアプリケーションは多くのユーザーコントロールとテンプレートの組み合わせで実現されるアプリケーションです。つまり、カスタマイズの基本はユーザーコントロール単位で実施することになります。どの部分にどのようなユーザーコントロールを配置するのかを押さえておきましょう。
簡単なサンプルアプリケーションですが、基本的に.NET 3.5版と変わりありませんので、過去の記事『簡単なデータ編集はお任せ!ASP.NET Dynamic Dataアプリケーション』(CodeZine)を参照ください。または、サンプルファイルを参照ください。
Dynamic Dataのソリューション構成を押さえた所で、最大のキモ「フィールドテンプレート」について解説します。