連載
Enterprise Library概説

洗練されたデータアクセス機能を実装しよう

―― Enterprise Libraryに対応した汎用データアクセス・ヘルパー・コンポーネント「Data Access Application Block」! ――

市川 龍太(patterns & practices Champion
2005/07/16
Page1 Page2 Page3 Page4

 前回では、Enterprise Libraryを構成する各Application Blockの依存関係や基本ツールの紹介、それから実際にEnterprise Libraryを導入するところまでを解説した。

 今回はEnterprise Libraryを構成するApplication Blockの中でもデータアクセス・ヘルパー機能を提供する「Data Access Application Block」(以下、DAAB)を紹介する。

 DAABの具体的な活用法を解説するに当たり、「The Enterprise Library Configuration Console」(以下Configurationコンソール)を使ってApplication Blockの構成管理を行う方法についても解説する。これはほかのApplication Blockの場合でも基本的に同じなので、この機会にConfigurationコンソールの操作方法にも慣れていただきたい。

Data Access Application Blockとは何か?

●データアクセス・ヘルパー機能とは?

 現在のほとんどのビジネス・アプリケーションやビジネス・サービス(Webサービスなど)では、何かしらのデータの格納にリレーショナル・データベースなどのデータソースを用いている。そしてこれらのデータにアクセスするためのロジック、つまりデータソースに対するアクセス機能として、.NET FrameworkではADO.NETというデータアクセス技術が提供されている。

 しかし、ADO.NETなどのデータアクセスAPIを使用したロジックがアプリケーションの中に散在していては、結果的に保守性の悪いアプリケーションとなることが多い。これを回避する1つの手法は、ビジネス・ロジックからデータアクセス・ロジック部分を分離し、それを「データアクセス・ロジック・コンポーネント」としてカプセル化することだ。このコンポーネントではCRUD(Create、Read、Update、Delete)操作のみを行うシンプルなメソッドを提供し、データソースへの操作を一元管理する。これによりアプリケーションの保守と拡張が容易になる。

 だがアプリケーションが多くのデータアクセス・ロジック・コンポーネントを必要とした場合、各コンポーネントに同じようなデータソースへのアクセス・ロジックを実装することになってしまい、結果として保守性を低下させてしまうことになりかねない。

 そこで、各コンポーネントに汎用的なデータアクセス機能を「データアクセス・ヘルパー・コンポーネント」として一元管理し、さらにはデータソースを抽象化することで、保守性、汎用性、拡張性を確保することが容易になる。DAABは、このデータアクセス・ヘルパー機能を最適な形で提供するApplication Blockなのである(DAABはSQL Server以外にOracleやDB2にも対応している)。

 次の図は、「Application Architecture for .NET」(Application Architecture for .NETについては「アプリケーション・アーキテクチャ設計入門」が参考になる)で示されているレイヤ・アーキテクチャのデータ層におけるDAABの位置付けを図示したものである。

データ層におけるData Access Application Blockの位置付け
Application Architecture for .NETでは、ビジネス・ロジックから分離したデータアクセス・ロジックを複数のデータアクセス・ロジック・コンポーネントにカプセル化する。それらのコンポーネントに対して汎用的なデータアクセス機能を提供するデータアクセス・ヘルパー・コンポーネントがData Access Applcation Blockである。

 なお、DAABはEnterprise Libraryがリリースされる以前から1.0版と2.0版が存在していたのだが、本稿ではEnterprise Libraryを構成しているDAABを対象に解説していく。

【コラム】
従来版のData Access Application Blockについて


 従来版(1.0版、2.0版)についてもpatterns & practicesサイトからダウンロードすることが可能だが、Enterprise LibraryのようなほかのApplication Blockとの依存関係や構成管理ツール(Configurationコンソール)などは存在しない。

 しかし、従来版のDAABは、実際にはSQLHelper.csという1つのファイルのみで構成されているので、ほかのアプリケーションに組み込みやすいこと、さらに1.0版はVisual Studio .NET(以下VS.NET)2002でもビルドが可能であることから(2.0版は.NET Framework 1.1上で開発されているので.NET Framework 1.0を基盤とするVS.NET 2002ではビルドできない)、Enterpise Libraryを導入するほどではないがDAABを使いたい場合や、どうしても.NET Framework 1.0上で開発する必要がある場合など、開発環境や用途に合わせて従来の1.0版と1.1版、Enterpise Library版を使い分けるとよいだろう。

【お知らせ】Tech・Ed 2005 −「Enterprise Library」セッション決定!

 2005年8月2日(火)〜5日(金)に、パシフィコ横浜にて開催されるTech・Ed 2005 Yokohamaの初日(2日)の「ラーニング・デイ」で、「Enterprise Libraryセッション」が設けられる予定だ。このセッションは2コマあり、どちらもマイクロソフト・アーキテクト・エバンジェリスト荒井省三氏と筆者が共同でスピーカーを務める予定である。会場へお越しの際にはぜひともこの2つのセッションにお立ち寄りいただきたい。

 なお、セッション内容は「Enterprise Library 1.0 Hands On Labs」をベースにしたものになる。このEnterprise Library 1.0 Hands On Labsでは、丁寧かつ詳細なドキュメントが、実際に動くサンプル・コードとともに提供されている。残念ながらすべて英文だが、現状ではEnterprise Libraryについて学ぶうえでこれ以上の教材はないだろう。


 INDEX
  連載:Enterprise Library概説
  洗練されたデータアクセス機能を実装しよう
  1.Data Access Application Blockとは何か?
    2.ConfigurationコンソールでData Access Application Blockの構成を設定する
    3.Data Access Application Blockを使うメリット
    4.Data Access Application Blockをさらに使いやすくするツールたち
 
インデックス・ページヘ  「Enterprise Library概説」


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 記事ランキング

本日 月間