【问题标题】:Business Logics on the client side客户端的业务逻辑
【发布时间】:2010-06-11 14:05:47
【问题描述】:

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

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

【问题讨论】:

    标签: java architecture jakarta-ee ejb business-logic


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        这是我们从客户端/服务器(胖客户端)架构中学到的东西。使用这样的架构,您必须重新部署所有客户端来更改某些内容,这很痛苦。服务器端应用程序和集中部署(使用瘦客户端或富客户端)没有这个问题,因此是首选。

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

        验证是您必须在服务器端执行的事情(“不信任客户端”),可以也可以在客户端执行以避免一轮旅行。我什至没有提到多个客户端(GUI、命令行应用程序、批处理等)的情况。

        【讨论】:

          【解决方案4】:

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

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

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

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

          现在,不要对验证规则和其他内容感到困惑。这些也必须放在客户端。

          【讨论】:

            猜你喜欢
            • 2011-05-07
            • 2010-12-03
            • 2012-07-22
            • 2010-09-20
            • 1970-01-01
            • 2016-09-09
            • 1970-01-01
            • 2015-08-14
            • 1970-01-01
            相关资源
            最近更新 更多