次世代データアクセステクノロジー
第1回:LINQとADO.NET Entity Framework
著者:マイクロソフト 小高 太郎
公開日:2008/1/8(火)
LINQとADO.NET Entity Framework
マイクロソフトはVisual Studioの次期メジャーリリースVisual Studio 2008をリリースした。Visual Studio 2008が登場することで、ようやく、NET Framework 3.0に完全に対応した開発ツールが入手できるようになる。
Visual Studio 2008で、追加される機能の中で注目度が大きいのがLINQである。LINQとは、.NET Frameworkで使用する言語を拡張する形で実装される、言語埋め込みクエリー技術である。LINQを使用するとこのようにプログラム言語として、SQLライクにコーディングできるという特徴がある。
まずはリスト1のプログラムをご覧いただきたい。これはデータベースに対してクエリーしている例であるが、LINQを使用するとプログラム言語として、SQLライクにコーディングできるという特徴がある。
また、データアクセスのテクノロジーとして、もう1つ加わるのがADO.NET Entity Frameworkだ(Visual Studio 2008のアップデートとして、2008年の前半に予定)。ADO.NET Entity Frameworkは、データスキーマを抽象化、概念モデルとし、その概念モデルに対するクエリーを可能にする技術である。本記事ではこれらの技術の背景や住み分けについて解説していく。
リスト1:LINQの例
using (pubsDataContext pubs = new pubsDataContext())
{
var titles = from t in pubs.titles
where t.type == "business"
select t;
foreach (var t in titles)
Console.WriteLine(t.title_id);
}
図1:論理階層
(出典:エンタープライズ パターン & プラクティス
http://www.microsoft.com/japan/msdn/practices/
type/Patterns/enterprise/ArcThreeLayeredSvcsApp.aspx)
(画像をクリックすると別ウィンドウに拡大図を表示します)
階層化アーキテクチャー
本記事では技術を整理する切り口として、階層化アーキテクチャーの視点で説明する。各階層は図1のような形に分類される。
プレゼンテーション層は、アプリケーションのユーザインターフェイスを提供する。ビジネス層はアプリケーションのビジネス機能を実装する。そしてデータ層では、データベースやその他の外部システムへのアクセスが提供される。
ドメイン層
データアクセスを考える場合、ビジネス層の設計次第でデータ層の実装が大きく変わってくる。
ビジネス層の中では、図1が示すように業務のモデルの管理、これらに対する操作、サービスの公開など、内部でさまざまな処理が行われる必要がある。対象となる業務の、いわゆるビジネスロジックそのものが実装された部分を強調して「ドメイン層」と呼ぶことがある。
本記事ではドメイン層についてMartin Fowler氏が執筆した「Patterns of Enterprise Application Architecture(以下、PoEAA)」の中で紹介されているアーキテクチャパターンをベースに解説を行っていく。
PoEAA内では、ドメインロジックの構築について「トランザクションスクリプト」「テーブルモジュール」「ドメインモデル」の3つのパターンに分類している。では冒頭で述べたテクノロジーと対比してみていこう。 次のページ