Asp.net VB.NET应用程序块

Asp.net VB.NET应用程序块,asp.net,vb.net,Asp.net,Vb.net,ASP.NET/VB.NET应用程序使用ApplicationBlocks()有哪些限制?我发现很多网站都在谈论它的好处,例如将数据层与web层分离,但我找不到一个讨论其局限性的网页。我不认为你真的能得到一个简单的缺点列表。Microsoft Enterprise Library是一个很好的库,文档丰富,功能丰富 您应该将问题改为“当我不需要使用它时?”。当然,这个问题应该在每个街区重复。我试着总结一下 对于每个块,当你不需要它的复杂性时,你应该考虑不要使用该库。功能并非没有成本,最明显的是复杂

ASP.NET/VB.NET应用程序使用ApplicationBlocks()有哪些限制?我发现很多网站都在谈论它的好处,例如将数据层与web层分离,但我找不到一个讨论其局限性的网页。

我不认为你真的能得到一个简单的缺点列表。Microsoft Enterprise Library是一个很好的库,文档丰富,功能丰富

您应该将问题改为“当我不需要使用它时?”。当然,这个问题应该在每个街区重复。我试着总结一下

对于每个块,当你不需要它的复杂性时,你应该考虑不要使用该库。功能并非没有成本,最明显的是复杂性(首先是部署和配置)。如果您必须记录并且您的用户必须更改应用程序的配置,您可能需要提供一些工具或大量文档。复杂性也可以隐藏在代码中,即使EL设计人员试图让一切变得简单,但它也不能像原始解决方案那样简单

第二个重要的缺点显然是速度。抽象层不是免费的,你要为此付出速度代价。在某些情况下,您可能不关心(例如,简单的日志记录),但在其他情况下,这可能是一个问题(因此答案也是“视情况而定”)。例如,想想Unity应用程序块:您将获得注入的所有功能,但您将为此付出巨大的代价

那么你应该什么时候使用它呢?在我看来,这个库的一个大目标是您不需要同时使用它。你可以在需要的时候挑选你需要的积木。例如,使用日志记录和异常处理是非常常见的,但您可能不需要在整个生命中都使用统一。数据访问应用程序块是ADO之上的一个非常薄的层,它简化了许多常见任务,但是您不能获得您具有的抽象级别,例如,用LINQ to SQL或实体(嘿,别忘了它们有非常不同的用途),并且只有当其他的东西不能满足您所需要的时,才应该考虑使用它。

所以,在我看来,你应该考虑每个块并只使用它<强>,只有当< /强> > <强>确实需要< /强>所有与企业级库一起出现的复杂性时。它不是为小型单用户应用程序而设计的(即使有时您可能会发现某些应用程序块对于特定任务可能非常有用)。它的缺点不少:复杂性和速度不容忽视(无论是短期解决方案还是长期维护计划)。此外,如果您真的需要它的所有功能,您会发现它不像“随时可用”的解决方案那么容易,要获得控制权,您需要编写更多的代码。

您有使用这些模块的生产经验吗?问题是什么?如果你只给出几个例子,我们可以评估它们的严重性,并做出一个几乎没有偏见的决定,如果它们是好的还是坏的,以及为什么。@Neolisk是的,我确实使用了(并且在需要时仍然使用)其中的大多数(异常、验证和缓存非常频繁,Unity和Security只是偶尔使用)。我确实停止使用DAC,因为通常我不需要它(正如我所说的,更高级别的库对我来说就足够了,当我必须下到较低级别时,它总是用于我不需要DAC的简单任务)。关于这一点,我的观点是(对于w0051977):问问自己,你们是否需要你们将得到的东西,若答案只是“哇,很酷”,通常你们不会得到足够的回报。我试图用一个数据访问层来区分关注点。我认为应用程序块将是理想的。@w0051977这取决于您将使用什么样的业务模式。对于实体或其他ORM,您可能不需要DAC。如果直接使用连接、命令、读卡器等,它的目的是抽象物理数据库细节。(但您可能会发现在每一层周围构建实心墙是非常有用的)。