【问题标题】:Using Microsoft's Application Blocks使用 Microsoft 的应用程序块
【发布时间】:2008-09-10 22:30:38
【问题描述】:

我没有做过很多 .NET 编程,但我研究了一些由 Microsoft 的模式和实践小组发布的应用程序块。我想知道这些通常是如何使用的:

  • 直接链接到应用程序
  • 添加到应用程序并使用它们构建的源代码,可能还有一些自定义项
  • 在编写特定于应用程序的代码时用作参考的示例代码

我确信这三种用法都很常见,但最典型的使用模式是什么?

是否有一些特定的应用程序块被“每个人”使用?

注意:这个问题与Enterprise Library Application Blocks OR Home Grown Framework?有关,但不一样。

【问题讨论】:

    标签: .net design-patterns application-blocks


    【解决方案1】:

    我已广泛使用 Microsoft 的企业库。如果可能,它们通常不应该包含在您的项目中。编译的额外成本可能很高。此外,没有理由让您的项目中的源代码使用这些类。只要您在项目中添加对 DLL 的引用,您仍然会在编码期间获得智能。还建议避免在您的开发人员环境中浮动多个代码库。如果您需要自定义类,请在自己的解决方案中打开它们并保持一个版本处于活动状态。当然,如果您需要回滚更改,我总是强烈建议使用版本控制(VSS 或 Subversion)。

    对于通常编码更好的 Microsoft 类,还有一些开源替代品(即 Log4Net、nUnit 等)。微软代码往往臃肿而低效。

    【讨论】:

      【解决方案2】:

      我通常将源代码放入我的项目中,然后我可以获得更好的智能感知(以及对它们的更好理解)。不过,我根本不倾向于定制它们。我喜欢有库存,所以我可以在需要时随时分发库存二进制文件。

      【讨论】:

        【解决方案3】:

        我们只是将 EntLib 3.1 二进制文件放在全局程序集缓存中,并在我们的项目中添加引用。不过,我们通常只使用日志框架。

        【讨论】:

          【解决方案4】:

          我已经尝试了几个 Enterprise Lib 3.1(2007 年 5 月)的应用程序块,这里有一些 cmets:

          缓存应用程序块:在简单场景(如内存缓存)中没有 System.Web.Caching 有趣 异常处理和日志记录:过于复杂。 NLog 或 Log4Net 是更好的解决方案。

          我查看了其他 Blocks,但它们似乎不适合我们的项目。

          最后我们完全放弃了 EntLib,因为定制起来很痛苦...... 我会建议你真正考虑一个比 EntLib 更少单一的解决方案。

          【讨论】:

            【解决方案5】:

            我认为最方便的方法是添加 App blocks\EntLib 作为解决方案项。这样,您每次构建项目时都不会重新编译它们(它们根本不会参与构建过程),并且您可以轻松访问它们的源代码\设置断点等。

            【讨论】:

            • 仅供参考:您可以完整添加它们并在配置管理器中指定它们不使用解决方案构建。
            • 我更喜欢使用解决方案项目,即使缺少 entlib 项目,它也允许我构建解决方案
            【解决方案6】:

            我们通过添加对 DLL 的引用来使用这些块,确保设置了“本地复制”,以便将它们与应用程序一起部署到应用程序的 bin 文件夹中。这意味着我们不必为 GAC 搞砸——简单多了!

            在调试时,Visual Studio 仍然可以单步执行源代码,即使它没有直接包含在您的项目中,只要您的硬盘上某处有 EntLib 源代码。它会在第一次使用时提示您输入位置,然后记住它。

            我们目前使用缓存、异常和日志记录块。我们还没有想到其他的用例。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-05-01
              • 2010-09-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多