一个弹簧两分钱,一个 websocket 程序员的 struts 程序员。
1.每个控制器负责客户端中存在的每个视图
[好设计,希望你没有过度工程]
第 2 点和第 3 点。
方法 1 - 由于没有会话,因此要求您的 UI/视图在特定间隔(例如 2 分钟)或特定事件(例如页面刷新/重新加载)之后向控制器发送更新请求,以满足您的要求。
该方法的缺点 - UI/View 端代码的频繁更新可能会使您的应用程序瘫痪,因为客户端代码可以更改并用于攻击应用程序。
为避免这种情况,您需要注意每个请求本身是真实的和完整的,并且可以独立执行。
该方法的优点 - 考虑扩展应用程序,它可以像任何东西一样扩展。
第 4 点和第 5 点它们是相似的
controller {
doSomething(){};
}
或者
controller {
HelperCalssReference.doSomething(){};
}
您将始终在控制器内部获得一个线程[就执行速度而言],但第二种方法更加解耦。
第 6 点和第 3 点。
“客户端没有计时器”然后在服务器端维护会话但是“我没有为每个客户端维护任何会话”你必须将它保留在某个地方进行选择。
不要在服务器上维护会话,但必须跟踪客户端并在 2 分钟后向他们发送新的更新,但是如果你想在服务器进行 5 次更新后停止说,你将如何知道何时停止或客户端离线您很好,但您的客户端 UI 可能在线并等待更新。
点是在您的程序中有一个逻辑断点,但在上述要求中找不到。
可能的方法 -
- 使用 REST 可保持应用程序可扩展且无状态。[ https://capgemini.github.io/architecture/is-rest-best-microservices/ 必须阅读“设计/实现/配置难度”部分]
- 使用好莱坞设计原则,但决定谁是您的好莱坞 UI/视图或服务器。
- 事件驱动的方法可以帮助让用户事件决定何时要求更新
[注意客户端通过多次点击在 1 秒内要求 3 次更新。]
快乐的设计:)