为什么人们说业务逻辑应该在服务器端代码(例如EJB)上实现而不是在客户端应用程序代码上实现?
我想到的示例是基于EJB的体系结构上的业务对象验证。是否真的必须委托给EJB,还是可以在将对象发送到要保存的服务器之前在客户端上运行它?
答案 0 :(得分:10)
验证可以在客户端完成,以便保存到服务器的往返。但是服务器也应该执行相同的验证。理想情况下,您可以在客户端和服务器端重用相同的类。
答案 1 :(得分:6)
有两个原因。首先,您可能为多个客户端提供相同的业务逻辑,因此将其分解到服务器是有意义的。其次,您很可能无法信任客户端,这意味着服务器验证至关重要。
答案 2 :(得分:5)
为什么人们说业务逻辑应该在服务器端代码(例如EJB)上实现而不是在客户端应用程序代码上实现?
这是我们从客户端/服务器(胖客户端)架构中学到的东西。有了这样的架构,你必须重新部署所有客户端来改变一些东西,这只是一个痛苦。服务器端应用程序和集中部署(使用瘦客户端或富客户端)没有此问题,因此是首选。
我想到的示例是基于EJB的体系结构上的业务对象验证。是否真的必须委托给EJB,还是可以在将对象发送到要保存的服务器之前在客户端上运行它?
验证是您必须在服务器端执行的操作(“不信任客户端”),可以也在客户端执行以避免一轮行程。我甚至没有提到多个客户端(GUI,命令行应用程序,批处理等)的情况。
答案 3 :(得分:1)
因为通常客户端代码用于显示信息而不是真正定义应用程序的功能。
主要是因为这使您可以灵活地添加其他客户端而无需执行奇怪的技巧(如复制/粘贴)
例如,假设您的客户端正在使用HTML,以后您想使用json添加新客户端。
如果业务规则在客户端上,则必须将它们复制到新客户端。
现在,不要与验证规则和其他规则混淆。那些也必须放在客户端。