转自:http://leign.iteye.com/blog/613508
最近做一个消息系统,其中涉及到新消息数的即时更新,当时就想到了观察者模式,后来听同事提到推拉模式,感觉推模式原理上应该还是属于观察者模式,只不过把server变成了被观察对象,client被动观察。。。
其实推拉模式我们经常遇到,如广播(推)、HTTP请求(拉),只是没有刻意去追求概念。设计时还是应该多考虑到。
考虑到性能还效率,最终还是选择了拉模式,每隔一断时间请求一次、更新。
下面是引用:
推(push)模式是一种基于客户器/服务器机制、由服务器主动将信息送到客户器的技术。在push模式应用中,服务器把信息送给客户器之前,并没有明显的客户请求。push事务由服务器发起。push模式可以让信息主动、快速地寻找用户/客户器,信息的主动性和实时性比较好。但精确性较差,可能推送的信息并不一定满足客户的需求。推送模式不能保证能把信息送到客户器,因为推模式采用了广播机制,如果客户器正好联网并且和服务器在同一个频道上,推送模式才是有效的。push模式无法跟踪状态,采用了开环控制模式,没有用户反馈信息。在实际应用中,由客户器向服务器发送一个申请,并把自己的地址(如IP、port)告知服务器,然后服务器就源源不断地把信息推送到指定地址。在多媒体信息广播中也采用了推模式。另外,如手机***、qq广播。
拉(pull)模式与推模式相反,是由客户器主动发起的事务。服务器把自己所拥有的信息放在指定地址(如IP、port),客户器向指定地址发送请求,把自己需要的资源“拉”回来。不仅可以准确获取自己需要的资源,还可以及时把客户端的状态反馈给服务器。
分享到:
相关推荐
观察者模式的推拉策略是不同的。推策略中,主题(Subject)主动将更新推送给所有观察者,适合于观察者需要实时获取更新的情况。而拉策略中,观察者自己从主题中拉取数据,适用于主题不确定观察者是否需要更新的情况...
#### 观察者模式的推拉差异及其适用场景 - **推模式**:具体主题将变化后的数据直接推送给观察者。 - **优点**:高效、实时性强。 - **缺点**:精确性较差,无法确保所有观察者都能收到消息。 - **适用场景**:...
它能够在高并发环境下保持高效,同时提供了多种消息模式(如请求/响应、推拉模式等),以适应不同类型的通信需求。此外,ZMQ支持多种编程语言,包括C、C++、Python、Java等,使得它能够广泛应用于各种项目中。 总的...
观察者模式中推拉模式两种实现方式,主要是针对开发的一个项目的模型抽象出来的。有一个项目,有压力传感器、位移传感器、震动传感器等多种传感器每种类型有若干个传感器,对每个传感器做特定操作会引发历史曲线图、...
第1章 介绍1.1 对模式的十大误解1.2 观察第2章 运用模式进行设计2.1 基础2.2 孤儿、孤儿的收养以及代用品2.3 “但是应该如何引入代用品呢?”2.4 访问权限2.5 关于VISITOR的一些警告2.6 单用户文件系统的保护2.7 多...
- 标注系统:方便添加尺寸和文字,标注始终保持面向观察者。 3. **SketchUp界面**:SketchUp界面包括实体工具、视图工具、常用工具、坐标轴和命令栏。视图操作包括视图选择、显示模式、视窗旋转、平移和缩放。用户...
它模拟了传统的套接字接口,但提供了更高级别的抽象,如发布/订阅、请求/响应和推拉模式。 在你提供的"zeroMQ实例"中,我们可以看到一个名为"startUp.bat"的批处理文件,这通常用于启动ZeroMQ相关的服务或应用程序...
而CCPM( Collective Pitch Mixing)模式则更加复杂,每个动作都是由三个舵机协同完成,比如桨距变化时,三个舵机同步推拉十字盘。这种模式虽然降低了对单个舵机力矩的要求,但对舵机的一致性要求更高,以确保飞行...
8. 显示模式多样:提供草图、线稿、透视和渲染等多种视图模式。 9. 阴影与日照分析:精确计算阴影和日照,便于进行光照分析。 10. 标注功能:简单易用的标注系统,始终保持面向设计者。 通过虚拟现实实习,学生...
### 相关知识点 #### 一、Blender简介与历史 **Blender**是一款功能全面且免费开源的3D创作套件,适用于Windows、Linux、MacOS等多种...无论您是初学者还是专业人士,都能找到合适的工作流程和工具集来完成您的项目。
7. **设计模式**: 项目中可能涉及到常见的设计模式,如单例模式、工厂模式、观察者模式等,它们是解决常见问题的模板。 8. **Git版本控制**: Git是用于跟踪代码更改的重要工具,推拉操作是日常开发中的基本操作。...
KVO是一种观察者模式的实现,允许对象订阅其他对象的属性变化,并在属性发生变化时自动得到通知。在这种情况下,通过KVO监听contentOffset,可以实时获取到用户在ScrollView上的滑动行为,进而驱动顶部视图做出相应...
这是为了让学习者通过实例区分平移与旋转。例如,电梯上下移动是平移,因为它沿直线方向整体移动;而风扇叶片的转动是旋转,因为它们围绕中心轴转动。这些例子有助于直观地理解两种运动的区别。 进一步深入,平移和...
具体来说,样品台的高度不应超过样品室内的限制,同时在安装过程中要确保所有的螺丝都位于样品台的下方,以避免与设备的其他部件发生碰撞。送样杆的推拉动作应该遵循设备的使用说明,沿轴线方向进行,避免不必要的...
这种模式鼓励了一种称为"推拉模型"的通信方式,其中数据是从上游推送到下游,而不是下游主动请求数据。 RxJava 3.x版本带来了许多改进和优化,包括性能提升、API简化以及更好的错误处理机制。相比于之前的版本,3.x...
美术教育方面,鼓励孩子们发挥想象力,不再局限于传统的教学模式,而是让他们自主观察、创作,教师则扮演引导者的角色。这样的教学方式使孩子们的绘画技巧和色彩运用得到了显著提升。在“六一”亲子作品画比赛中,...
4. **环境互动**:VR环境允许玩家与游戏世界进行更深度的互动,例如推拉物体、探索隐藏区域,甚至在特定场景下利用环境因素来对抗敌人。 5. **优化适配**:为了适应VR设备,游戏可能对光照、纹理和渲染效果进行了...
《SketchUp教程》是一份面向初学者和专业人士的指南,旨在教授如何使用SketchUp这一流行的3D建模软件。该教程详细介绍了软件的各个功能和工具,并通过实例操作指导用户完成从基本的绘图到复杂的建模过程。考虑到文档...