`
rcfalcon
  • 浏览: 222325 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MVVM实时呈现C/S架构

 
阅读更多

使用WPF推崇的MVVM模式,是MVC模式的一种变体。

以数据绑定为核心的思想,可以使得在开发中,数据组织变得十分便利。


这里我向大家展示我在一个项目中基于MVVM的实时呈现C/S架构设计,可以实现任何一个客户端修改数据,即立即在所有客户端及数据持久层同步。



服务端:

服务端负责处理审编系统与数据库通信,同步各个客户端编目数据,并且进行后台的核心业务逻辑处理。

【通信层】:采用双工模式通信:

ReviewServiceAPI同步返回接口,每个客户端连接上之后都会新建一个实例,负责与该客户端进行交互。客户端成功登陆后会在服务端维护该session,并且在一定时间内没有数据交互则自动过期session,释放该客户端占用的资源。其主要提供数据项的增、删、改、查接口及业务接口(如登陆、退出等)

同时采用 订阅者-发布者的C/S通信模式,每个客户端连入时均在服务端构建其侦听器实例,由MessageCenter进行管理,在数据项有修订后,通过MessageCenter向订阅相关消息的客户端可靠的发布消息。同时MessageCenter也负责对过期的订阅进行回收。

【数据访问层】:封装对数据源的访问

数据源可以以各种形式存在,目前以DB+内存数据形式。

在DB层面主要进行关系数据库到对象实体的绑定(O/R Mapping),并提供各个数据实体类。

内存级别与相关管理器通信,如WatcherManager等。

【核心逻辑层】:封装核心业务逻辑

包括片段合并触发机制、合并算法,编辑项锁定等核心业务。

【工具】

包括日志管理器、任务池等。


客户端:

客户端是编辑、审核人员的操作入口,与服务端通信,完成编目、发布等操作,并且能够多实例同步数据。采用MVVM设计模式进行界面、数据的解耦。

【通信层】与服务端通信

Client对服务端接口进行适配,同时负责若干常用数据的缓存。

Listener是订阅的侦听器,侦听服务端发送的相关数据,进行数据的同步。

【数据实体层 Model】原始数据维护者

用来维护与服务端同步的数据,其数据实体的具体数据结构完全映射服务端DAL层维护的数据结构。

【界面显示数据绑定层 ViewModel】

使用Model构造界面绑定数据,并界面操作提供命令接口,进行Model层的同步。

【界面层 View】

负责数据展示和用户控制响应。对ViewModel层进行数据双向绑定,同步刷新。

异步任务:

客户端和服务端为了使得传输数据趋于平均化、非阻塞,均使用异步任务方式。具体实现为需要进行通信时将任务推入任务池,由后台线程负责任务池的处理。

以常见的update操作为例,下图表示各模块通信协作的时序



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics