0.3版加入了DataManager,基于策略的数据管理模块;是SmartJS中比较重要的一个系列。整个个DataManager模块包括有:dataManager,dataPolicyManager,dataServices三个管理对象;

  1.dataManager(以下简称dm)

  数据管理的核心引擎;定义了一系列的接口和方法,不能直接使用,必须创建出具体类型的数据管理才能使用。引擎主要提供了存、取两个动作和内外两个通道;内置了基础的策略;过滤条件解析器;

  可以定义针对不同类型的数据管理,如:object,table,tree;通过定制策略可以简单的实现各种数据交互;比如:数据懒加载,定时更新,数据同步等等;

  2.dataServices(以下简称ds)

  数据服务管理;定义了数据服务的接口和通用操作方法;不能直接使用,必须创建具体类型的数据服务;

  数据服务的定义就比较广了,可以是具体的对象方式locaStorage,IndexDB,或者是一些行为ajax,comet,websocket;也可以是根据业务规则定义的rest,cache等;

  3.dataPolicyManager

  数据策略管理;为dataManager服务,提供注册策略点以及应用到dataManager的方法;这个需要对dm实现和流程比较了解才能注册策略点,不用太多关注。


  感觉这样介绍也很难理解,下面我们先来看一张DataManager的数据交互图:

  

  

  分析一下该图,首先Active去向dm请求数据,dm判断是否需要向ds请求(判断基于设定的策略)。如果不请求,则直接返回dm内部响应的结果。

  如果需要向DataServices请求,则发送请求,然后ds将响应的数据响应给dm,在由dm返回结果。

  在来看一下DataManager具体的执行图:

  

  呵呵,初看应该是有点晕的,画的不够清晰。

  图中以获取数据的动作,详细描述了执行主流程(还有一些策略影响的流程没体现),用数字标示了执行流程顺序:

  1. 获取动作进入第一个策略点check get way,判断从什么地方获取数据,默认的auto,先从dm取,取不到在从ds取;ds则是只从ds取;dm则是只在dm内部取;

  2. 通过第一个策略点后会从dm根据过滤条件取到数据

  3. 当第一个策略点的结果为ds时,则直接进入3,同时不会进入2,4,5,6四个流程;直接进入7 get数据服务管理

  4. 在2中取到数据以后,进入判断数据是否为空的策略点;不为空则进入流程5;为空的话,进入流程6

  5. 返回结果,结束流程

  6. 如果为空数据时,则进入进入7 get数据服务管理

  7. 由3,6进入到此阶段,首先会根据配置的获取ds信息,这里是配置了ds1和ds2; 先向ds1请求数据

  8. 返回ds1的查询结果,进入结果判断;为空的时候,进入9,否则进入12;这里demo中设定为空所以进入9

  9. 回到get数据服务管理,读取ds2的配置信息,进入10

  10. 向ds2请求数据

  11. 返回ds2的的结果

  12. 进入是否需要更新的策略点判断,不需要更新进入13;需要更新进入14

  13. 返回结果,结束流程

  14. 将返回的数据更新到dm内部;

  15. 进入判断是否更新到ds的策略点,不更新则进入16;更新进入17

  16. 返回结果,结束流程

  17. 判断是否是等待ds同步,如果等待,进入19(等待表示需要到ds更新数据之后才返回结果)。不等待先返回结果18.

  18. 返回结果,但并不结束流程。进入19.

  19. 进入set数据服务管理器。这里也定义两个ds1和ds2。分别会异步的发出20 ds1和21 ds2的更新请求。

  22. 当所有ds更新完成后,返回结果,结束流程。

  大体流程就介绍到这。下一篇会结合场景和代码来说明DataManager.

  

smartjs 0.3 DataManager 发布&介绍的更多相关文章

  1. smartjs 0.2发布 - 新增oop模块&AOP增强

    SmartJS2.0发布,更新内容如下: 新增oop(klass,factory)模块: promiseEvent加入非阻塞模式noBlock: trigger加入属性监听; smartjs主模块优化 ...

  2. Rookey.Frame v1.0 视频教程之三发布-框架核心思想介绍

    本期发布视频: (三)Rookey.Frame v1.0框架核心思想 介绍了Rookey.Frame v1.0框架搭建的核心思想,将框架核心思想理解清楚,对框架运行就会得心应手 官方视频教程: htt ...

  3. Python 3.8.0 正式版发布,新特性初体验 全面介绍

    Python 3.8.0 正式版发布,新特性初体验 北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性. 赋值表达式 PE ...

  4. TypeScript 0.9.1 发布,新增 typeof 关键字

    TypeScript 0.9.1 发布了,该版本提升了编译器和语言的性能,增加新的语言特性 typeof ,更好的 this 处理等.详细介绍请看发行说明. TypeScript 是微软新推出的一种语 ...

  5. 小蔡计算器 V4.0新版全新发布上线啦~欢迎大家下载使用哈~

    小蔡计算器4.0新版全新发布上线啦~欢迎大家下载使用哦~ 立即下载:http://www.zhentiyuan.com/windows/index.aspx 软件介绍:小蔡计算器4.0是一款界面优美的 ...

  6. [转]Ubuntu Tweak 0.8.7 发布:支持 Ubuntu 14.04

    原文网址:http://www.oschina.net/news/51054/ubuntu-tweak-0-8-7 这是我开发 Ubuntu Tweak 七年以来第一次没在 Ubuntu 正式发布之前 ...

  7. jQuery 3.0最终版发布,十大新特性眼前一亮

    jQuery 3.0在日前发布了最终的全新版本.从2014年10月,jQuery团队对这个主要大版本进行维护开始,web开发者社区便一直在期待着这一刻的到来,终于在2016年6月他们迎来了这一个最终板 ...

  8. Bokeh 0.9.0dev 发布,交互式可视化库

    快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中.   <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...

  9. RapidJSON 1.0 正式版发布,C++的JSON开发包

    分享 <关于我> 分享  [中文纪录片]互联网时代                 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...

随机推荐

  1. Eclipse连接到My sql数据库之前操作

    Eclipse连接到My sql数据库之前操作 1:首先是安装My sql数据库(为了减少你的麻烦,按照下面的连接,下载即可)百度云链接:http://pan.baidu.com/s/1mitWmbm ...

  2. This in JavaScript

    声明 本文仅为读书笔记并致力于理解Js中的this关键字.如有雷同,纯属巧合.原因有二,其一:有幸看了同一本书,其二:this这玩意已被说烂了~ 为什么要用this? this提供了优雅的方式隐式传递 ...

  3. 删除配置文件解决OS X各种WiFi无法连接的顽固问题,解决MAC无法连接wif的情况 Preferences

    删除配置文件解决OS X各种WiFi无法连接的顽固问题 删除配置文件解决OS X各种WiFi无法连接的顽固问题1 记住现在wifi的密码并将wifi关闭2 前往文件夹/Library/Preferen ...

  4. C#通过SQL 添加,删除,或者修改表名。

    这是我在 https://forums.asp.net/t/2106051.aspx?Create+Dynamic+table+in+SQL+using+C+ 的回复,如果其他人需要,可以参考 如果你 ...

  5. mysqld.exe 占了400M内存的问题

    最近遇到了服务器总是停机的问题,虽然它自己只有2G的内存,不过实际部署的应用访问量非常小,也不至于2G就不够用,所以开始了给服务器瘦身的计划. 看着任务管理器里面的各个进程,发现吃内存最厉害的是mys ...

  6. 10个有关RESTful API良好设计的最佳实践

    Web API已经在最近几年变成重要的话题,一个干净的API设计对于后端系统是非常重要的. 通常我们为Web API使用RESTful设计,REST概念分离了API结构和逻辑资源,通过Http方法GE ...

  7. TNSNAMES.ORA 配置

    上面的sqlnet.ora文件说明:SQLNET.AUTHENTICATION_SERVICES= (NTS)——这个表示采用os认证,在数据库服务器上,可以利用sqlplus “/ as sysdb ...

  8. highcharts插件使用总结和开发中遇到的问题及解决办法

    这里使用的highchart是2014-01-09从官网下载的版本,版本号是3.0.8, 当过了几天后,发现版本号变成了3.0.9,不由得的感叹highchart的版本更新之快. 在jsp中使用hig ...

  9. Win10下E3-1231 V3开启Intel虚拟化技术(vt-x)安装HAXM

    硬件配置: 技嘉G1 Sniper B6主板,Intel Xeon E3-1231 V3 CPU.主板和U都支持Intel的虚拟化技术,也在主板的设置界面打开了虚拟化支持,如下图: 使用CPU-V检测 ...

  10. 从Tmux 转到GNU Screen

    网上很多地方都说Tmux比GNU Screen要好用,不过无意间看到这篇Switching from tmux to GNU Screen之后,我发现GNU Screen的窗口/区域概念更好,至少是更 ...