連載
|
|
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種類に大別される。
-
従来のApplication Blockを拡張してEnterprise Libraryに対応させたもの
-
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へのメンバー登録が必要。パッチは随時新しいものが提供されているので、実際のパッチ適用ではその新しい方を使ってほしい) |
Cashing |
|
Logging & Instrumentation |
・以下のソースへログ出力を行う機能を提供する |
Data Access |
・以下のデータベースに対応している |
Exception Handling |
|
Security |
|
Cryptography |
・暗号化、復号化機能を提供する |
Updater |
・任意で以下のActivation Process(=更新処理の後に実行されるプロセス)を実行する機能を提供する |
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を拡張する方法について解説する予定である。
INDEX | ||
Enterprise Library概説 | ||
マイクロソフトが推進するオープンソース・ライブラリ | ||
1..NET開発ではなぜオープンソースが利用されないのか? | ||
2.Enterprise Libraryの目的と背景、ライブラリの構成 | ||
「Enterprise Library概説」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|