跨平台轻量级事务处理框架的实现方法

文档序号:6638390阅读:183来源:国知局
跨平台轻量级事务处理框架的实现方法
【专利摘要】本发明公开了一种跨平台轻量级事务处理框架的实现方法,本发明的方法在设计上加入了智能节电技术,用户可以配置一套节电参数,在满足条件时可自动在节电模式与性能模式间切换,从而可解决目前事务处理框架过于复杂、庞大,占用系统资源较多等问题。
【专利说明】跨平台轻量级事务处理框架的实现方法

【技术领域】
[0001]本发明涉及一种跨平台轻量级事务处理框架的实现方法,更具体地说,涉及一种可解决目前事务处理框架过于复杂、庞大,占用系统资源较多等问题的跨平台轻量级事务处理框架的实现方法。

【背景技术】
[0002]随着智能手机的普及,手机应用越来越丰富,功能越来越多,软件的复杂度也越来越高,而受手机平台硬件及系统限制,一些非常成熟的开发框架如ACE(AdaptiveCommunicat1n Environment,自适配通信环境)、Sprint、Structs等因受平台限制及系统资源占用量大难以在手机上运行,或移植的成本高昂。现有的主流事务处理框架开发基本使用 java 语言,如 spring、structs、hibernate 等,需要安装 JDK(Java DevelopmentKit,Java语言的软件开发工具包)等环境才能工作,占用系统资源非常多,通常占用几十兆以上内存,对硬件的要求比较高,大多用于后台系统开发,无法在移动手持设备上工作,因此开发一套可供手机平台使用的轻量级事务处理框架非常有必要。
[0003]现有技术主要存在以下两方面的缺点:一方面,目前成熟的事务处理框架主要应用在windows及Iinux平台,在服务器开发领域使用比较多,系统资源占用量比较大,且设计的重点在尽可能提高系统的处理性能,未考虑过节电方面的问题,对于移动终端等用电池供电的设备,需要在性能与节电方面寻找平衡,设计思路有很大的差别;另一方面,现有事务处理框架大多已有10年以上的时间,成熟稳定,但也非常庞大,代码量动辄几百万行,对使用人员的专业性要求就已经非常高,如果移植到手机平台等,时间及金钱成本都非常高,同时由于用到许多高级语言的新特性,手机平台不一定支持,存在很大的技术风险。
[0004]综上述,如何解决现有的事务处理框架过于复杂、庞大、占用系统资源较多,且局限应用于PC、服务器等平台的问题,成为亟待解决的问题。


【发明内容】

[0005]本发明所要解决的技术问题是提供一种简洁、轻量的跨平台轻量级事务处理框架的实现方法,其解决了现有技术中事务处理框架过于复杂、庞大、占用系统资源较多的问题,从而可以满足手机等嵌入式设备硬件的需求。
[0006]为了解决上述技术问题,本发明采用了以下技术方案:
[0007]一种跨平台轻量级事务处理框架的实现方法,该方法应用于移动手持设备的不同操作系统平台,如linux、windows、android、mtk及展讯等多个手机开发平台,该方法的实现过程包括以下步骤:
[0008]步骤S101,设置系统抽象层,将事务处理过程中的元素抽象成多个对象,并对每个对象设制不同的分工,来完成整个事务的处理;
[0009]步骤S102,在系统中创建Socket套接口,对每个Socket套接口设置一段缓存区,所述缓存区大小用户可配置;在Socket的发送接口设置发送模式标识;所述发送模式分为性能模式和节电模式;
[0010]步骤S103,在系统中增加系统发送开关,所述系统发送开关为打开状态时发送缓存区数据,所述系统发送开关为关闭状态时不发送数据;
[0011]步骤S104,创建单独的发送线程,该线程监听系统发送开关;
[0012]步骤S105,增加数据发送触发器,当有数据发送时创建,当超时时打开系统发送开关;
[0013]步骤S106,Socket发送模式标识为性能模式,将发送的数据缓存到套接口缓存区,打开系统发送开关;发送线程监听系统发送开关打开事件,发送Socket缓存区数据,当Socket缓存数据发送完后,关闭数据发送开关,同时如果数据发送触发器为打开状态时,关闭数据发送触发器;
[0014]步骤S107,Socket发送模式设置为节电模式,将发送数据缓存到Socket缓存区,检测所有Socket缓存数据总量是否达到发送阀值,如果达到发送阀值,则打开数据发送开关,执行步骤S106 ;如果未达到发送阀值,则检测数据发送触发器是否创建,如未创建,则执行步骤S105 ;
[0015]步骤SlOl所述对象包括,Module (模块)对象、MsgHandler (消息处理器)对象、SignalHandler (信号处理器)对象、Transact1n (事务)对象、Fsm(有限状态机)对象、State (状态)对象、EventHandler (事件处理器)对象,所述对象之间的关系及分工如下:
[0016]所述Module 对象包括 Moduleld、FSMList、MsgHandlerList、SignalHandlerList几个成员:
[0017]Moduleld,系统通过消息或信号目的ModuleId来匹配Module ;
[0018]FSMListi 一个 Module 可以有多个 FSM,Module 通过 Transact1n 中的 FsmId 来匹配FSM ;MsgHandlerList,一个Module可处理多种类型的Msg,Module通过MsgId匹配MsgHandler ;
[0019]SignalHandlerListi 一个 Module 可以处理多种类型的 Signal,Module 通过SignalId 匹配 SignalHandler ;
[0020]所述MsgHandler对象根据业务需要进行定义,同一个Module定义的MsgHandler,MsgId 不能相同,所述 MsgHandler 包含 MsgProcessor,MsgProcessor 为工作实体;
[0021]所述SignalHandler对象根据业务需要进行定义,同一个Module定义的SignalHandler、MsgId 不會^相同,SignalHandler 包含 SignalProcessori SignalProcessor为工作实体;
[0022]所述Transact1n 对象由 MsgHandler 或 SignalHandler 来创建或销毁,FSMId 为Transact1n 所在的 FSM ;
[0023]所述FSM对象根据业务需要进行定义,同一个Module定义的FSM、FSMId不能相同;FsmId、Module 通过 FsmId 来匹配 FSM ;FSM 包括 FsmId、StateList 和 Transact1nList:
[0024]StateList,一个 FSM 可以有多个 State,FSM 通过 Transact1n 的 StateId 来匹配State ;
[0025]Transact1nList,一个 FSM 可以有多个同时处理的 Transact1n ;
[0026]所述State对象根据FSM需要进行定义,与FSM —起创建,同一个FSM中StateId不能相同,State 包括 StateId 和 EventHandlerList:
[0027]StateId,为 FSM 的实始 State,同一个 FSM 不能存在 Transact1nId 相同的Transact1n ;
[0028]EventHandlerList,为 State 监听的 Event 的处理器;
[0029]所述EventHandler对象根据State需要进行定义,与State —起创建,同一个State 定义的 EventHandler、EventId 不能相同,EventHandler 包含 EventProcessor,EventProcessor为工作实体;
[0030]因传统的事务处理框架多为服务器开发设计,在设计时均追求最大性能,而对于移动终端等靠电池供电的设备,对省电有很高的要求,针对上述现有技术所存在的问题,本发明的方法在设计上加入了智能节电技术,用户可以配置一套节电参数,在满足条件时可自动在节电模式与性能模式间切换。事务处理通常出现在网络通讯,而网络通讯是移动终端的耗电大户,本发明主要针对网络通讯部分进行节电优化;本发明的节电原理:移动终端在进行网络通讯时会功耗非常大,且只要触发网络访问,需要在访问完成一段时间后才能进入省电模式,通过实测数据,终端在进行少量数据网络访问时,整个高功耗持续的时间是实际数据交互用时的3?5倍,因此降低网络访问频率成功节电的关键。主要应用场景:对于頂等网络通讯类应用,因NAT traversal (NET穿越)需要,需定期向服务器发送网络心跳包,时间间隔在15s?I分钟不等,而一个頂应用通常会有多个Socket端口需要发送网络心跳包,如果按顺序发送,则会显著增加网络访问频率,增加网络通讯时间,而如果系统针对此类访问做缓存处理,将其在一个周期内完成,则能显著降低网络通讯时间,降低电量损耗。
[0031]手机等移动手持设备平台主要进行一些客户端方面的应用开发,事务处理相对比较简单,同时业务需求会经常变更,在程序开发过程中往往讲宄短平快,对于事务处理平台的要求也更多专注于跨平台、轻量好维护、使用简单、资源占用少。本发明主要针对移动手持设备设计,采用本发明方法实现的事务处理框架具备以下优点:
[0032]1、跨平台:使用c/c++开发,支持linux、windows、android、mtk及展讯等多个手机开发平台;
[0033]2、系统抽象:对系统层面的基础功能如线程、定时器、网络通讯、文件处理、内存管理、消息队列、互锁量等常用的基本功能进行抽象,并在系统抽象层完成了多线程同步等处理,用户除了对框架外部接口部分需要考虑同步方面问题,整个内部开发完全不用为多线程开发中的问题烦恼;
[0034]3、轻量、简洁:整体代码量在2万行左右,且按照面向对象设计,支持业务模块化、低藕合;
[0035]4、可定制:用户可根据业务需要,对系统抽象层占用资源大小进行配置,如消息队列大小,定时器、网络套接口最大个数等进行配置,以便最大程度节省系统资源;
[0036]5、节能省电方面考虑,还可以通过修改网络套接口的响应速度来减少系统运行损耗;
[0037]6、接口简单:系统抽象层接口完成参照posix标准,用户一看就会使用,事务层接口全集中在几个简单的接口类中,用户只要从这些类继承即可;
[0038]7、资源占用少:整个框架在未加载业务的情况下启动占用内存仅在10k左右。
[0039]在结合附图阅读本发明的实施方式的详细描述后,本发明的特点和优点将变得更加清楚。

【专利附图】

【附图说明】
[0040]图1是本发明的方法流程图;
[0041]图2是本发明实施例的处理流程图。

【具体实施方式】
[0042]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具休实施例仅仅用以解释本发明,并不用于限定本发明。
[0043]参阅图1,一种跨平台轻量级事务处理框架的实现方法,在移动手持设备的不同操作系统平台中设置事务处理框架,包括以下步骤:
[0044]步骤S101,设置系统抽象层,将事务处理过程中的元素抽象成多个对象,并对每个对象设制不同的分工,来完成整个事务的处理;
[0045]步骤S102,在系统中创建Socket (套接字)套接口,对每个Socket套接口设置一段缓存区,所述缓存区大小用户可配置;在Socket的发送接口设置发送模式标识;所述发送模式分为性能模式和节电模式;
[0046]步骤S103,在系统中增加系统发送开关,所述系统发送开关为打开状态时发送缓存区数据,所述系统发送开关为关闭状态时不发送数据;
[0047]步骤S104,创建单独的发送线程,该线程监听系统发送开关;
[0048]步骤S105,增加数据发送触发器,当有数据发送时创建,当超时时打开系统发送开关;
[0049]步骤S106,Socket发送模式标识为性能模式,将发送的数据缓存到套接口缓存区,打开系统发送开关;发送线程监听系统发送开关打开事件,发送Socket缓存区数据,当Socket缓存数据发送完后,关闭数据发送开关,同时如果数据发送触发器为打开状态时,关闭数据发送触发器;
[0050]步骤S107,Socket发送模式设置为节电模式,将发送数据缓存到Socket缓存区,检测所有Socket缓存数据总量是否达到发送阀值,如果达到发送阀值,则打开数据发送开关,执行步骤S106 ;如果未达到发送阀值,则检测数据发送触发器是否创建,如未创建,则执行步骤S105。
[0051]步骤SlOl所述对象包括,Module (模块)对象、MsgHandler (消息处理器)对象、SignalHandler (信号处理器)对象、Transact1n (事务)对象、Fsm(有限状态机)对象、State (状态)对象、EventHandler (事件处理器)对象,所述对象之间的关系及分工如下:
[0052]所述Module 对象包括 Moduleld、FSMList、MsgHandlerList、SignalHandlerList几个成员:
[0053]Moduleld,系统通过消息或信号目的Moduleld来匹配Module ;
[0054]FSMList, 一个 Module 可以有多个 FSM,Module 通过 Transact1n 中的 FsmId 来匹配FSM ;MsgHandlerList,一个Module可处理多种类型的Msg,Module通过MsgId匹配MsgHandler ;
[0055]SignalHandlerList,一个 Module 可以处理多种类型的 Signal,Module 通过SignalId 匹配 SignalHandler ;
[0056]所述MsgHandler对象根据业务需要进行定义,同一个Module定义的MsgHandler,MsgId 不能相同,所述 MsgHandler 包含 MsgProcessor,MsgProcessor 为工作实体;
[0057]所述SignalHandler对象根据业务需要进行定义,同一个Module定义的SignalHandler、MsgId 不會^相同,SignalHandler 包含 SignalProcessori SignalProcessor为工作实体;
[0058]所述Transact1n 对象由 MsgHandler 或 SignalHandler 来创建或销毁,FSMId 为Transact1n 所在的 FSM ;
[0059]所述FSM对象根据业务需要进行定义,同一个Module定义的FSM、FSMId不能相同;FsmId、Module 通过 FsmId 来匹配 FSM ;FSM 包括 FsmId、StateList 和 Transact1nList:
[0060]StateList,一个 FSM 可以有多个 State,FSM 通过 Transact1n 的 StateId 来匹配State ;
[0061]Transact1nList,一个 FSM 可以有多个同时处理的 Transact1n ;
[0062]所述State对象根据FSM需要进行定义,与FSM —起创建,同一个FSM中StateId不能相同,State 包括 StateId 和 EventHandlerList:
[0063]StateIdi 为 FSM 的实始 State,同一个 FSM 不能存在 Transact1nId 相同的Transact1n ;
[0064]EventHandlerList,为 State 监听的 Event 的处理器;
[0065]所述EventHandler对象根据State需要进行定义,与State —起创建,同一个State 定义的 EventHandler、EventId 不能相同,EventHandler 包含 EventProcessor,EventProcessor为工作实体;
[0066]为了更好的说明各对象之间的工作方式,下面以注册流程进行举例:
[0067]步骤一:系统启动流程
[0068]初始化系统,创建内存池,启动系统内存线程池,创建套接口、定时器管理器等;
[0069]创建注册业务模块并将其与系统进行绑定
[0070]运行系统,系统将实时监控注册业务模块的消息;
[0071]代码如下:
[0072]SystemInitO ;//初始化系统
[0073]RegistModule registModule = new RegistModule () ;// 创建业务模块
[0074]SystemBindModule (registModule) ;// 绑定业务模块
[0075]SystemRunO ;// 系统启动
[0076]步骤二:注册业务模块创建
[0077]绑定注册状态机,绑定注册请求消息处理器、注册取消消息处理器,绑定注册响应信号处理器;系统运行时会实时监控注册请求消息与注册响应信号,并触发对应的消息处理器;
[0078]代码如下:
[0079]Fsm registfsm = new FsmO ;
[0080]BindFsm(registfsm);
[0081]MsgHandler reqMsgHandler = new RegistReqMsgHandler();
[0082]BindMsgHandler(reqMsgHandler);
[0083]MsgHandler cancelMsgHandler = new RegistCancelMsgHandler();
[0084]BindMsgHandler(cancelMsgHandler);
[0085]SignalHandler rspSignalHandler = new RegistRspSignalHandler();
[0086]BindSignalHandler(rspSignalHandler);
[0087]初始化注册状态机,对状态机中的每个状态创建状态管理器(如未注册状态管理器、注册中状态管理器、注册成功状态管理器、注册失败状态管理器等),状态机绑定所有创建的状态管理器;
[0088]代码如下:
[0089]State noRegistState = new NoRegistState() ;\
[0090]BindFsmState(noRegistState);
[0091]State registingState = new RegistingState();
[0092]BindFsmState(RegistingStateO ;
[0093]State registState = new RegistState ();
[0094]BindFsmState(registState);
[0095]State registFailState = new RegistFailState();
[0096]BindFsmState(registFailState);
[0097]初始化状态管理器,对状态管理器监管的事件(如注册请求事件、注册取消事件、注册成功事件、注册失败事件、注册超时事件、重传事件)创建事件处理器,状态管理器根据需要绑定相关的事件处理器:
[0098]1、未注册状态管理器绑定注册请求事件处理器
[0099]EventHandler registReqEventHandler = new RegistReqEventHandler();
[0100]BindEventHandler(registReqEventHandler);
[0101]2、注册中状态管理器绑定注册取消事件、注册成功事件、注册失败事件等;
[0102]EventHandler cancelEventHandler = new CancleEventHandler();
[0103]BindEventHandler(cancelEventHandler);
[0104]EventHandler successEventHandler = new SuccessEventHandler();
[0105]BindEventHandler(successEventHandler);
[0106]EventHandler faiIEventHandler = new FailEventHandler();
[0107]BindEventHandler(faiIEventHandler);
[0108]EventHandler timeoutEventHandler = new TimeoutEventHandlerO ;
[0109]BindEventHandler (timeoutEventHandler);
[0110]EventHandler retransEventHandler = new ReTransEventHandler();
[0111]步骤三:注册成功状态管理器与注册失败状态管理器不绑定任何事件。
[0112]如图2所示,具体工作流程包括以下步骤:
[0113]S1、用户向注册业务模块发起一条注册请求消息,系统层接收到消息后触发注册业务模块绑定的注册请求消息处理器;
[0114]S2、注册请求消息处理器创建一个注册事务,将事务状态设为未注册,并对该事务发起一个注册请求事件;
[0115]S3、注册事务还可以设置异常超时定时器,超时时间且未成功注册将触发超时响应;
[0116]S4、注册事务还可以设置重传定时器,超过时间将触发重传响应
[0117]S5、注册业务模块状态机接收到注册请求事件,触发未注册状态管理器中注册请求事件处理器;
[0118]S6、注册请求事件处理器封装注册请求发送给服务器进行注册,并将注册事务的状态变更为注册中;
[0119]S7、用户向注册业务模块发起一条注册取消消息,系统层接收到消息后触发注册业务模块绑定的注册取消消息处理器;
[0120]S8、注册取消消息处理器对用户响应注册取消,删除注册事务;
[0121]S9、重传定时器超时,对注册事务发起重传事件;
[0122]S10、系统层接收到注册响应,触发注册业务模块绑定的注册响应信号处理器;
[0123]S11、注册响应信号处理器根据响应结果对注册事务发起注册成功事件或注册失败事件;
[0124]S12、注册事务异常定时器超时,对注册事务发起注册超时事件;
[0125]S13、注册业务模块状态机接收到重传事件,触发注册中状态管理器中重传事件处理器;
[0126]S14、重传事件处理器封装注册请求发送给服务器;
[0127]S15、注册业务模块状态机接收到注册成功事件,触发注册中状态管理器中注册成功事件处理器;
[0128]S16、注册成功事件处理器对用户响应注册成功,关闭异常超时定时器,关闭重传定时器,并将注册事务状态变更为注册成功;
[0129]S17、注册业务模块状态机接收到注册失败事件,触发注册中状态管理器中注册失败事件处理器;
[0130]S18、注册失败事件处理器对用户响应注册失败,关闭异常超时定时器,关闭重传定时器,并将注册事务状态变更为注册失败;
[0131]S19、注册业务模块状态机接收到注册超时事件,触发注册中状态管理器中注册超时事件处理器;
[0132]S20、注册超时事件处理器对用户响应注册失败,关闭异常超时定时器,关闭重传定时器,并将注册事务状态变更为注册失败;
[0133]S21、注册事务处于注册成功状态,注册业务模块状态机接收到重复的注册响应事件,因注册成功状态处理器未绑定事件处理器,直接返回;
[0134]S22、注册事务处于注册失败状态,注册业务模块状态机接收到重复的注册响应事件,因注册失败状态处理器未绑定事件处理器,直接返回。
[0135]虽然结合附图描述了本发明的实施方式,但是本领域的技术人员可以在所附权利要求的范围之内作出各种变形或修改,只要不超过本发明的权利要求所描述的保护范围,都应当在本发明的保护范围之内。
【权利要求】
1.一种跨平台轻量级事务处理框架的实现方法,该方法应用于移动手持设备的不同操作系统平台,其特征在于: 包括以下步骤: 步骤S101,设置系统抽象层,将事务处理过程中的元素抽象成多个对象,并对每个对象设制不同的分工,来完成整个事务的处理; 步骤S102,在系统中创建Socket套接口,对每个Socket套接口设置一段缓存区,所述缓存区大小用户可配置;在Socket的发送接口设置发送模式标识;所述发送模式分为性能模式和节电模式; 步骤S103,在系统中增加系统发送开关,所述系统发送开关为打开状态时发送缓存区数据,所述系统发送开关为关闭状态时不发送数据; 步骤S104,创建单独的发送线程,该线程监听系统发送开关;步骤S105,增加数据发送触发器,当有数据发送时创建,当超时时打开系统发送开关;步骤S106,Socket发送模式标识为性能模式,将发送的数据缓存到套接口缓存区,打开系统发送开关;发送线程监听系统发送开关打开事件,发送Socket缓存区数据,当Socket缓存数据发送完后,关闭数据发送开关,同时如果数据发送触发器为打开状态时,关闭数据发送触发器; 步骤S107,Socket发送模式设置为节电模式,将发送数据缓存到Socket缓存区,检测所有Socket缓存数据总量是否达到发送阀值,如果达到发送阀值,则打开数据发送开关,执行步骤S106 ;如果未达到发送阀值,则检测数据发送触发器是否创建,如未创建,则执行步骤S105。
2.如权利要求1所述的一种跨平台轻量级事务处理框架的实现方法,其特征在于:步骤S1I所述对象包括,Mo du I e模块对象、MsgHandl er消息处理器对象、S i gna I Hand I er信号处理器对象、Transact1n事务对象、Fsm有限状态机对象、State状态对象、EventHandler事件处理器对象,所述对象之间的关系及分工如下: 所述 Module 对象包括 ModuleId、FSMList、MsgHandlerList、SignalHandlerList 几个成员: ModuleId,系统通过消息或信号目的ModuleId来匹配Module ; FSMList, 一 个 Module 可以有多个 FSM,Module 通过 Transact1n 中的 FsmId 来匹配FSM ;MsgHandlerList,一个Module可处理多种类型的Msg,Module通过MsgId匹配MsgHandler ; SignalHandlerList, 一个 Module 可以处理多种类型的 Signal,Module 通过 SignalId匹配 SignalHandler ; 所述MsgHandler对象根据业务需要进行定义,同一个Module定义的MsgHandler,MsgId 不能相同,所述 MsgHandler 包含 MsgProcessor,MsgProcessor 为工作实体; 所述SignalHandler对象根据业务需要进行定义,同一个Module定义的SignalHandler、MsgId 不會泛相同,SignalHandler 包含 SignalProcessor,SignalProcessor为工作实体; 所述 Transact1n 对象由 MsgHandler 或 SignalHandler 来创建或销毁,FSMId 为Transact1n 所在的 FSM ; 所述FSM对象根据业务需要进行定义,同一个Module定义的FSM、FSMId不能相同;Fsmld、Module 通过 FsmId 来匹配 FSM ;FSM 包括 Fsmld、StateList 和 Transact1nList:StateListi 一个 FSM 可以有多个 State,FSM 通过 Transact1n 的 StateId 来匹配State ; Transact1nList,一个FSM可以有多个同时处理的Transact1n ; 所述State对象根据FSM需要进行定义,与FSM —起创建,同一个FSM中StateId不能相同,State 包括 StateId 和 EventHandlerList: StateIdi为FSM的实始State,同一个FSM不能存在Transact1nId相同的Transact1n ; EventHandlerList,为 State 监听的 Event 的处理器; 所述EventHandler对象根据State需要进行定义,与State —起创建,同一个State 定义的 EventHandler、EventId 不能相同,EventHandler 包含 EventProcessor,EventProcessor为工作实体。
【文档编号】G06F9/44GK104484170SQ201410764249
【公开日】2015年4月1日 申请日期:2014年12月11日 优先权日:2014年12月11日
【发明者】陈岱晖 申请人:深圳市源通世纪科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1