Microsoftの pattern&practices が Enterprise Library 5.0 をリリースした、これは、エンタプライズ アプリケーション用のビルディングブロックとして使うことのできるアプリケーション ブロックの一式であり、どのように、よいアプリケーションを書くのかを示したMicrosoftのガイダンスでもある。ライブラリは、いくつもの改善と Unity 2.0を含み、 .NET 4.0をサポートしている。
Microsoft Enterprise Library 5.0 は、エンタプライズ アプリケーション用のビルディングブロックとして使えるソースコードを含んでいる。コードは、そのままでも、必要に応じて変更しても拡張しても良い。ライブラリの主な目的は、開発者にいかによいソフトウェアを書くかのガイダンスを提供することである。ライブラリは、プラグインや依存性の注入のようなデザインパターンを使って作られており、共通の機能は、Enterprise Library Coreに隠蔽されている。命名とバージョン付けの統一的なコンベンションを使っており、またすべてのアプリケーション ブロックは、組み込まれている。最初の設計フェーズからユニットテストが含まれている。
この Enterprise Libraryには、以下のアプリケーション ブロックが含まれている:
- キャシュ – インメモリあるいはデータベースのストレージによるローカルなキャシュを提供する
- 暗号化 – 複数のプロバイダからの暗号化をサポートする
- データ アクセス – ストアード プロシージャ、インラインSQLステートメント、コネクション管理、キャシュパラメータのような非常によく使われている ADO.NETのフィーチャをサポートする
- 例外処理 – wrap, replace, logging, fault contract (WCF) のような最も共通の例外を扱うためにいくつかのハンドラーを提供する
- ロギング – ログメッセージのフォーマット化に役立つ、様々な出力先を提供する:イベント、eメール、データベース、メッセージキュー、テキストファイル、WMI、カスタム
- ポリシー インジェクション – 横断的関心事に基づいてオブジェクトの振る舞いを変更するのを助ける。Unity, DIコンテナ上に作られる
- セキュリティ – 開発者が権限と認証の問題を扱うのを助ける
- バリデーション – 他のユーザやシステムからの入力を検証するのをサポートする
- Unity 依存性の注入とインターセプション – 依存性の注入コンテナは、最初、 独立してリリースされた(1.0) が、今では、このライブラリUnityに含まれている
前バージョンに対するライブラリの今バージョンの 改善点 は:
- テスト性と保守性を良くするように、アーキテクチャ的にリファクタリングした
- Unity、ユーザが選んだ他のものと取り替えることができるDIコンテナを持つ
- プログラム的設定をサポートする
- 非同期なデータアクセス
- WPFバリデーション メカニズムを組み込む
- パフォーマンスが向上したロギング
- .NET 4.0のサポート
ライブラリは、32と64ビットのマシンで動くが、 Windows XPではテストされていない、XPは、サポートOSリストに入っていない。それにもかかわらず、ライブラリが.NET 3.5 あるいは .NET 4.0といっしょにXP上で使えない理由はない、と Grigori Melnik氏は、考えている。
氏がまた言う には、pattern&practices チームは、前バージョンとの互換性を維持しようとしたが、互換性を破る変更がある。