2010-06-11 222 views
3

为什么人们说,业务逻辑应该在服务器端代码(例如EJB),而不是在客户端应用程序代码来实现?业务逻辑

,我心目中的例子是基于EJB架构的业务对象的验证。它是否真的必须委派给EJB,还是可以在将对象发送到服务器以保存之前在客户端上运行它?

回答

10

验证可能为了节省往返到服务器在客户端完成。但是服务器也应该执行相同的验证。理想情况下,您可以在客户端和服务器端重用相同的类。

6

有两个原因。首先,您可能拥有多个客户端的相同业务逻辑,因此将其分解到服务器是有意义的。其次,你很可能不信任客户端,这意味着服务器验证是必不可少的。

5

为什么人们说商业逻辑应该在服务器端代码(例如EJB)而不是客户端应用程序代码上实现?

这是我们从客户端/服务器(胖客户端)体系结构学到的东西。有了这样的体系结构,你必须重新部署所有的客户来改变一些东西,这只是一个痛苦。服务器端应用程序和集中部署(使用瘦客户端或富客户端)不存在此问题,因此是首选。

我想到的例子是基于EJB的体系结构上的业务对象验证。它是否真的必须委派给EJB,还是可以在将对象发送到服务器以保存之前在客户端上运行它?

验证的东西,你必须在服务器端(“不信任客户端”)和可以也对客户端进行,以避免往返执行。而且我甚至没有提到多客户端(GUI,命令行应用程序,批处理等)的情况。

1

因为通常情况下,客户端代码是用来显示信息并没有真正定义应用程序的功能。

主要是因为这让你灵活地添加其他客户端,而不必做奇怪的技巧(如复制/粘贴)

例如,假设您的客户端使用HTML,以后你要添加使用JSON新客户。

如果业务规则在客户端上,则必须将其复制到新客户端。

现在,不要混淆验证规则和其他。这些也必须放在客户端。