客户端的业务逻辑

3

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

我想到的一个例子是基于EJB架构的业务对象验证。它真的必须委托给EJB吗?或者在将对象发送到服务器保存之前,在客户端运行它是否可以?

4个回答

10

为了避免向服务器发送请求,验证可以在客户端完成。但是服务器也应该执行相同的验证。理想情况下,您可以在客户端和服务器端重用相同的类。

Translated:

为了避免向服务器发送请求,验证可以在客户端完成。但是服务器也应该执行相同的验证。理想情况下,您可以在客户端和服务器端重用相同的类。


6

有两个原因。首先,您很可能会为多个客户端编写相同的业务逻辑,因此将其提取到服务器上是有意义的。其次,您很可能无法信任客户端,这意味着服务器验证是必不可少的。


5
为什么人们说业务逻辑应该在服务器端代码(例如EJB)上实现,而不是在客户端应用程序代码上实现?
这是我们从客户/服务器(fat clients)架构中学到的东西。在这种架构中,您必须重新部署所有客户端才能更改某些内容,这真是一件痛苦的事情。因此,服务器端应用程序和集中式部署(使用瘦或丰富的客户端)没有这个问题,因此更受欢迎。
我心中想到的例子是基于EJB的体系结构上的业务对象验证。它真的必须委托给EJB吗?还是在将对象发送到服务器保存之前在客户端上运行它可以呢?
验证是必须在服务器端执行的操作(“不要相信客户端”),也可以在客户端上执行以避免往返。甚至我都没有提到多个客户端的情况(GUI、命令行应用程序、批处理等)。

1

通常客户端代码用于显示信息,而不是真正定义应用程序的功能。

主要是因为这样可以灵活地添加其他客户端,而无需进行奇怪的技巧(如复制/粘贴)

例如,假设您的客户端正在使用HTML,稍后您想要添加一个使用json的新客户端。

如果业务规则在客户端上,您将不得不将它们复制到新客户端。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接