はじめに
「patterns & practices Enterprise Library」(以下、「Enterprise Library」と表記)は、Microsoftの「patterns & practices」によって提供される、エンタープライズアプリケーションを開発する際によく用いられる機能を提供するライブラリです。
本稿では、Enterprise Libraryの使用方法を例を挙げて説明します。
対象読者
.NET frameworkを用いたエンタープライズアプリケーションの開発者。
必要な環境
Microsoft Visual Studio .NET 2003上で動作確認しています。
インストール
以下にEnterprise Libraryのインストール方法を示します。
Enterprise Libraryの入手
Enterprise Libraryは、Microsoftのサイトから入手できます。
インストール
ダウンロードしたファイルを実行すると、インストールが行われます。
インストール時にEnterprise Libraryのコンパイルを行うように指定できますので([Compile Enterprise Library]をチェックする)、コンパイルしておくことをお勧めいたします。ただし、ここでチェックしなかった場合でも、後から[プログラム]-[Microsoft patterns & practices]-[Enterprise Library - June 2005]-[Build Enterprise Library]でコンパイル可能です。
インストール後、[プログラム]-[Microsoft patterns & practices]-[Enterprise Library - June 2005]-[Install Services]を実行して、Enterprise Libraryが使用しているWMIのエントリを構成します。
他にも、[プログラム]-[Microsoft patterns & practices]-[Enterprise Library - June 2005]以下にヘルプ(Enterprise Library Documentation)、構成ツール(Enterprise Library Configuration)、サンプル(Quickstart Applications)などが作成されます。
Enterprise Libraryとは
以下に、Enterprise Libraryの概要を示します。
Enterprise Libraryの特徴
Enterprise Libraryは、複数の「Application Block」によって構成されます。Application Blockは一種のガイダンスで、ソースコードとして提供されますので、そのまま使用することも、拡張・変更することも可能です。
特徴として、以下の点が挙げられます。
- 一貫性
- 拡張性
- 使いやすさ
- 統合性
Application Block
Enterprise Library June 2005リリースで提供されるApplication Blockは、以下のものがあります。
- Caching Application Block
- Configuration Application Block
- Data Access Application Block
- Cryptography Application Block
- Exception Handling Application Block
- Logging and Instrumentation Application Block
- Security Application Block
また、利用方法のサンプルであるQuick Startに、新規Application Blockを作成するためのサンプルとしてHello World Application Blockが提供されています。
構成ツール
前述の特徴でも記したのですが、GUIの構成ツールによってBlockの構成が容易に行えます。以下に、構成ツールの画面表示例を示します。なお、本サンプルでは表示を日本語化しております。
ここから、コンテキストメニュー-[New]-[Logging and Instrumentation Application Block]を選択すると、
上図のように、依存するApplication Blockの設定も自動的に加えられます。さらに、Application BlockやProviderが参照するProviderはドロップダウンで選択できますし、参照先のProviderの設定も展開して表示できます。
また、値が間違っている場合は検証エラーを通知してくれる機能もあります。
構成ツールで容易に構成が設定できますので、Enterprise Libraryの提供する機能に関するポリシーの変更であれば、運用時であっても対応することが可能となります。
Application Blockを利用したアプリケーションの作成
Application Blockを利用する際の作業を以下に挙げます。いくつかのApplication Blockでは必要がない作業もあります。
- 必要なApplication Blockを利用するための設定をアプリケーション構成ファイルに記述します。これは、付属の構成ツールを用いて簡単に行うことができます。
- 参照設定でApplication Blockのアセンブリを含めます。
- Application BlockのFactoryクラスを用いて構成ファイルに指定した名前のProviderを取得します。
- 取得したProviderに対してメソッドを呼び出し、処理を実行します。
では、具体例を挙げて説明します。
Windowsアプリケーションを作成し、アプリケーションのログを出力する場面を想定しています。
アプリケーション構成ファイルの記述
Windowsアプリケーションなので、app.configに対して記述を行います。まだ追加していなければ、プロジェクトに追加しておきます。
[プログラム]-[Microsoft patterns & practices]-[Enterprise Library - June 2005]-[Enterprise Library Configuration]で構成ツールを起動します。
メニューから[File]-[Open Application]を選択し、app.configを開きます。すると、ツリー上に[Application]要素が追加されます。この配下に、使用するApplication Blockの設定を行っていきます。
[Application]要素を右クリックして[New]-[Logging and Instrumentation Application Block]を選択します。すると、選択した[Logging and Instrumentation Application Block]要素の他に、依存する[Configuration Application Block]要素が自動で作成され、Logging and Instrumentation Application Block配下にも既定のProviderが生成されたことが確認できます。
設定の種類は以下のものがあります。
- Categories
- Destination(Categoryの子として追加)
- Formatters
- Text Formatter
- Sinks
- Database Sink
- Email Sink
- Event Log Sink
- Flat File Sink
- MSMQ Sink
- WMI Sink
なお、新規作成直後の既存の設定は、
- Generalカテゴリの出力はEvent Log Destinationに対して行われ、Text Formatterを用いて書式化されて、Event Log Sinkを用いてイベント ログ「アプリケーション」(Application)に出力されます。
- Traceカテゴリの出力はFlat File Sink Destinationに対して行われ、やはりText Formatterを用いて書式化されて、Flat File Sinkを用いてファイル「trace.log」に出力されます。
となっています。設定を追加したい場合は、親要素を右クリックして[New]-[対象となる要素]で追加できます。
変更を行ったら、保存を行います。メニューから[File]-[Save Application]を選択すると保存できます。
エクスプローラなどで「app.config」のあったディレクトリを確認すると、「loggingconfiguration.config」と「loggingdistributionconfiguration.config」というファイルが作成されているのが確認できます。これらのファイルはApplication Block内の設定内容を記述しているため、Windowsアプリケーションの場合は実行ディレクトリにコピーする必要があります。このため、プロジェクトのオプションで、[ビルド イベント]-[ビルド後のコマンドライン]に以下のような記述を行います。
copy /y $(ProjectDir)loggingconfiguration.config $(TargetDir) copy /y $(ProjectDir)loggingdistributorconfiguration.config $(TargetDir)
Application Blockの参照設定
Visual Studio .NETに戻り、[参照設定]を右クリックして[参照の追加]を選択します。[参照]ボタンをクリックしてファイルダイアログを表示し、「Enterprise Libraryインストールディレクトリ\bin」にある、以下のファイルを選択します。
- 「Microsoft.Practices.EnterpriseLibrary.Logging.dll」
Providerの取得
Logging and Instrumentation Application Blockの場合は、Providerは内部的にのみ使用されますので、明示的に生成する必要はありません。
処理の実行
ログを出力したい箇所で、以下のソースを記述します。
// ログ1件に対応するオブジェクトを生成します。 Microsoft.Practices.EnterpriseLibrary.Logging.LogEntry entry = new Microsoft.Practices.EnterpriseLibrary.Logging.LogEntry(); // ログに出力する内容を設定します。 entry.Category = "Trace"; entry.Message = "メッセージの内容"; entry.Title = "タイトル"; // ログを出力します。 Microsoft.Practices.EnterpriseLibrary.Logging.Logger.Write(entry);
まず、ログ1件に対応するオブジェクトを生成します。その後、生成したオブジェクトのプロパティを設定することにより、ログのカテゴリおよび出力する内容を指定します。
例ではTraceカテゴリを指定していますので、構成ツールで変更を行っていなければ「trace.log」ファイルに内容が記述されます。
---------------------------------------- Timestamp: 2005/10/10 20:34:40 Message: メッセージの内容 Category: Trace Priority: 0 EventId: 0 Severity: Unspecified Title:タイトル Machine: MachineName Application Domain: LoggingTest.exe Process Id: 73576 Process Name: c:\Develop\CodeZine\UsingEntLib\LoggingTest\bin\Debug \LoggingTest.exe Win32 Thread Id: 68388 Thread Name: Extended Properties: ---------------------------------------- ---------------------------------------- Timestamp: 2005/10/10 20:34:43 Message: メッセージの内容 Category: Trace Priority: 0 EventId: 0 Severity: Unspecified Title:タイトル Machine: MachineName Application Domain: LoggingTest.exe Process Id: 73576 Process Name: c:\Develop\CodeZine\UsingEntLib\LoggingTest\bin\Debug \LoggingTest.exe Win32 Thread Id: 68388 Thread Name: Extended Properties: ----------------------------------------
最後に
本稿ではEnterprise Libraryの特徴と構成ツールを用いた設定の利点を示し、加えてApplication Blockの一つであるLogging and Instrumentation Application Blockの使用方法を示しました。
今後は、既存のApplication Blockでは不足している機能を追加する方法などを扱っていきたいと思います。