23

プロジェクトを始めたばかりですが、このプロジェクトは個人的なものなので、Enterprise Library を使用する利点は何ですか? 私たちはオフィスでいくつかのプロジェクトにバージョン 2 を使用していますが、特にデータベース コンポーネントでの利点については (良い慣行は別として) よくわかりません。何かアドバイス?ありがとう

4

4 に答える 4

14

データベース アプリケーション ブロックの主な利点は、データベースに依存しないコードを簡単に作成できることです。開発者は、SqlConnection、SqlCommand などではなく、主に一般的な Database および DbCommand オブジェクトと対話します。したがって、別のデータベース (つまり Oracle) への切り替えがより現実的になります。ビジネス ニーズによっては、これは明確な利点となる可能性があります。また、EntLib は、クエリ パラメーターに DbParameter を使用するように開発者を優しく促します。これにより、SQL インジェクション攻撃のリスクが軽減されます。

別の投稿者が言及したように、データ アプリ ブロックは単純な ADO.NET クラスよりもやや高レベルであるため、同じことを行うのに必要なコード行が少なくなる傾向があります。

個人的には、データ ブロック、例外ブロック、ロギング ブロックが最も便利です。Exception と Logging を一緒に使用すると、例外 (当たり前) をさまざまな場所にさまざまな形式で簡単に記録できます。たとえば、スタック トレースを含む例外ログ エントリ全体を Windows イベント ログに記録すると、問題の診断が比較的容易になります。

EntLib の欠点の 1 つは、一部のアプリ ブロックがかなりの量のロジックを構成ファイルに配置することです。したがって、ロジックはさらに広がります。その一部はコード内にあり、一部は構成ファイル内にあります。利点は、ビルド後、さらにはデプロイ後に構成を変更できることです。

于 2008-10-27T19:14:57.747 に答える
12

私のチームは、製品ラインの再設計の一環として、約 2 年前にMicrosoft Patterns and Practices Enterprise Libraryの評価を行いました。最終的に使用したのは、データベース ブロックだけでした。インスタンス化できるいくつかのクラスにそれをラップして、ユニット テスト用に DAL をモックアウトできるようにしました。Microsoft コード ブロックは、データベース作業に静的呼び出しを使用していました。Microsoft が LINQtoSQL または Entity Framework のものを db ブロックに統合したかどうかはわかりません。それらのいずれかを活用していない場合、db ブロックを使用することをためらうでしょう。

ロギングに関する限り、Log4Netは Microsoft のロギングよりも堅牢で柔軟なソリューションであることがわかりました。ロギングのニーズに合わせてそれを使用しました。

例外処理については、独自にロールしました。Microsoft のコードでは、処理したいリモート処理のケースが処理されませんでした。また、サード パーティのログ フレームワークを使用していたため、独自の例外ライブラリを作成してそれと統合する方が理にかなっていました。ロギング フレームワークを例外フレームワークにある程度統合すると、非常に役立つことがわかりました。Log4Net の周りにいくつかの軽量ラッパー クラスを作成し、それらを例外ログから呼び出したので、Log4Net への依存関係を導入しませんでした。

于 2008-10-27T19:28:27.207 に答える
3

Paul がデータ アプリケーション ブロックについて言及した項目に加えて、私の経験では、データ アプリケーション ブロックは、存在するヘルパーを使用して、必要なデータベース コードを記述するためのはるかに高速な方法を提供することも指摘したいと思います。私は一貫したルック/フィールと開発のスピードのためにそれを使用しています.

于 2008-10-27T19:29:03.367 に答える