特集
|
![]() |
|
|
|
●EntLibとUnityの統合による新しいオブジェクト生成アーキテクチャ
従来のEntLibでは、各Application Blockのオブジェクト(例えばDatabaseやCacheManager)を生成する場合は、ファクトリ・クラスを使っていた。
確かにファクトリ・クラスを使用することで、オブジェクトの生成を隠ぺいできるが、各Application Blockごとに固有のファクトリ・クラスを用意する必要があり、これらファクトリ・クラスの使用方法や実装などが統一されていなかった。しかし今回追加されたUnityを使用することで、統一された方法でオブジェクトを生成できるようになったのである。
|
以下にCaching Application Block(以下CachingAB)を使用する場合を例にしたサンプル・プログラムを示す。
|
|
| CachingABを使用する場合のサンプル・プログラム | |
| 以下のアセンブリを参照に追加する Microsoft.Practices.Unity.dll Microsoft.Practices.EnterpriseLibrary.Caching.dll Microsoft.Practices.EnterpriseLibrary.Common.dll |
ここではジェネリック・メソッドであるAddNewExtensionメソッドにExtensionクラスの派生クラスであるEnterpriseLibraryCoreExtensionクラスやCachingBlockExtensionクラスを設定している。このExtensionクラスというのは、先に述べたUnityのオブジェクト生成パイプラインにカスタムの処理を追加させるための拡張機能であり、EntLib 4.0はこの拡張機能を利用しているのである。
CachingBlockExtensionクラスはCachingAB用のExtensionクラスだが、各Application Blockにはそれぞれ固有のExtensionクラスが用意されている。なお、EnterpriseLibraryCoreExtensionクラスは、すべてのApplication Blockで共通して使用するExtensionクラスであり、必ず追加する必要があるので覚えておいてほしい。
●EntLib提供オブジェクトの注入
次にカスタム・クラスにログ出力オブジェクトを注入する方法について解説する。
|
まずConfigurationコンソールを使ってLogging Application Blockの各設定を行う。ここではイベント・ログに出力する設定にしておく。
次に以下のサンプル・プログラムを実行するとイベント・ログにメッセージが出力される。ログ出力オブジェクトが注入されるカスタム・クラスとしてCustomObjectクラスを記述している。
|
|
| LogWriterオブジェクトを注入するサンプル・プログラム | |
| 以下のアセンブリを参照に追加する Microsoft.Practices.Unity.dll Microsoft.Practices.EnterpriseLibrary.Logging.dll Microsoft.Practices.EnterpriseLibrary.Common.dll |
このサンプル・プログラムを実行すると、カスタム・クラスであるCustomObjectクラスのコンストラクタのlogWriterパラメータに、Configurationコンソールで設定されたLogWriterオブジェクト(ここではイベント・ログへ出力するためのオブジェクト)が渡されるのである。
このようにEntLib 4.0が提供する各Application Blockのオブジェクトを外部から注入できるため、アプリケーション・アーキテクチャを柔軟に設計・実装できるのである。
最後にEntLib 4.0が提供するExtensionクラスの一覧を下の表に示す。
| Application Block | Extensionクラス名 |
| CachingAB | CachingBlockExtension |
| Data AccessAB | DataAccessBlockExtension |
| LoggingAB | LoggingBlockExtension |
| CryptographyAB | CryptographyBlockExtension |
| SecurityAB | SecurityBlockExtension |
| Excepition HandlingAB | ExceptionHandlingBlockExtension |
| - | EnterpriseLibraryBlockExtension |
| - | EnterpriseLibraryCoreExtension |
| EntLib 4.0が提供しているカスタムExtensionクラス一覧 | |
| ・Application BlockはABと略称 ・EnterpriseLibraryBlockExtensionは各Extensionクラスの基底クラス |
|
■
本稿ではEntLib 4.0の概要について解説を行った。
実は、2008年3月にリリースされたEntLib 4.0 CTP版ではUnityは一切組み込まれていなかった。しかもUnityは2008年4月中旬になってようやくリリースされたのだが、EntLib 4.0はUnityの正規リリース後、わずか半月ほどでUnityを統合したEntLib 4.0がリリースされている。本稿で説明したとおり、UnityはEntLib 4.0の中核に位置しており、コードの修正は少なからずあったものと推察されるが、これほどまでの短期間でリリースできたのはEntLib開発チームがテスト駆動、イテレーションなどのアジャイル開発を実践し、大きな変更でも柔軟かつ迅速に対応できる体制を一貫して敷いているからにほかならない。
このようにpatterns & practicesチームは開発自体も常に先進的かつ挑戦的であり、こういった姿勢がEntLibにも良い効果をもたらしているのだろう。![]()
| INDEX | ||
| 特集:Enterprise Library 4.0概説 | ||
| 新しいオブジェクト生成機構でEntLibはこう変わる! | ||
| 1.EntLib 3.0とEntLib 4.0の相違点 | ||
| 2.Unity Application Block(1) | ||
| 3.Unity Application Block(2) | ||
| 「Enterprise Library 4.0概説」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


