热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

基于SyncML的funamboldm开源项目的改造应用(三)实际项目介绍

随着移动设备终端用户数逐渐增多,基于云服务的应用也越来越多,微信,通讯录同步等.云计算SAAS模式在未来会有广阔的发展空间,最近做了个OTA项目,包含三个子项目,客户端升级程序,服

   随着移动设备终端用户数逐渐增多,  基于云服务的应用也越来越多, 微信, 通讯录同步等.  云计算SAAS模式在未来会有广阔的发展空间, 最近做了个OTA项目, 包含三个子项目, 客户端升级程序, 服务端同步平台和升级包管理平台. 下面结合实际, 讲下OTA服务端同步平台的实现.

1. 先说下业务背景需求, OTA可以自动或手动升级, 需要支持FU(系统固件)和AU(应用程序)的升级.并且可以进行后期的数据统计, 如激活的终端设备数量, 哪些成功升级, 每个升级包的执行情况等等.  我们只讲和主题相关的业务, 先明确升级包的匹配策略, 每个机型会有不同的升级包, 硬件版本, 内核版本, 系统版本, IMEI等都是作为升级的判断依据, 以及如何找寻最新的升级包,  版本号的比较规则, 是否逐次升级, 等等很多因素, 都需要确立, 这样, 明确好整体方向之后, 就能少走些弯路.

2.进入开发, 对SYNCML协议的了解不一定要求很深入, 但必须得有个全面了解, 接触任何新技术都一样, 先要知道哪些该用, 哪些不该用, 明确方向, 开发起来就会比较顺手, 不要一头扎进细节中, 如果天黑摸路, 是存在很大风险.

3. 照搬引进一个框架是存在一定风险, 最好做到最小改动, 最大掌控, 所以funmbol, 只引用了其中的一部分代码, 集中在指令转换, 协议流程处理, 这些是规范, 可以直接照搬, 主要修改的是数据层和业务层的改造, 数据层ORM使用的是IBATIS,  除了协议要用到的, 大部分表都修改了.业务层并不复杂, 不像其他的项目, 分为很多功能, 这里主要是处理升级包的匹配, 执行统计和日志记录. 日志记录可以协助数据统计, 但funmbol没有提供详尽的日志功能, 日志的修改, 要切入很多地方, 会占据很多的开发时间.

 

一、接下来看看改造后的交互流程图, 项目中还有很多细节的处理, 如加密, 邮件通知,异常处理等,  这里列出的是主要的交互流程, 请看图1:

 图1

  从宏观角度来看, 主要分为四个流程: 初始化, 协议处理, 业务处理以及会话结束. 重点是在协议和业务处理中, 这里要用到缓存机制, 每次新的请求会建立一个缓存, 下次请求就能快速响应, 建立缓存的另外一个作用, 是用来标识交互所处的步骤, 是第几步, 第几次请求, 该返回怎样的数据给你, 因为移动终端是不稳定的, 可能网络中端, 系统崩溃, 死机, 异常等, 这些都需要有个很好的容错机制, 而把状态缓存, 就能很好的实现.

  一次升级交互, 大致分为四次请求: 检查更新, 获取升级包,  响应执行结果, 握手结束. 如果第一次请求, 检查发现, 没有可用的更新, 则服务端会发送418指令给客户端, 同时结束会话. 发现可用的更新后, 服务端会把升级包的描述信息和下载地址发送给客户端, 客户端接收后, 再根据地址下载升级包, 下载成功后, 客户端会再次发送请求, 通知服务端下载成功,

服务端接收请求后,  返回Update执行指令给客户端,  客户端接收指令后, 再执行升级, 而不是下载完升级包后直接执行, 这样我们就能很清楚的掌握客户端的升级情况. 客户端正确升级后, 再发送200成功指令给服务端, 服务端再响应给客户端, 这样一次完整的交互就结束了.

 

二、知道整个处理流程, 再看看是通过那些类实现的, 彼此是怎样的一个关系, 我把主要的一些类给画了出来, 请看图2:

图2

  入口是一个servlet, 通过DMService调用SyncAdapter, 并建立缓存, 通过SESSIONHANDLER去处理每次交互的不同请求, DMSyncHandler是处理升级包信息的业务接口, 可以匹配获取FU/AU升级包, 这里是把所有的升级包信息缓存至内存, 根据实际业务, 可用的升级包数量不会很多, 而请求的客户端数量却会有很大的并发量, 如果每次都去查询数据库, 会有很大的压力, 影响效率, 所以, 做了相应的优化. 日志记录主要是记录交互步骤, 交互类型, 处理状态, 还有升级包的信息, 主要是为了做数据统计, 详尽的日志信息, 能够帮助你快速定位错误, 解决问题, 尽量考虑周全些, 把有价值的信息记录下来.

 

三、再看下数据库的设计, 和funambol自带的数据库有很大的改动,  这里主要是以实际业务需求进行设计的,  看下主要的结构, 如图3所示:

 

图3

  一个用户可以关联多个设备, 以用户和设备关联作为唯一标识,  展开业务关联,  升级包分为固件升级包和应用升级包,  固件升级包可单独作为一个实体, 应用升级包由两张表构成, 包含一对多的关系. 日志信息记录包含三张表, 分别记录设备的交互状态, 同步的升级包信息和交互错误信息, 可以满足数据统计和日常维护. 有些统计报表会比较复杂, 如设备的升级执行情况, 升级了哪些包, 还有哪些包没有升级,  升级包的完成率是多少, 还有哪些设备需要升级.   这些需要视图去解决, 设计的时候, 可以着重考虑下报表所需要的信息, 增加或改造表结构.

 

 所有内容就介绍到这里,  有些东西并不复杂, 只要自己肯花功夫去研究,  接触理解之后, 就会觉得这一切都很简单.

 基于SyncML的funambol dm开源项目的改造应用系列就已经讲完了,  如果转载, 请注明出处, 本文在CSDN首发, 谢谢!

 如果需要详细资料可以申请加入开发者联盟群19310171


推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文介绍了在Oracle数据库中创建序列时如何选择cache或nocache参数。cache参数可以提高序列的存取速度,但可能会导致序列丢失;nocache参数可以避免序列丢失,但在高并发访问时可能导致性能问题。文章详细解释了两者的区别和使用场景。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 本文介绍了sqlserver云存储和本地存储的区别,云存储是将数据存储在网络上,方便查看和调用;本地存储是将数据存储在电脑磁盘上,只能在存储的电脑上查看。同时提供了几种启动sqlserver的方法。此外,还介绍了如何导出数据库的步骤和工具。 ... [详细]
  • 本文介绍了自动化测试专家Elfriede Dustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 先看一段错误日志:###Errorqueryingdatabase.Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransie ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
author-avatar
菁菁da小姐认_194
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有