使用微软的应用程序块
我没有做太多的.NET编程,但是我研究了Microsoft模式和实践小组发布的一些应用程序块。我想知道这些通常如何使用:
- 直接链接到应用程序
- 将源添加到应用程序中并用它们构建,可能还需要一些自定义
- 编写特定于应用程序的代码时用作参考的示例代码
我确定这三种用法都是通用的,但是最典型的用法是什么?
"每个人"都使用一些特定的应用程序块吗?
注意:此问题与企业库应用程序块或者本地框架有关,但不相同。
解决方案
回答
我通常将源代码放入我的项目中,然后可以获得更好的智能感知(以及对它们的更好理解)。我一点也不倾向于自定义它们。我喜欢拥有它们的库存,因此我可以在需要它们时随时分发它们。
回答
我已经尝试了几个Enterprise Lib 3.1的应用程序块(2007年5月),下面是一些评论:
缓存应用程序块:在简单情况下(例如内存中缓存),它比System.Web.Caching有趣。
异常处理和日志记录:过于复杂。 NLog或者Log4Net是更好的解决方案。
我看了看其他的街区,但它们似乎不适合我们的项目。
最后,我们完全放弃了EntLib,因为自定义起来很麻烦。
我建议我们真正考虑使用比EntLib更少的整体解决方案。
回答
我认为最方便的方法是添加App blocks \ EntLib作为解决方案。这样,我们每次构建项目时都不会重新编译它们(它们根本不会参与构建过程),并且我们可以轻松地访问其源代码\设置断点等。
回答
我们只是将EntLib 3.1二进制文件放入全局程序集缓存中,并在我们的项目中添加引用。不过,我们通常仅使用日志记录框架。
回答
我已经广泛使用了Microsoft的企业库。如果可能的话,它们通常不应包含在项目中。编译的额外成本可能很沉重。另外,没有理由在项目中使用源代码来使用这些类。只要在项目中添加对DLL的引用,我们在编码过程中仍然会很聪明。还建议避免在开发人员环境中浮动多个代码库。如果我们需要自定义类,请在其自己的解决方案中将其打开并保持一个版本处于活动状态。当然,我总是强烈建议我们使用版本控制(VSS或者Subversion),以防我们需要回滚更改。
还有Microsoft类的开源替代品,它们通常具有更好的编码(即Log4Net,nUnit等)。 Microsoft代码趋于肿且效率低下。
回答
我们通过添加对DLL的引用来使用这些块,并确保设置了"本地复制",以便将它们与应用程序一起部署到应用程序的bin文件夹中。这意味着我们不必再简单得多地使用GAC了!
调试时,只要硬盘上有EntLib源代码,Visual Studio仍可以进入源代码,即使它没有直接包含在项目中。它将在首次使用时提示我们输入位置,并在此后记住该位置。
当前,我们使用缓存,异常和日志记录块。我们还没有想到其余的用例。