【问题标题】:.Net Object validation.Net 对象验证
【发布时间】:2010-06-22 07:16:18
【问题描述】:

我可以将验证应用程序块用于高性能程序吗?我的意思是当我从流中获取对象时,我需要在解析数据时验证它们的值。 据我了解,涉及到反射......

是否有任何替代工具可用于对象验证?

【问题讨论】:

  • 定义高性能。我们在谈论多少个对象。有什么限制。
  • 试试看。运行微基准测试,看看性能是否足以满足您的要求。
  • 假设每秒 1000 个对象。我正在考虑使用 XML 配置文件作为验证规则集。正如我在源代码中播种的那样,每个验证都会在执行验证规则之前再次读取 XML。
  • 是否有任何替代工具可用于对象验证?

标签: .net validation enterprise-library validation-application-bl fluentvalidation-2.0


【解决方案1】:

这在很大程度上取决于您验证的对象的定义。包含许多需要验证的属性甚至包含需要验证的对象集合的对象,验证需要更多时间。但是,一般来说,每秒 1000 个对象对于 VAB 来说肯定不是问题。

验证应用程序块将 XML 配置文件作为对象图缓存在内存中,因此您不必担心每次验证对象时文件加载和 XML 解析。 VAB 有一些很好的优化。

【讨论】:

  • 非常感谢您的回答!如果涉及任何类型的缓存机制,这正是我想知道的。我的对象并不复杂(它们是扁平的,没有集合)。另一个问题 - 如果我多次调用 Validation 来验证相同类型的对象,或者每次都对属性进行反射,是否有任何优化?
  • 它肯定是使用缓存来防止每次都重新反射类型。 ValidatorFactory 基类的CreateValidator 方法调用私有的FindOrCreateValidator 方法。此方法首先尝试从缓存中加载一个验证器,然后再调用抽象的InnerCreateValidator 方法。
  • 酷,看来我会尝试使用这个 VAB。 Aslo 我已经对 1000 次验证进行了一些测试......到目前为止看起来不错。
【解决方案2】:

Fluent ValidationFluent Validation 2.0 是出色的验证框架,可让您随时验证您的类并生成客户端验证器。

【讨论】:

  • 谢谢,我会检查那些框架。乍一看,它们没有提供将验证数据与逻辑分开的能力。说说XML配置能力。
  • 是的,但没有什么能阻止您创建自己的配置部分,然后基于此构建负载规则,或者使用 Spring.Net 等依赖注入框架来配置验证。不过试试 Fluent。我想你会喜欢的。
  • 是的,它可能是可能的解决方案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-10
  • 2017-04-06
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2015-10-24
  • 2023-03-23
相关资源
最近更新 更多