【发布时间】:2009-06-18 18:25:03
【问题描述】:
(注意:thesetwo 问题类似,但更具体到 ASP.Net)
考虑一个带有富客户端(在我的例子中是 Flex)的典型 Web 应用程序,其中有一个表单,一个将表单输入映射到数据模型的底层客户端逻辑,以及将这些对象远程处理到服务器逻辑的某种方式,通常将其放入数据库中。
我应该在哪里 - 一般而言 - 将验证逻辑放在哪里,i。 e.确保电子邮件地址、数字等格式正确?
- 尽可能早。像 Flex 这样的富客户端框架提供了内置的验证器逻辑,让您可以在表单提交时进行验证,甚至在它到达您的数据模型之前。这很好而且响应迅速,但如果您开发了一些可扩展的东西,并且您希望验证以防止后来的贡献者出现编程错误,那么这不会捕获它。
- 在客户端的数据模型中。由于这是您的数据的“官方”表示,并且您已经拥有数据类型和 getter/setter,因此此验证会捕获来自扩展您系统的人员的用户错误和编程错误。
- 在服务器上收到数据后。这增加了对以后可能加入系统的损坏或恶意客户端的保护。同样在多客户端场景中,这为您提供了一种权威的验证来源。
- 就在您将数据存储到后端之前。这包括防止链中任何地方出现的所有错误(存储逻辑本身除外),但可能需要将错误一直冒泡。
我有点倾向于同时使用 2 和 4,因为我正在构建一个具有第三方潜在扩展点的应用程序。除了 4 之外使用 2 似乎是多余的,但我认为它使客户端应用程序的行为更加用户友好,因为它不需要往返服务器来查看数据是否正常。你的方法是什么?
【问题讨论】:
标签: language-agnostic validation