TOPシステム開発> 第1回:LINQとADO.NET Entity Framework (1/3)

次世代データアクセステクノロジー」

次世代データアクセステクノロジー

第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つのパターンに分類している。では冒頭で述べたテクノロジーと対比してみていこう。 次のページ


1   2  3  次のページ


マイクロソフト株式会社 小高 太郎
著者プロフィール
マイクロソフト株式会社  小高 太郎
ERP パッケージ開発に携わり、プログラマーからスタート。Microsoft Universityの講師を兼務、その後、SE、PM、管理職の道に進むも、縁あって2007年3月よりデベロッパー エバンジェリストに転身、現在は開発者向けに様々な技術訴求を行うべく活動中。


INDEX
第1回:LINQとADO.NET Entity Framework
LINQとADO.NET Entity Framework
  トランザクションスクリプト
  ドメイン層の各パターンを補完するLINQとは?