网络应用开发中的通信与导航模式解析
1. 持久通信模式
1.1 版本号与更新
版本号并非常见的编程概念,通常我们不会追踪数据是否发生变化,但追踪数据变化是管理变更的好方法。例如,Subversion 这样优秀的版本控制系统就使用了版本号,许多软件程序也使用构建号来表示软件的变更。
Ajax 应用基于具有特定状态的数据,因此为其关联版本号是个不错的主意。以预订航班为例,在尝试多种排列组合后,我们可能希望回到之前某个请求对应的应用状态,但当前的 Web 应用往往无法满足这一需求。
在 Ajax 应用中,版本号可以被定义为一种独立的模式,但由于持久通信模式需要版本号,所以版本号被视为一个实现细节,尽管这是一个非常关键的实现细节。
1.2 性能考虑
持久通信模式可能会消耗大量资源。服务器端的资源消耗主要在于读取流对资源的占用。虽然 Jetty 已经找到了尽可能有效处理该问题的方法,但如果有数千用户访问各种全局和唯一资源,服务器内存将被占用。
为了更有效地管理资源,一个经验法则是将一个 HTML 页面限制为使用单一的持久通信模式。虽然不阻止使用多个实例,但这可能会导致客户端和服务器端的资源爆炸。例如,如果有 100 个客户端,按照这个规则就会有 100 个活跃连接处于等待状态。因此,在实现该模式时,最好先做一个原型来观察系统的反应。
1.3 模式亮点
持久通信模式的目的是为客户端和服务器提供一种相互通信的机制,使服务器能够在客户端不主动请求的情况下向其发送数据。该模式主要涉及以下三个关键场景:
- 状态更新
- 存在检测
- 服务
超级会员免费看
订阅专栏 解锁全文
5万+

被折叠的 条评论
为什么被折叠?



