4

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

  • アプリケーションに直接リンク
  • ソースがアプリケーションに追加され、それらでビルドされます。おそらくいくつかのカスタマイズが行われます
  • アプリケーション固有のコードを記述する際に参照として使用されるサンプル コード

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

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

注: この質問はEnterprise Library Application Blocks OR Home Grown Frameworkに関連していますが、同じではありませんか? .

4

6 に答える 6

3

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

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

于 2008-12-04T21:41:47.303 に答える
2

Enterprise Lib 3.1(2007年5月)のいくつかのアプリケーションブロックを試しましたが、ここにいくつかのコメントがあります。

アプリケーションブロックのキャッシング:単純なシナリオ(インメモリキャッシングなど)でのSystem.Web.Cachingほど面白くありません。例外処理とロギング:複雑すぎます。NLogまたはLog4Netがより優れたソリューションです。

私は他のブロックを見ましたが、それらは私たちのプロジェクトに適合していないようでした。

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

于 2008-09-10T22:46:21.067 に答える
2

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

于 2008-09-10T23:05:36.263 に答える
2

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

于 2008-09-10T22:35:48.190 に答える
1

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

于 2008-09-10T22:51:49.540 に答える
0

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

デバッグ時には、ハードディスクのどこかにEntLibソースコードがある限り、プロジェクトに直接含まれていなくても、VisualStudioはソースコードにステップインできます。最初の使用時に場所の入力を求められ、その後は覚えておいてください。

現在、Caching、Exception、Loggingブロックを使用しています。残りのユースケースについてはまだ考えていません。

于 2009-08-30T18:46:46.223 に答える