Model view controller 用于定期更新的Java设计

Model view controller 用于定期更新的Java设计,model-view-controller,Model View Controller,我使用的是基于websocket的MVC架构,这个MVC生命周期类似于Spring和Struts,现在我必须支持视图的定期更新 每个控制器负责客户端中的每个视图 控制器必须定期更新视图 我不会为每个客户维护任何会话。因此,控制器必须为所有客户端更新。 我不想在控制器内创建线程,因为每个视图都有很多控制器。 所以,我想创建一个单独的模块,它必须通过调用Controller方法通过Controller处理这个定期更新。 最后,我想保留客户端只是为了显示,所以我不想在客户端保留计时器。 我想用一些标准

我使用的是基于websocket的MVC架构,这个MVC生命周期类似于Spring和Struts,现在我必须支持视图的定期更新

每个控制器负责客户端中的每个视图 控制器必须定期更新视图 我不会为每个客户维护任何会话。因此,控制器必须为所有客户端更新。 我不想在控制器内创建线程,因为每个视图都有很多控制器。 所以,我想创建一个单独的模块,它必须通过调用Controller方法通过Controller处理这个定期更新。 最后,我想保留客户端只是为了显示,所以我不想在客户端保留计时器。
我想用一些标准的方法来设计它,请帮助我按照MVC这样的标准设计模式来做。

对于websocket程序员来说,一个spring,struts程序员的两分钱

1.每个控制器负责客户端中的每个视图 [良好的设计,希望您没有过度设计]

第2点和第3点

方法1-由于没有会话,请您的UI/视图在特定间隔(如2分钟)或特定事件(如页面刷新/重新加载)后向控制器发送更新请求,以满足您的需求

这种方法的缺点——UI/视图端代码频繁更新太多会使应用程序崩溃,因为客户端代码可能会被更改并用于攻击应用程序

为了避免这种情况,您需要注意每个请求本身是真实和完整的,并且可以独立执行

方法-考虑缩放应用程序,它可以像任何东西一样缩放。

第4点和第5点它们是相似的

 controller {
    doSomething(){};
 }

您总是会在控制器中获得一个线程[就执行速度而言],但第二种方法更为解耦

第6点和第3点

客户端没有计时器,然后在服务器端维护会话 但我不会为每个客户维护任何会话,您必须将其保留在某个位置,然后进行选择

不在服务器上维护会话,但必须跟踪客户端并向其发送新的更新(如2分钟后),但如何知道何时停止或客户端处于脱机状态如果要停止,则在服务器上进行5次更新后即可,但您的客户端用户界面可能处于联机状态并等待更新

重点是在您的程序中有一个逻辑断点,但在上述要求中找不到

可能的方法-

使用REST使应用程序保持可扩展和无状态。 [必须阅读设计/实施/配置章节] 使用好莱坞设计原则,但决定谁是你的好莱坞用户界面/视图或服务器。 事件驱动的方法可以帮助用户事件决定何时请求更新 [注意客户端通过多次单击在1秒内请求3次更新。] 快乐设计:

 controller {
 HelperCalssReference.doSomething(){};
 }