質問

私は .NET プログラミングをあまりやったことがありませんが、Microsoft の Patterns and Practices グループが公開しているアプリケーション ブロックをいくつか調べました。これらが通常どのように使用されるのか疑問に思いました。

  • アプリケーションに直接リンク
  • ソースがアプリケーションに追加され、それを使用してビルドされます (おそらくカスタマイズが必要です)
  • アプリケーション固有のコードを作成する際の参考として使用されるサンプル コード

これら 3 つの使用法はすべて一般的だと思いますが、最も典型的な使用パターンは何でしょうか?

「全員」が使用する特定のアプリケーション ブロックがいくつかありますか?

注記:この質問はに関連していますが、同じではありません エンタープライズ ライブラリ アプリケーション ブロックまたは自家製フレームワーク?.

役に立ちましたか?

解決

私は通常、ソースを自分のプロジェクトに組み込むと、より優れたインテリセンス (およびそれらの理解) を得ることができます。ただし、私はそれらをカスタマイズする傾向はまったくありません。私はそれらをストックしておき、必要なときにいつでもストック バイナリを配布できるようにしたいと考えています。

他のヒント

私は Microsoft の Enterprise Library を頻繁に使用してきました。通常、これらは可能な限りプロジェクト内に含めるべきではありません。コンパイルにかかる追加コストは膨大になる可能性があります。さらに、クラスを使用するためにプロジェクトにソース コードを含める必要はありません。プロジェクトに DLL への参照を追加している限り、コーディング中にインテリジェンスを取得できます。また、開発環境に複数のコードベースが存在することも避けることをお勧めします。クラスをカスタマイズする必要がある場合は、クラスを独自のソリューションで開き、1 つのバージョンをアクティブにしておきます。もちろん、変更をロールバックする必要がある場合に備えて、バージョン管理 (VSS または Subversion) を使用することを常に強くお勧めします。

Microsoft クラスに代わる、通常はより適切にコーディングされたオープン ソースの代替手段もあります (つまり、Log4Net、nUnit など)。Microsoft のコードは肥大化して非効率になる傾向があります。

Enterprise Lib 3.1 (2007 年 5 月) のアプリケーション ブロックをいくつか試してみました。以下にいくつかのコメントを示します。

キャッシュアプ​​リケーションブロック:System.Web.Cachingのキャッシュ(インメモリキャッシングなど)例外処理とロギング:複雑すぎる。NLog または Log4Net の方が優れたソリューションです。

他のブロックも見たのですが、私たちのプロジェクトには合わないようでした。

カスタマイズが面倒だったので、ついに EntLib を完全に削除しました...EntLib よりもモノリシックではないソリューションを実際に検討することをお勧めします。

EntLib 3.1 バイナリをグローバル アセンブリ キャッシュに置き、プロジェクトに参照を追加するだけです。ただし、通常はロギング フレームワークのみを使用します。

App Blocks\EntLib をソリューション項目として追加するのが最も便利な方法だと思います。そうすれば、プロジェクトをビルドするたびにそれらが再コンパイルされることはなくなり (ビルド プロセスにはまったく参加しません)、ソース コードやブレークポイントの設定などに簡単にアクセスできます。

DLL への参照を追加することでブロックを使用し、アプリとともにアプリの bin フォルダーにデプロイされるように「ローカルにコピー」が設定されていることを確認します。これは、GAC をいじる必要がなく、はるかに簡単であることを意味します。

デバッグ時に、EntLib ソース コードがハード ディスクのどこかにあれば、Visual Studio はプロジェクトに直接含まれていない場合でも、ソース コードにステップインできます。初めて使用するときに場所の入力を求められ、それ以降はその場所を記憶します。

現在、Caching、Exception、および Logging ブロックを使用しています。残りの使用例はまだ考えていません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top