【问题标题】:Validation Application Block and .NET 4.0 Code Contracts验证应用程序块和 .NET 4.0 代码合同
【发布时间】:2011-01-28 17:40:08
【问题描述】:

有没有人在 .NET 4.0 中使用代码合同实现企业库 VAB?

如果是这样,您能分享一些见解吗?它对性能有帮助吗?还有其他需要考虑的因素吗?

【问题讨论】:

    标签: .net validation .net-4.0 enterprise-library validationframework


    【解决方案1】:

    两个框架都有不同的范围,因此它们可以很容易地在同一个项目中使用。但是,您必须防止在域实体中使用代码协定。执行此操作时,所有调用者必须确保他们没有设置无效值(执行此操作时会发生编译时错误)。但是,使用验证应用程序块,必须允许您的实体具有(暂时)无效状态。否则 VAB 无法检测到无效对象。

    让我换种说法,代码契约旨在防止编程错误,而不是用户错误,它为此提供了编译时支持。 VAB 防止用户错误,而不是编程错误*,并为此提供运行时支持。

    *好吧,VAB 也可以用于编程错误(事实上,我自己也是这样使用的)但主要场景是用户输入 IMO。

    【讨论】:

    • 代码契约同时进行编译时和运行时检查(取决于您使用的 Visual Studio 版本)。
    • 我实际上并没有说 CC 没有提供运行时支持 :-) 重点是它会检查编程错误。
    • 感谢您的简洁回答。您如何使用 VAB 来防止编程错误?
    • @user102533:当您有一个无需任何用户输入即可自动运行的进程时,您仍然希望在将所有实体发送到数据库之前对其进行验证。但是当实体被认为无效时,原因是编程错误,而不是无效的用户输入。尽管如此,验证这些实体的过程是完全相同的。
    • 我是否正确理解您建议将 VAB 用于任何外部公开的方法(例如 WCF 操作和 UI 验证)和 CodeContract 用于项目内部方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多