2011-01-09 44 views
2

假设业务层被Web使用,并且一些业务层的功能也作为REST Web服务向公众公开。在哪里做输入验证

您会对表示层(Web或REST Web服务)或业务层的业务逻辑进行输入验证,并在表示层捕获验证错误(由业务层抛出)吗?

(尤其是Spring框架在使用中)

回答

3

如有疑问,这是一般更好地把业务逻辑(包括输入验证逻辑)在业务层,因为

  • 你可能会处理多个演示文稿媒体(例如web GUI和API)
  • 你不想重复代码和管理逻辑的两个实例

咕d框架将允许您在一个共同的地方定义这样的逻辑并且支持早期捕获问题(例如,在表示层中),这通常更直观(快速失败),更具可扩展性(前端捕获它)解决方案。然而,如果你的框架不支持这种功能,你应该更喜欢一致性和可维护性,并将逻辑放在业务层中。

+0

感谢您指出这些凯利。我同意这些问题,但我认为,我可能会在业务层拒绝无效输入(抛出验证错误等),但是在表示层我可能需要更细粒度的验证错误(字段a和字段b等) )。要做到这一点,我必须把所有的验证都放在最好的谷物到商业层,然后在表现层中相应地行事,是不是这样呢?我在春天想,我不知道我找到了一个明确的解决方案。我对春天很陌生,所以我可能会错过一个观点。任何澄清是受欢迎的。 – mete 2011-01-09 20:59:57

1

我建议在所有贴图中实施验证。我做的用户界面,所以用户体验很高,并有即时反馈。但我从不相信用户界面提供的数据(认为禁用JS的用户)。现在,您的服务器端验证的详细程度取决于您。但是,如果可以的话,您希望避免让用户不得不经受一次完整的往返服务器。

+0

+1“永远不要信任UI提供的数据”。 – 2011-01-09 20:57:53

1

业务层中应始终存在违反业务规则的情况。无论您是否允许进行主动检查,都是一项设计决定,您是否希望对客户进行急切检查以避免往返。