特集
Enterprise Library 2.0新機能

Enterprise Library 2.0を特徴づけるDI機能とは

アバナード株式会社 市川 龍太(patterns & practices Champion
2006/04/01
Page1 Page2 Page3

 「マイクロソフトが推進するオープンソース・ライブラリ」として開発された「Enterprise Library」(以下EntLib)は2005年1月のリリースから本稿執筆時点ですでに1年以上が経過し、その間さまざまなツール、エクステンション、Application Blockが開発され、さらに2005年6月にはマイナー・バージョン・アップ版としてEntLib 1.1もリリースされた。

連載:Enterprise Library概説

 それと並行して米マイクロソフトのPAGチーム(Platform Architecture Guidance Team)は、来るべき新しい時代を見据えて.NET Framework 2.0対応のEntLibの開発を着々と進め、2006年1月に晴れて「Enterprise Library for .NET Framework 2.0」(以下EntLib 2.0)をリリースしたのである。

 EntLib 2.0は従来のEntLib 1.xが掲げていた一貫性、拡張性、容易性、統合性をそのまま踏襲し、そして新しく.NET Framework 2.0に対応することで機能性、パフォーマンス、拡張性がさらに向上し、メジャー・バージョン・アップにふさわしい進化を遂げている。

 ここで筆者が「進化」という言葉を使ったことについてやや大げさと思われた読者もいるかもしれない。確かに、これがもし単に従来のEntLib 1.xのソース・コードをNET Framework 2.0に対応させ、再コンパイルしただけという程度であれば、それは単に利用するインターフェイスが変わっただけにすぎず、進化という言葉を使うには少し大げさだ。しかしEntLib 2.0は、拡張性、再利用性により重点を置いて根本から設計し直したことで、まさしく進化と呼ぶにふさわしい変化を遂げるに至ったのである。

 そこで本稿ではEntLib 2.0が一体どのように進化したのかについて順を追って解説していく。

 なお、EntLib 2.0は以下のMSDNサイトからダウンロードが可能である。

 インストール方法については、ダウンロードしたセットアップ・ファイルを実行するだけなので、本稿では割愛する。

EntLib 2.0の構成

 まず初めにEntLib 2.0を構成する各Application Blockの依存関係を視覚化した図を示す。

各Application BlockとConfigurationコンソールの依存関係
は「必須の依存関係」(Block Dependency)を表し、は「オプションの依存関係」(Optional Provider Dependency)を表している。

 この図をEnterprise Libraryの基本ツールと導入手順の「各Application BlockとConfigurationコンソールの依存関係」で示されている従来版の依存関係図と比べてみてほしい。

 EntLib 2.0ではすべてのApplication Blockが、新しく導入された「Enterprise Library Core」(以下Core)へ依存する構成になっており、また、CoreはConfiguration Helper Classes and Design-time Components(以下Config Helper)、Instrumentation、ObjectBuilderの3つのサブシステムによって構成されている。

 次の画面は、[スタート]メニューから[すべてのプログラム]−[Microsoft patterns & practices]−[Enterprise Library - January 2006]−[Enterprise Library Solution]を実行してVisual Studio 2005でEntLib 2.0ソリューションを開き、ソリューション・エクスプローラで「Core」ソリューション・フォルダを展開したところだ。

Coreソリューション・フォルダを構成する各サブシステムのプロジェクト構成
Commonプロジェクトのアセンブリ(Microsoft.Practices.EnterpriseLibrary.Common.dllファイル)はすべてのApplication Blockから参照される。Config Helper(=「Configuration」フォルダ)とInstrumentation(=「Instrumentation」フォルダ)はCommonプロジェクトの中で構成されているが、ObjectBuilderはそれだけで単独のObjectBuilderプロジェクトを構成している。

 この画面から、Coreソリューション・フォルダは、Config Helper(=「Configuration」フォルダ)とInstrumentation(=「Instrumentation」フォルダ)を含むCommonプロジェクト、そしてObjectBuilderプロジェクトという2つのプロジェクトで構成されていることが分かる。

 以下ではまず、これら3つのサブシステムについて説明する。

●Instrumentation

 Instrumentation(「計測」という意味)は文字どおり各Application Blockに計測機能を提供するサブシステムで、以下のリソースに対してその計測結果などを出力する機能を持っている。

  • パフォーマンス・カウンタ
  • イベント・ログ
  • WMI(Windows Management Instrumentation)

 Instrumentationに依存している各Application Blockは、Instrumentationが提供するこれらの機能を各自のプロバイダの中でカプセル化し利用するようになっている。

 ただしこれらの計測機能はデフォルトでは無効化されており、Configurationコンソールで明示的に有効化しないと利用できないようになっている。以下にその利用方法を示す。

Instrumentationサブシステムの計測機能の利用方法
Instrumentationサブシステムの計測機能を利用するには、ConfigurationコンソールでInstrumentationノードを追加して、プロパティ・ウィンドウに表示されるPerformanceCountersEnabled(パフォーマンス・カウンタ)、EventLoggingEnabled(イベント・ログ)、WmiEnabled(WMI)の中で利用したい計測機能の値をTrueに変更すればよい。なお、Configurationコンソールは[スタート]メニューから[すべてのプログラム]−[Microsoft patterns & practices]−[Enterprise Library - January 2006]−[Enterprise Library Configuration]を選択することで起動できる。この画面は、ルート・ノード(「Enterprise Library Configuration」ノード)に「New Application」を追加し、そこで生成された「Application Configuration」ノードにさらに「Instrumentation」と「Logging Application Block」を追加したところである。

 例えばパフォーマンス・カウンタへ各Application Block用カウンタを登録するにはInstallServices.batを実行すればよい(具体的には[スタート]メニューから[すべてのプログラム]−[Microsoft patterns & practices]−[Enterprise Library ? January 2006]−[Install Instrumentation]を選択する)のだが、ここで1つ注意点がある。

 実はInstallServices.batを実行してカウンタを登録しただけではパフォーマンス・モニタからカウンタを追加できないようになっている(正確には[追加]ボタンが無効化されている)。

 以下の画面は、InstallServices.batを実行した後に、[コントロール パネル]−[管理ツール]−[パフォーマンス]を実行してパフォーマンス・モニタ(=[パフォーマンス]ツール)を起動し、実際に[システム モニタ]に新たなカウンタを追加しようとしているところだ。このように[追加]ボタンが無効化されている。

InstallServices.bat実行後のパフォーマンス・モニタへのカウンタの追加
[カウンタの追加]ダイアログは、[システム モニタ]のグラフ上で右クリックしてコンテキスト・メニューを表示し、そこから[カウンタの追加]を選択すれば表示される。このように、InstallServices.batを実行してカウンタを登録しただけでは、パフォーマンス・モニタの[カウンタの追加]ダイアログの[追加]ボタンが無効化されているため、カウンタを追加できない。

 実際にカウンタをパフォーマンス・モニタに追加するには、EntLib 2.0を使用するアプリケーションが実行時に該当のApplication Blockをインスタンス化して初めてカウンタを追加できるようになる(つまり[追加]ボタンが有効化される)のである。

 

 INDEX
  [特集]Enterprise Library 2.0新機能
  Enterprise Library 2.0を特徴づけるDI機能とは
  1.EntLib 2.0の構成
    2.従来のEntLib 1.xとEntLib 2.0の相違点
    3.属性ベースのDI機能を提供するObjectBuilder
 
インデックス・ページヘ  「Enterprise Library 2.0新機能」


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

本日 月間