一种实现进程间数据传递的方法及系统的制作方法

文档序号:6358284阅读:98来源:国知局
专利名称:一种实现进程间数据传递的方法及系统的制作方法
技术领域
本发明涉及SymbianC/S方式的数据交互技术,尤指一种基于SymbianC/S方式的实现进程间数据传递的方法及系统。
背景技术
SymbianC/S方式是Symbian应用程序之间的数据交互,访问系统服务的最基础方式,具体的应用或系统程序在应用该方式时,经常需要在客户端(Client)和服务器(Server)之间传递复杂的数据结构。在Symbian操作系统中,Client是指利用Server提供的特定服务的程序;Server则指接受来自Client的请求消息,并同步或异步的处理接收到的请求消息。由于Client和Server往往处于不同的进程之间,这就要求数据必须分配到连续 的内存之上,即序列化到内存中。这里,进程是一个正在执行的程序;或计算机中正在运行的程序实例;或可以分配给处理器并由处理器执行的一个实体;或由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。但是,复杂的数据结构在内存中的分配往往不是连续的,例如指针的应用等。这样,导致开发者在使用Symbian C/S方式时,需要花费大量的精力处理复杂数据结构内存序列化的问题。另外,复杂数据结构有时意味着占用内存的大小不是固定的,目前,常用的方法是预先分配一块较大的内存空间以满足所有的需求,这就使得原本较小的数据占用较大内存的情况,造成了基于Symbian设备如手持设备上内存空间的严重浪费。

发明内容
有鉴于此,本发明的主要目的在于提供一种实现进程间数据传递的方法及系统,能够合理分配内存,节约空间资源,而且减少开发周期及降低开发复杂度。为达到上述目的,本发明的技术方案是这样实现的—种实现进程间数据传递的方法,用户需要将数据从客户端发送到服务器时,包括将生成的对象数据结构转换为客户端内统一的数据结构,将数据序列化到内存区域中,并将其打包为Symbian系统的标准描述符后传送给服务器;服务器收到客户端请求数据后,获取请求的数据并确定请求的数据的数据大小,将得到的数据大小通知客户端;客户端根据通知分配存储空间,并再次向服务器请求数据并获取数据。该方法之前还包括所述客户端将数据按照JCE语法结构生成用于Symbian的对象数据结构。所述标准描述符中还包括用于在所述服务器端唯一标识所述请求的请求ID,以及所述数据的字典码。所述服务器确定请求的数据的数据大小包括
所述服务器先分析接收到的数据,将所有的请求以请求ID为索引进行存储;解析接收到的字典码,根据字典码调用相应服务接口,并将客户端的数据传入相应服务接口 ;相应服务接口根据字典码解析出数据,进行处理,并将数据返回给服务器;所述服务器从服务得到返回的数据后,根据请求ID对应存储,并计算出要返回的数据的数据大小。所述客户端从服务器获取数据包括所述服务器再次收到请求后,将与所述请求ID应的数据项打包后返回所述客户端,所述客户端将返回的数据存入分配的内存区域中。所述服务器将与所述请求ID应的数据项打包后返回所述客户端后,该方法还包括所述服务器删除自身存储的与所述请求ID对应的数据。该方法还包括所述客户端根据字典码解析存储在内存区域中的数据,并返回给用户。 一种实现进程间数据传递的系统,至少包括客户端和服务器;其中, 客户端,用于在用户需要将数据发送到服务器时,向服务器发送第一请求;接收到来自服务器的数据大小信息,分配存储空间,向服务器发送第二请求;将从服务器获得的数据存储在分配的存储空间;服务器,用于接收来自客户端的第一请求,获取请求的数据并确定请求的数据的数据大小,将得到的数据大小返回给客户端;接收来自客户端的第二请求,将客户端需要的数据返回给客户端。所述客户端,还用于将所述数据按照JCE语法结构生成用于Symbian的对象数据结构。所述服务器,还用于删除自身存储的返回给客户端的数据。从上述本发明提供的技术方案可以看出,包括将数据按照JCE语法结构生成用于Symbian的对象数据结构;用户需要将数据从Client发送到Server时,Server根据Client的请求,获取请求的数据并确定请求的数据的数据大小,将得到的数据大小通知Client ;而Client根据通知的数据大小分配存储空间,并再次向Server请求数据并获取数据。本发明方法基于SymbianC/S方式,提供了用于Client和Server的、可以将JCE生成的用户对象数据结构打包和解包的功能,方便了将JCE生成的对象数据结构序列化到连续平坦的内存区域中,并统一不同数据结构之间的接口,方便了用户调用,并支持了所有用户自定义结构,灵活适应了需求变更,加快了程序开发速度;Client根据实际接收的数据的大小,合理分配了内存,节约了空间资源。


图I为本发明实现进程间数据传递的方法的流程图;图2为本发明实现进程间数据传递的系统的组成结构示意图;图3为本发明实现进程间数据传递的方法的实施例的流程示意图。
具体实施例方式图I为本发明实现进程间数据传递的方法的流程图,如图I所示,包括步骤t00 :将数据按照JCE语法结构生成用于Symbian的对象数据结构。
JCE,是 ICE (Internet Communications Engine)开源中间件中编解码的子集,J在这里是精简的意思。JCE是一种类C++语言的标识,开发者根据JCE的标识进行定义,借助工具即可实现快速生成具体的对象及对象接口文件。本步骤中,用户将需要实现的数据结构,按照JCE的语法标识实现,通过工具生成实际的对象数据结构,具体生成的方法属于本领域技术人员的公知技术,这里强调的是按照JCE的语法标识来实现数据结构的定义。由于JCE采用类C++语法标识,解释器可以根据JCE语法格式生成用于Symbian的对象数据结构。因此,如果开发者需要修改数据结构,只需要通过修改JCE编码标识,按照JCE格式来重新生成对象及对象接口文件即可,这就避免了用户生成自定义数据结构的复杂过程,尤其地,在需求不一定时,避免了数据结构经常变化而导致的频繁重新定义数据结构的问题。也就是说,本步骤基于JCE编码技术实现对象定义,满足了用户语义在Client和Server之间传输。当用户需求发生变更时,可以通过修改JCE编码标识,来重新生成对象及对象接口文件,也减少了开发时间。步骤tOt :用户需要将数据从Client发送到Server时,将生成的对象数据结构 转换为客户端内统一的数据结构,将数据序列化到连续平坦的内存区域中,并将其打包为Symbian系统的标准描述符后传送给服务器。本步骤具体包括当用户需要将数据从Client发送到Server时,首先将生成的该需要发送的数据的对象数据结构统一为Client的内部数据结构,以适配用户的不同的数据结构在Client内部的传递;然后,为该数据分配内存,Symbian利用系统的应用程序编程接口(API)实现一个到内存的字节一级读写工具,利用JCE生成的对象接口,即可将该数据到连续平坦的内存区域中,具体实现属于本领域技术人员的惯用技术手段,这里不再赘述;接着,将该数据作为请求打包为Symbian系统的标准的描述符,同时,为了在Server端唯一标识该请求,生成唯一请求ID ;生成该次数据的字典码;将生成的字典码、请求ID,以及描述符一起传递给 Server。步骤102 =Server收到Client的请求数据后,获取请求的数据并确定请求的数据的数据大小,将得到的数据大小通知Client。本步骤具体包括Server收到Client的请求数据之后,先分析数据,将所有的请求以ID为索引,存储到一张表格中;解析其中的字典码,根据字典码调用相应服务接口,并将Client的数据传入相应服务接口 ;相应服务接口根据字典码解析出数据,进行处理,并将数据返回给Server ;Server从服务得到返回的数据后,先根据ID,将数据插入表中对应项,将从服务返回的数据大小信息通知给Client。步骤103 =Client根据通知分配存储空间,并再次向Server请求数据并获取数据。本步骤具体包括=Client根据获得的数据大小,分配相应大小的内存区域;再次向Server发起请求,并将上次请求ID以及分配的内存区域传递给Server。这样,根据实际接收的数据的大小,合理分配了内存,节约了空间资源。Server收到请求后,根据ID在表中查找对应的数据项,将数据打包,返回Client,同时将表中的对应项删除,Client将返回的数据存入分配的内存区域中,这就完成了一次完整的交互。最后,Client根据字典码解析存储在内存区域中的数据,并返回给用户。对于用户来说整个过程是透明的。在使用过程中,Client接口可以支持多次并发调用,并且是根据用户自定义数据大小分配内存的。本发明方法基于SymbianC/S方式,提供了用于Client和Server的、可以将JCE生成的用户对象数据结构打包和解包的功能,方便了将JCE生成的对象数据结构序列化到连续平坦的内存区域中,并统一不同数据结构之间的接口,方便了用户调用,并支持了所有用户自定义结构,灵活适应了需求变更,加快了程序开发速度;Client根据实际接收的数据的大小,合理分配了内存,节约了空间资源。由于Server通过ID索引表和字典码记录了不同请求的信息,所以这种方式提供了动态的、基于异步多次请求并发的机制。图2为本发明实现进程间数据传递的系统的组成结构示意图,如图2所示,至少包 括客户端和服务器,其中,客户端,用于在用户需要将数据从Client发送到Server时,向服务器发送第一请求;接收到来自服务器的数据大小信息,分配存储空间,向服务器发送第二请求;将从服务器获得的数据存储在分配的存储空间;服务器,用于接收来自客户端的第一请求,获取请求的数据并确定请求的数据的数据大小,将得到的数据大小返回给客户端;接收来自客户端的第二请求,将客户端需要的数据返回给客户端。所述客户端,还用于将所述数据按照JCE语法结构生成用于Symbian的对象数据结构。所述服务器,还用于删除自身存储的返回给客户端的数据。图3为本发明实现进程间数据传递的方法的实施例的流程示意图,如图3所示,包括以下步骤步骤300 :用户将需要实现的数据结构,按照JCE的语法标识实现,通过工具生成实际的对象数据结构。 JCE采用类C++语法标识,解释器可以根据JCE语法格式生成用于Symbian的对象数据结构,如果开发者需要修改数据机构,只需要按照JCE格式重新生成即可,这就免去了用户生成自定义数据结构的过程。尤其是在需求不一定时,避免了数据结构经常变化导致的频繁重新定义数据结构的问题。步骤301 步骤302 :当用户需要将数据从Client发送到Server时,需要调用客户端中的数据转换(RQQSession)模块,RQQSession模块有两个作用,一是实现抽象统一接口,可以适配用户不同的数据结构在客户端内部传递,二是建立对服务器的数据请求(CQQDataRequest),提供异步多次请求并发的机制,如图3所示,其过程包括RQQSession 模块将数据传入 CQQDataRequest 模块,CQQDataRequest 模块将数据序列化到连续平坦的内存区域中,然后打包为Symbian系统的标准描述符,为了在Server端唯一标识该请求,生成唯一请求ID。同时,生成该次数据的字典码,字典码和ID以及描述符一起传递给Server。步骤303 步骤305 :Server收到Client的请求后,分析数据,将所有的请求以ID为索引记录到一张表格中,解析字典码,根据字典码调用相应服务接口,并将Client的数据传入相应具体服务。相应具体服务接口根据字典码解析出数据,进行处理,并将数据返回给 Server.。步骤306 步骤309 =Server从具体服务得到要返回给Client的数据后,根据ID,将数据插入表中的对应项,计算出要返回的数据大小,然后将数据大小返回给Client的CQQDataRequest模块,CQQDataRequest模块自动根据数据大小,在Client分配相应大小的内存区域,这时,CQQDataRequest模块会再次请求Server,并将上次请求ID以及该内存区域传递给Server。步骤310 步骤311 =Server收到ID后,在表中查找对应的数据项,将数据项打包,发送给到Client 的CQQDataRequest模块准备好的内存区域中,同时,删除表中的对应项,并告知Client返回数据已经准备好,Client从所述内存区域中取回数据,这样便完成了一次完整的交互。由于Server通过ID索引表和字典码记录了不同请求的信息,因此,本发明方法提供了动态的、基于异步多次请求并发的机制。 步骤312 步骤313 =CQQDataRequest模块将拿到的数据根据字典码进行解析,将数据通过RQQSession模块返回给用户。对于用户来讲,整个数据交互过程是透明的。在使用过程中,Client可以支持多次并发调用,并且是根据用户自定义数据大小分配的内存,因此,达到了合理分配内存,节约空间资源的目的。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种实现进程间数据传递的方法,用户需要将数据从客户端发送到服务器时,其特征在于,包括 将生成的对象数据结构转换为客户端内统一的数据结构,将数据序列化到内存区域中,并将其打包为Symbian系统的标准描述符后传送给服务器; 服务器收到客户端请求数据后,获取请求的数据并确定请求的数据的数据大小,将得到的数据大小通知客户端; 客户端根据通知分配存储空间,并再次向服务器请求数据并获取数据。
2.根据权利要求I所述的方法,其特征在于,该方法之前还包括所述客户端将数据按照JCE语法结构生成用于Symbian的对象数据结构。
3.根据权利要求2所述的方法,其特征在于,所述标准描述符中还包括用于在所述服务器端唯一标识所述请求的请求ID,以及所述数据的字典码。
4.根据权利要求I或2所述的方法,其特征在于,所述服务器确定请求的数据的数据大小包括 所述服务器先分析接收到的数据,将所有的请求以请求ID为索引进行存储;解析接收到的字典码,根据字典码调用相应服务接口,并将客户端的数据传入相应服务接口 ;相应服务接口根据字典码解析出数据,进行处理,并将数据返回给服务器; 所述服务器从服务得到返回的数据后,根据请求ID对应存储,并计算出要返回的数据的数据大小。
5.根据权利要求4所述的方法,其特征在于,所述客户端从服务器获取数据包括所述服务器再次收到请求后,将与所述请求ID应的数据项打包后返回所述客户端,所述客户端将返回的数据存入分配的内存区域中。
6.根据权利要求5所述的方法,其特征在于,所述服务器将与所述请求ID应的数据项打包后返回所述客户端后,该方法还包括所述服务器删除自身存储的与所述请求ID对应的数据。
7.根据权利要求5所述的方法,其特征在于,该方法还包括所述客户端根据字典码解析存储在内存区域中的数据,并返回给用户。
8.一种实现进程间数据传递的系统,其特征在于,至少包括客户端和服务器;其中, 客户端,用于在用户需要将数据发送到服务器时,向服务器发送第一请求;接收到来自服务器的数据大小信息,分配存储空间,向服务器发送第二请求;将从服务器获得的数据存储在分配的存储空间; 服务器,用于接收来自客户端的第一请求,获取请求的数据并确定请求的数据的数据大小,将得到的数据大小返回给客户端;接收来自客户端的第二请求,将客户端需要的数据返回给客户端。
9.根据权利要求8所述的系统,其特征在于,所述客户端,还用于将所述数据按照JCE语法结构生成用于Symbian的对象数据结构。
10.根据权利要求9所述的系统,其特征在于,所述服务器,还用于删除自身存储的返回给客户端的数据。
全文摘要
本发明公开了一种实现进程间数据传递的方法及系统,包括将数据按照JCE语法结构生成用于Symbian的对象数据结构;用户需要将数据从Client发送到Server时,Server根据Client的请求,获取请求的数据并确定请求的数据的数据大小,将得到的数据大小通知Client;而Client根据通知的数据大小分配存储空间,并再次向Server请求数据并获取数据。本发明方法基于SymbianC/S方式,提供了用于Client和Server的、可以将JCE生成的用户对象数据结构打包和解包的功能,方便了将JCE生成的对象数据结构序列化到连续平坦的内存区域中,并统一不同数据结构之间的接口,方便了用户调用,并支持了所有用户自定义结构,灵活适应了需求变更,加快了程序开发速度;Client根据实际接收的数据的大小,合理分配了内存,节约了空间资源。
文档编号G06F9/54GK102750186SQ201110097858
公开日2012年10月24日 申请日期2011年4月19日 优先权日2011年4月19日
发明者任桥 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1