MVVM实时呈现CS架构 使用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操作为例,下图表示各模块通信协作的时序 本文来源:https://www.wddqw.com/doc/5cc13a81d2f34693daef5ef7ba0d4a7302766c0b.html