連載
Enterprise Library概説

マイクロソフトが推進するオープンソース・ライブラリ

市川 龍太
2005/05/07
Page1 Page2

Enterprise Libraryの目的と背景

●Enterprise Libraryの起源「Application Block」とは?

 Enterprise Libraryは、その正式版(バージョン1.0)が2005年1月28日(米国時間)にリリースされた。しかし、実はそれ以前にもEnterprise Libraryに含まれる機能やサービスは「Application Block」と呼ばれる複数の汎用ライブラリとして提供されていたのだ。

 以下にそのApplication Blockの一覧を示す。

名称 概要説明
Data Access データベース・アクセス用のヘルパー機能を提供する
Exception Management 例外管理機能(例外時のログ出力機能、カスタム例外クラス)を提供する
Aggregation 複数のサービス・プロバイダからの情報を集約しXMLドキュメント化する機能を提供する
Caching WindowsアプリケーションにWebアプリケーションと同等のキャッシュ機能を提供する
Updater 任意のファイルを自動更新する機能を提供する(次期バージョン2.0からEnterprise Libraryにも搭載される予定)
User Interface Process プレゼンテーション層においてMVCパターンを導入するためのサポート機能を提供する
Configuration Management 外部ファイル、オンメモリ、データベースなどへアプリケーション構成情報を入出力するための機能を提供する
Smart Client Offline オフライン時でもスマート・クライアント機能を継続させるための機能を提供する
Asynchronous Invocation Webクライアントと複数のサービス・プロバイダ間の非同期通信機能を提供する
Logging 外部ファイル、イベント・ログ、データベースなどへのログ出力機能を提供する
Authorization and Profile ロール・ベース認証機能とプロファイル情報へのアクセス機能を提供する
Enterprise Libraryリリース以前に提供されていた主なApplication Blockの一覧
それぞれのApplication Blockの正式名称には、「Data Access Application Block」のように、「Application Block」という語句が最後に付くが、この表では省略した。

●従来のApplication Blockの問題点とEnterprise Libraryの誕生

 これら従来のApplication Blockはエンタープライズ・レベルの開発であっても問題なく使用できるだけの十分な機能を備えていたのだが、さまざまなチームの手によって開発・拡張が行われた結果、(下に示すような)いくつかの設計上の問題点を抱えることになった。

  • Application Block間で設計、ドキュメント、QuickStartサンプルに一貫性がない
  • Application Block間の依存関係が複雑で分かりにくい
  • Application Blockの構成管理に手間がかかる
  • Application Blockを拡張するに当たって構造の理解が難しい
  • Application Blockの利用方法が分かりづらい

 こういった問題点を総合的に見てみると、従来のApplication Blockには、ある種の統一した設計方針、理念が欠如していたように思えてならない。実際に各Application Blockに付属するQuick Startサンプルのソース・コードを見てみると、例外処理や各Application Block間の依存関係において大なり小なり差異が見られる。

 Enterprise Libraryは、こういった従来のApplication Blockが抱えていた問題点を改善し、コミュニティからのフィードバックを反映させることで、「一貫性」「拡張性」「容易性」「統合性」という4つの理念の下に新しく生まれ変わったApplication Blockなのである。

●Enterprise Libraryを導入するメリット

 誤解がないように最初に断っておくが、Enterprise Libraryは、ある種のアーキテクチャを強制するアプリケーション・フレームワークではない(アプリケーション・フレームワークの定義については「ASP.NET vs. Struts フレームワーク徹底比較」が参考になる。ここでは、クラス・ライブラリだけでなく、ソリューションや開発プロセス、ドキュメントなども含めた広義の意味で使用している)。

 Enterprise Libraryの位置付けとしては、ある種のアーキテクチャの下で機能する汎用的なヘルパー・クラスのセットということになるだろう。その位置付けを図示してみたのが、次の図だ。

マイクロソフト・アプリケーション・フレームワークにおけるEnterprise Libraryの位置付け

 この観点からEnterprise Libraryを導入することにより生じるメリットを考えてみると、以下の項目が挙げられる。

  • 高品質、高機能な汎用ライブラリを開発初期から導入できることで、設計、開発、テストにかかるコストを低減できる

  • セキュリティ、パフォーマンス、配置、データアクセスといったアプリケーション開発に共通する課題を解決するためのベスト・プラクティスが再利用可能なサービスとして提供されているので、さまざまな.NETアプリケーションへ簡単に導入できる

  • Enterprise Library Configurationコンソール(構成管理ツール)で各Application Blockの設定内容を一元的に管理でき、それらの振る舞いをプログラムレスで容易に変更できる

  • ソース・コードだけでなく、テスト・コードも公開されており、アプリケーションのソース・コードを変更してもNUnitにより簡単にその正常性をチェックできるので、アプリケーションのニーズに合わせた柔軟な拡張が安心して行える

  • 各Application Blockとともに提供されているドキュメント、QuickStartサンプル、ソース・コードを、パターン(アーキテクチャ、設計、実装)やベスト・プラクティスを体系的に学ぶための教材として利用できる

 それでは次にEnterprise Libraryの構成について見ていくことにしよう。

Enterprise Libraryの構成

 Enterprise LibraryはApplication Blockのみで構成されているわけではなく、ほかにも以下のようなさまざまなツール、バッチ・ファイル、ドキュメントが含まれている。

  • Enterprise Library Application Blocks(各Application Block用アセンブリ・ファイルとソース・コード)

  • Enterprise Library Configurationコンソール(構成管理ツール)

  • Enterprise Library Documentation(ヘルプ・ドキュメント)

  • ビルドおよびインストール用のバッチ・ファイル(BuildLibrary.bat、CopyAssemblies.bat、InstallServices.bat)

  • QuickStartサンプル(C#版とVB.NET版の各Application Block用サンプル・コード)

  • Security Database Administration Console(Security Application Block用権限管理ツール)

 この中から主要なものについて個別に見ていくことにしよう。

●Enterprise Library Application Blocks

 Enterprise Libraryは、その正式版(バージョン1.0)がリリースされた当初、7種類のApplication Blockによって構成されていた。しかし、2005年3月に新しくUpdater Application Block Version 2.0が追加されたことで、本稿執筆時点で8種類に増えている。ただこれらすべてがEnterprise Library向けに新しく開発されたわけではない。実際には、Application Blockは次の2種類に大別される。

  1. 従来のApplication Blockを拡張してEnterprise Libraryに対応させたもの

  2. Enterprise Library向けに新しく開発されたもの

 ちなみに従来のApplication BlockとEnterprise Library向けに拡張されたApplication Blockでは利用できる機能は同じでも、Application Blockとしての互換性はない。例えば、同じData Access Application BlockでもEnterprise Library向けのData Access Application BlockはEnterprise Library Configurationコンソールで構成管理が可能であるが、従来のData Access Application Blockだと同様の構成管理は手作業で行う必要がある。

 この2つの分類に従って、各Application Blockを振り分けると、次のようになる。

1. 従来のApplication Blockを拡張してEnterprise Libraryに対応させたもの

  • Configuration Application Block
  • Cashing Application Block
  • Logging & Instrumentation Application Block
  • Data Access Application Block
  • Exception Handling Application Block
  • Security Application Block
  • Updater Application Block Version 2.0(2005年3月追加)

2. Enterprise Library向けに新しく開発されたもの

  • Cryptography Application Block

 これらのApplication Blockの機能概要を次の表にまとめた。

名称 機能説明
Configuration
・外部ファイルを対象に構成情報の入出力処理を行う機能を提供する
・2005年3月にリリースされたパッチ「Patch 1473」を適用することで、以下の機能が追加される(パッチをダウンロードするにはEnterprise Library Workspaceへのメンバー登録が必要。パッチは随時新しいものが提供されているので、実際のパッチ適用ではその新しい方を使ってほしい)
・アプリケーション構成ファイルへの入出力機能
・レジストリへの入出力機能
・データベースへの入出力機能
Mvp.Xml.XGenを使用して事前コンパイルされたtransformerクラスを使用した外部ファイルへの入出力機能(事前コンパイルを行うことで実行時のXMLシリアライズによるオーバーヘッドがなくなり、結果として初回実行時のパフォーマンスが改善される)
Cashing
・スレッドセーフなキャッシュ機能を以下のタイプのアプリケーションに提供する(なお、キャッシュされるデータはアプリケーション・ドメインごとに保持される)
・Windowsフォーム
・コンソール・アプリケーション
・COM+サービス
・ASP.NET Webアプリケーション
Logging & Instrumentation
・パフォーマンス計測機能を提供する
・以下のソースへログ出力を行う機能を提供する
・イベント・ログ
・テキスト・ファイル
・メッセージ・キュー
・電子メール・データベース
Data Access
・データベース・アクセス用のヘルパー機能を提供する
・以下のデータベースに対応している
・SQL Server
・Oracle
・DB2
Exception Handling
・例外の種類ごとに以下の振る舞いを定義し、例外管理を行う機能を提供する
・例外時にログ出力を行う
・別の例外でラップして再スローする
・例外をスローせずに戻り値(bool値)を返す
Security
・以下の認証方式に対応したユーザー認証機能を提供する

・ 基本認証(ユーザー名とパスワードによる認証)
・ ダイジェスト認証(暗号化されたユーザー名とパスワードによる認証)
Kerberos認証(Kerberos認証プロトコルを使ったWindows統合認証)
・ NTLM認証(Windows NT LAN Manager認証プロトコルを使ったWindows統合認証)
・ NET Passport認証(.NET Passportサービスを利用した認証)
・ フォーム認証(ASP.NET Webフォームで独自に作成したログイン・ページによる認証)

・ロール・ベース・セキュリティ機能を提供する
・プロファイル情報へのアクセス機能を提供する
Cryptography
・ハッシュ値生成機能を提供する
・暗号化、復号化機能を提供する
Updater
・更新情報を管理するマニフェスト・ファイルの定義に従って自動更新処理を行う機能を提供する
・任意で以下のActivation Process(=更新処理の後に実行されるプロセス)を実行する機能を提供する
・ファイル操作
・フォルダ操作
グローバル・アセンブリ・キャッシュ・ツール(gacutil.exe)を実行する
インストーラ・ツール(InstallUtil.exe)を実行する
・MSIファイル(Windowsインストーラによるセットアップ・パッケージ)を実行する
・実行中のアプリケーションが終了するまでActivation Processの実行を待機する
・CAB形式ファイルを展開する
・ダウンロード対象ファイルのハッシュ値とマニフェスト・ファイルに事前に登録してあるハッシュ値を比較し、正しいファイルであることを検証する
Enterprise Libraryを構成するApplication Blockの一覧
この表のApplication Blockの名称は、「Enterprise Libraryリリース以前に提供されていたApplication Block一覧」と同様に、「Application Block」という末尾に付く名前を省略してある。

 以上、今回はEnterprise Libraryの概要から構成までを解説した。次回はEnterprise Libraryの構成内容の詳細について説明し、さらにインストール手順を示す。それ以降の回から実際にEnterprise Libraryを活用してみることにしよう。Data Access Application Blockを例にして、具体的なEnterprise Libraryの活用方法やEnterprise Libraryを拡張する方法について解説する予定である。End of Article


 INDEX
  Enterprise Library概説
  マイクロソフトが推進するオープンソース・ライブラリ
    1..NET開発ではなぜオープンソースが利用されないのか?
  2.Enterprise Libraryの目的と背景、ライブラリの構成
 
インデックス・ページヘ  「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 記事ランキング

本日 月間