首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Client-Server-Architecture:将计算逻辑从客户端移到后端-算法在运行时需要某些新值(用户输入)并继续

Client-Server-Architecture:将计算逻辑从客户端移到后端-算法在运行时需要某些新值(用户输入)并继续
EN

Software Engineering用户
提问于 2023-02-23 11:50:06
回答 1查看 74关注 0票数 1

背景:在工作中,我的任务是开发一个新的演示web客户端,以取代我们的Windows表单应用程序。我们的后端是用Java开发的,并作为REST服务进行无状态工作。演示客户端应该是基于角度的,因为我们想先尝试一些东西。我和其他开发人员都已经在那里拥有专业知识。因此,其他面向网络的未来框架也受到欢迎。

问题:迁移到新客户端没有问题,也没有挑战。然而,也存在着一两个问题和挑战。我们有几个需要大量处理能力的函数,但是这些功能是在客户端执行的。今后,这种情况不应再发生,而应发生在后端。到目前为止还不错,但是这些算法从不同的启动参数开始,并执行特定的逻辑。在课程中。对话框需要各种新的输入参数,或者显示信息消息。所以程序或这些函数(S)在继续之前等待用户的输入。(它们不会在自己的线程中运行)。整个事情现在应该外包给后端。这里出现了这样的事情如何实现的问题。因为我们目前的架构不允许这样的事情(REST)。

我们已经简要地研究了WebSockets,因为这似乎是实现这类事情的方法。只是客户端和服务器之间的固定连接来进行通信,而不是像现在这样在关闭的请求和响应中处于无状态状态。

这有可能吗?我们现在还不知道从哪里开始,因为WebSockets实现的每个在线示例(在Java中)似乎都不符合我们的需要。

所以基本上我们需要这样的东西:

欢迎任何帮助、反馈和想法。

谢谢

WebSockets例子,这是一个合适的技术吗?

EN

回答 1

Software Engineering用户

发布于 2023-02-23 13:28:17

真正的问题通常在于你忘记在你的图像中画的部分:

通常可以通过在第一个请求/响应步骤中在服务器上执行一些预处理(“繁重计算”的一小部分)来确定需要来自用户的输入来解决此类需求。然后,在用户提供了该数据之后,第二个请求/响应将全面启动“繁重的计算”,现在所有丢失的数据都可用,因此不需要中断。

从技术上讲,当预处理本身是一项繁重的计算时,这也是可行的。在这种情况下,用户体验和性能可能不是最佳的,因为预处理可能需要进行两次。如果这确实是一个问题,或者说这是可以接受的,那么您就需要看看自己的具体情况。

这种策略避免了在服务器上以有状态方式保持中间结果的需要。如果这真的变得太慢,您可以尝试将服务器上预处理的中间结果缓存一段时间,用从输入参数派生的一些哈希值进行索引,并在进行最终计算时尝试在缓存中查找这些结果。

为了在计算过程中显示信息消息,或者显示最终结果,可以使用标准的AJAX技术,或者使用Websockets (您可以查看当WebSocket可用时,为什么使用AJAX?)。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/444112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档