背景:在工作中,我的任务是开发一个新的演示web客户端,以取代我们的Windows表单应用程序。我们的后端是用Java开发的,并作为REST服务进行无状态工作。演示客户端应该是基于角度的,因为我们想先尝试一些东西。我和其他开发人员都已经在那里拥有专业知识。因此,其他面向网络的未来框架也受到欢迎。
问题:迁移到新客户端没有问题,也没有挑战。然而,也存在着一两个问题和挑战。我们有几个需要大量处理能力的函数,但是这些功能是在客户端执行的。今后,这种情况不应再发生,而应发生在后端。到目前为止还不错,但是这些算法从不同的启动参数开始,并执行特定的逻辑。在课程中。对话框需要各种新的输入参数,或者显示信息消息。所以程序或这些函数(S)在继续之前等待用户的输入。(它们不会在自己的线程中运行)。整个事情现在应该外包给后端。这里出现了这样的事情如何实现的问题。因为我们目前的架构不允许这样的事情(REST)。
我们已经简要地研究了WebSockets,因为这似乎是实现这类事情的方法。只是客户端和服务器之间的固定连接来进行通信,而不是像现在这样在关闭的请求和响应中处于无状态状态。
这有可能吗?我们现在还不知道从哪里开始,因为WebSockets实现的每个在线示例(在Java中)似乎都不符合我们的需要。
所以基本上我们需要这样的东西:
欢迎任何帮助、反馈和想法。
谢谢
WebSockets例子,这是一个合适的技术吗?
发布于 2023-02-23 13:28:17
真正的问题通常在于你忘记在你的图像中画的部分:
通常可以通过在第一个请求/响应步骤中在服务器上执行一些预处理(“繁重计算”的一小部分)来确定需要来自用户的输入来解决此类需求。然后,在用户提供了该数据之后,第二个请求/响应将全面启动“繁重的计算”,现在所有丢失的数据都可用,因此不需要中断。
从技术上讲,当预处理本身是一项繁重的计算时,这也是可行的。在这种情况下,用户体验和性能可能不是最佳的,因为预处理可能需要进行两次。如果这确实是一个问题,或者说这是可以接受的,那么您就需要看看自己的具体情况。
这种策略避免了在服务器上以有状态方式保持中间结果的需要。如果这真的变得太慢,您可以尝试将服务器上预处理的中间结果缓存一段时间,用从输入参数派生的一些哈希值进行索引,并在进行最终计算时尝试在缓存中查找这些结果。
为了在计算过程中显示信息消息,或者显示最终结果,可以使用标准的AJAX技术,或者使用Websockets (您可以查看当WebSocket可用时,为什么使用AJAX?)。
https://softwareengineering.stackexchange.com/questions/444112
复制相似问题