特集:Visual Studio 2008 SP1概説

新機能がてんこ盛りの「Visual Studio 2008 SP1」レビュー

デジタルアドバンテージ 一色 政彦
2008/08/20
Page1 Page2 Page3 Page4

データベース関連の新機能と機能強化ポイント

 VS 2008 SP1&.NET Framework 3.5 SP1では、最近(8月1日に)リリースされたSQL Server 2008を正式にサポートしている。具体的には、例えばSQL Server 2008に追加された新しい型(DateTime2、DateTimeOffset、Filestream)などの機能(参考:「SQL Server 2008で変わる開発スタイル」)がサポートされている。従って、SQL Server 2008を活用する場合はVS 2008 SP1を活用することが基本となる。

 また、VS 2008 SP1&.NET Framework 3.5 SP1では「ADO.NET Entity Framework(ADO.NETエンティティ・フレームワーク)」(以降、Entity Framework)という新しいデータベース・アクセス・テクノロジが追加されている。以下ではこれについて簡単に説明しよう。

ADO.NETの進化形「ADO.NET Entity Framework」

 リレーショナル・データベースとオブジェクト指向アプリは、それぞれデータの扱いに関する構造(つまりデータ・モデル)が異なる。そのため、片方を少しでも変更すればすぐにもう片方と整合が取れなくなってしまう。いわゆる「インピーダンス・ミスマッチ」だが、この不整合の問題は開発者にとって煩わしいだけでなく、実際に開発生産性を落としてしまう。そこで求められるのが、アプリからデータベースの構造を分離するテクノロジであり、それが今回のSP1で提供されるEntity Frameworkである。

 Entity Frameworkは、新しいデータ・アクセス・テクノロジの1つで、ADO.NETの進化形といえる技術だ。これは「ADO.NET Entity Data Model」(以降、EDM)というモデルを用いてクエリや更新などのCRUD(Create/Read/Update/Delete)機能を提供する機能で、データベースの構造・性質による制約にとらわれずに、汎用的で柔軟なデータ・アクセスを実現する。EDMについて詳しく説明すると長くなってしまうので、本稿では実際の開発内容を簡単に紹介するだけにとどめる。

 次の画面はVS 2008 SP1でEDMのモデルを作成しているところだ。

ADO.NETエンティティ・デザイナ(.edmxファイル)
中央にあるのが「ADO.NETエンティティ・デザイナ」だ。このデザイナ画面は.edmxファイルを開くと表示される。.edmxファイルは、プロジェクトに対して[新しい項目の追加]ダイアログで「ADO.NET Entity Data Model」テンプレートから作成できる。「ADO.NET Entity Data Model」テンプレートでは[Entity Data Model ウィザード]が表示され、そこで任意のデータベースからモデルを新規作成することができる。

 EDMのモデル内では、(データベース・スキーマから分離された)概念的なデータ・オブジェクトである「エンティティ」を構成するが、この作業はADO.NETエンティティ・デザイナを使って直感的に行うことができる。

 エンティティ(=概念層)とデータベース・スキーマ(=ストレージ層)をつなぐマッピング(=マッピング層)の変更は、(上に掲載した画面の下側にある)[マッピングの詳細]ウィンドウから簡単に行える。また、(上の画面の右側にある)[モデル ブラウザ]ウィンドウを使うと、エンティティとデータベース・スキーマの内容をツリー構造で表示できる。

 なお、ADO.NETエンティティ・デザイナはLINQ to SQL向けに提供されていた「オブジェクト リレーショナル デザイナ(O/Rデザイナ)」とは異なることに注意してほしい。O/Rデザイナはデータベース・スキーマを元にしたオブジェクトを扱うのに対し、ADO.NETエンティティ・デザイナはEDMに基づくモデルを設計するための新しいデザイナ画面である。EDMはデータベース・スキーマとは直接関連付いていない抽象化されたモデルであるので、コードからはより扱いやすい(はずである)。

 EDMのエンティティにアクセスする手段については後日公開予定の記事に譲るが、その1つに「LINQ To Entities」がある。LINQ To EntitiesはEDMのモデル向けの“LINQ To SQL”といってもよいものだが、LINQ To SQLにはない機能(例えば、複数のテーブルから1つのエンティティを作成する機能など)が搭載されている。

 EDMに基づくLINQ To Entitiesは、データベースやオブジェクトの変更にも強いなどのメリットがあるため、今後はLINQ To Entitiesの方が(LINQ To SQLよりも)より多くの場面で活用されていくのではないだろうかと筆者は予測している(しかしながらこのEntity Frameworkの有効性については、主に米国の開発者の間で賛否両論がある)。

 以上の説明から、Entity Frameworkは「NHibernate」のようなO/Rマッピング(=オブジェクト/リレーショナル・マッピング)の1種であると認識した読者も少なくないだろう。それは大筋で間違っていないと思うが、マイクロソフトは、Entity Frameworkを単なるO/Rマッパーではなく、マイクロソフト・テクノロジにおけるデータ・アクセス・プラットフォームとして位置付けようとしているようだ。そして、マイクロソフトはEntity Frameworkの基盤となっているEDMを、データ・アクセス・プラットフォームとしてより広範な領域で活用しようと考えている。

 具体的には、.NET FrameworkやVisual Studioと連携してEDMのモデルからデータベースをバックエンドに持つ汎用的なWebサイトを自動作成したり、SQL Serverの機能と連携して帳票レポートを自動生成したり、オフラインだったクライアントがサーバに再接続されたときのデータの同期をEDMのモデルにより行ったりなどである。そのようなデータ・アクセス・プラットフォームとしての第1段が「ADO.NET Data Service(ADO.NETデータ・サービス)」(コード名:Astoria。以降、Data Service)である。

RESTインターフェイスを容易に構築できる「ADO.NET Data Service」

 Data Serviceは、上記のEDMのモデル(もしくはLINQ To SQLオブジェクト)を用いて自動的にREST(REpresentational State Transfer)形式のWebサービスを作成する新機能だ。

 一般的にWebサービスといえばSOAP形式だが、Amazon.comが提供するWebサービスに代表されるRESTは、一般的に、厳格で機能の多いSOAPと比べて、軽量であったり、利用者としては使い勝手が良かったりするため、特に不特定多数のエンド・ユーザー向けに広くWebサービスを公開するような場面では非常に人気がある。

 次の画面は実際にData ServiceによりREST形式のWebサービスを作成していることころだ。

ADO.NET Data ServiceによるREST形式のWebサービスの実装
Webプロジェクトに対して[新しい項目の追加]ダイアログで「ADO.NET Data Service」テンプレートから.svcファイルを新規作成する。これにより、.svcファイルに対応する.csファイルが開かれ、コードのひな型が表示されるので、そのコードにEntity Frameworkで作成したEDMのエンティティ・クラスを指定することでREST形式のWebサービスが実装できる。

 次にASP.NET関連の機能を見ていこう。

ASP.NET関連の新機能と機能強化ポイント

データベースWebサイトを自動生成する「ASP.NET Dynamic Data」

 VS 2008 SP1で追加された「ASP.NET Dynamic Data」は、バックエンドにデータベースを持つ汎用的なWebサイトを自動作成する機能だ。データ駆動でWebアプリを作れ、そのデータベース・アクセス・テクノロジとしては、前述のEDMのモデル(もしくはLINQ To SQLオブジェクト)を利用できる。

 生成されたコードは、そのまま使って汎用的なサイトとして作成してもよいし、これを基盤にカスタマイズ、拡張して個別のWebサイトに発展させるという手法も取れる。

ASP.NET Dynamic Dataとして自動生成されたソース・ファール([ソリューション エクスプローラ]の内容)
Webプロジェクトの新規作成で、「Dynamic Data Web サイト」テンプレートもしくは「Dynamic Data エンティティ Web サイト」テンプレートを選択してプロジェクトを作成すると(この例では「Dynamic Data エンティティ Web サイト」を使用した)、このようなファイルが生成される。ここに前述のEDMのモデルを作成し、Global.asax.cs/Global.asax.vbファイルのコードを一部変更すればすぐに動作する。

 これを実際にアクセスすると、次のような画面が表示される。データベースのテーブル内容を一覧表示され、各行の先頭にあるリンクからその行の編集や削除が行える。

ASP.NET Dynamic Dataで自動生成した汎用的なデータベースWebサイトの例

ASP.NET関連のさまざまな機能強化

 そのほかにもさまざまな細かな機能拡張が行われている。

 具体的には、JavaScriptのIntelliSenseの機能強化(jQueryやPrototypeといった一般的なライブラリのサポートなど)や、Webフォーム・デザイナのパフォーマンス改善、従来のASPでもIntelliSenseとデバッグが再びサポートされるようになったこと、ASP.NETの小さな機能の追加(例えば[戻る][進む]ボタンの履歴のサポート)などである(これらの機能については、マイクロソフトが提供している資料に基づいて記述しており、筆者は実際には検証していないことをご了承いただきたい)。

 また、次の画面のように、IDEにおけるJavaScriptの書式設定も可能になっている。

JavaScriptの書式設定([オプション]ダイアログ)

 それでは最後に、言語ごとに個別な機能拡張についていくつか紹介しておこう。


 INDEX
  [特集]Visual Studio 2008 SP1概説
    1.Visual Studio IDEと共通言語ランタイム(CLR)の新機能と機能強化ポイント
    2.クライアント関連の新機能と機能強化ポイント
  3.データベースとASP.NETの新機能と機能強化ポイント
    4.言語個別の新機能と機能強化ポイント


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間