对 ASP.NET/VB.NET 应用程序使用 ApplicationBlocks(Microsoft 应用程序块的介绍和概述)有什么限制?我发现很多网站都在谈论好处,例如将数据层与 Web 层分离,但我找不到讨论这些限制的网页。
1 回答
我不认为你真的能得到一个简单的缺点列表。Microsoft Enterprise Library 是一个很好的库,文档齐全,内容丰富且具有大量功能。
您应该将您的问题更改为“我什么时候不需要使用它? ”。当然,每个块都应该重复这个问题。我会试着总结一下。
对于每个块,当您不需要它的复杂性时,您应该考虑不要使用该库。功能并非没有成本,最明显的是复杂性(首先是部署和配置)。如果您必须记录并且您的用户必须更改应用程序的配置,您可能需要提供一些工具或大量文档。复杂性也可以隐藏在代码中,即使 EL 设计人员试图让一切变得简单,它也不能像原始解决方案那样简单。
第二个重要的缺点显然是速度。抽象层不可能是免费的,你会为此付出速度成本。在某些情况下,您可能不关心(例如简单的日志记录),但在其他情况下可能会出现问题(所以答案再次是“它取决于”)。例如,想一想 Unity Application Block:您将获得注入的所有力量,但您将为此付出巨大的代价。
那么什么时候应该使用呢?在我看来,这个库的一个重要目标是你不需要一起使用它。您可以在需要时选择所需的块。例如,使用日志记录和异常处理非常常见,但您可能一生都不需要 Unity。数据访问应用程序块是 ADO 之上的一个非常薄的层,它简化了许多常见任务,但您没有获得您所拥有的抽象级别,例如使用 LINQ to SQL 或实体(嘿,不要忘记它们有非常不同的用途) 并且您应该考虑仅在其他所有内容都无法满足您的需要时才使用它。
因此,最后,在我看来,您应该考虑每个块并仅在您确实需要企业级库附带的所有复杂性时才使用它。它不是为小型单用户应用程序设计的(即使有时您可能会发现某些应用程序块可能非常适合特定任务)。它的缺点不小:复杂性和速度不容忽视(无论是短期解决方案还是长期维护计划)。此外,如果您真的需要它的所有功能,您会发现它不像“即用型”解决方案那么容易,要拥有控制权,您需要编写更多代码。