一种代码序列化的方法

文档序号:6593775阅读:250来源:国知局
专利名称:一种代码序列化的方法
技术领域
本发明涉及计算机程序技术领域,提供了一种代码序列化的方法。
背景技术
目前各种产品中越来越多的应用微处理芯片,用软件去控制产品的行为,提高产品的可靠性和扩展功能.这类产品的特点是,软件以固件的方式体现,一旦安装上去,不通过厂家和和专业维修站就基本上不可能对软件进行升级.为了解决已发现的问题,譬如汽车行业,通过召回大量同型号产品来解决.费时费力.也让潜在的问题解决得不到及时处理.譬如有些汽车的刹车问题,就是软件控制算法或者逻辑的问题.修复软件,必然会导致重新固化软件.其他的桌面软件系统也存在着类似的问题,譬如一个控制生产流程的软件,由于用户流程的改变,导致软件的变化.任何软件的变化更新,都需要重新发布,假如是自开发软件,需要更新每一台计算机软件而不影响目前的生产.难度和成本都比较大.假如是购买的商用软件,那么很难及时得到更新以后的软件.上面提到的那些问题,其实都是软件生命周期里,由于软件需求的变化,导致代码的变化,从而导致软件的重新发布和安装。这里使用一个简单的例子来介绍本方法的原理.以汽车的充电部件为例,下面是一个完全简化了的软件模型:
充电部件对象(Charger)
{
属性:
当前蓄电池电压(V)
电压最小值(Min)
电压最大值(Max)
检测电压时间间隔(Interval)
方法:
检测当前电压(Detect)
充电(Charge)
{
如果当前电压〈电压最小值就充电如果当前电压 > 电压最大值就停止充电
}
}
上述的对象就是有数据(Data)和代码(组成),数据用属性来体现,譬如当前电压,代码就是用应用逻辑的方法来体现,譬如充电方法.代码部 分在软件发布以后和下一个版本发布之前是不会改变的,数据是可以存储,改变,传递到汽车的其他系统.除了修正已有的系统导致软件变化,还有其他因素也导致软件的升级变化,例如:系统需要增加新的功能,修改增强已有功能,删除不需要的功能,上述行为也会导致数据结构的变化,以关系数据库为例,导致增减数据表的列,列的类型和宽度的变化。

发明内容
本发明旨在于提供一种通过序列化将代码数据化,且数据化以后的代码本质上还是数据,只要是数据就很方便的修改,修改程序通过修改序列化以后的数据流的即可,这样方便后期程序的修改的代码序列化的方法。本发明为了实现上述目的采用以下技术方案:
一种代码序列化的方法,其特征在于包括以下步骤:
步骤1、将代码付值给一个字符串code,实现代码序列化;把序列化以后的代码,编译成虚拟机能识别的机器码,得到字符串P-Code ;
步骤2、将字符串P-Code和宿主软件结合在一起。上述方案中,所述字符串code存储在数据库里,然后从数据库里读出,以字符串形式链接(插入)到原来序列化的位置。上述方案中,采用script.Execute (code, this)进行反序列化动作,将序列化以后的数据字符串code和当前的宿主软件运行时环境this传给script.Execute (code,this),执行数据化后的代码。上述方案中,宿主软件结合在一起可采用以下2种方法:
第一种:把P-Code,转换为宿主软件的机器码,譬如Java语言,那么就转换为bytecode ;
第二种:动态嵌入运行。代码序列化到字符串流是常见的一种序列化方法,还可以序列化到二进制数据,XML等,为了便于简化问题,和说明问题,系列化以后的数据格式直接以代码源程序的格式,这个就是文中例子展示的字符串code,因为使用源程序格式,使用序列化就是一个简单的工作,在文章中基本上没有提.技术关键就是如何把序列化以后的字符串流反序列化,让它以真正的代码一样去运行.1、定义一个字符串code(这个其实就是序列化以后的数据),通常这个字符串是存储在数据库里,然后从数据库里读出,以字符串形式链接(插入)到原来序列化的位置;
2、采用script.Execute (code, this)进行反序列化动作,将code (序列化以后的数据)和this(当前的宿主软件运行时环境)传给script.Execute (code, this),执行数据化后的代码。采用以上技术方案的优点就是通过序列化将代码数据化,且数据化以后的代码本质上还是数据,只要是数据就很方便的修改,修改程序通过修改序列化以后的数据流的即可,这样方便后期程序的修改。本发明具有以下有益效果:
本方法让已经存在的代码有了一个序列化的简单方法,从而提高软件的柔性。通过对代码序列化以后的数据的修改,来增加新减功能,从而让代码序列化后数据的消费者,在不重新安装/固化软件的情况下,有了更新功能.可以大量的节约资金和时间.有广阔的市场前景。
具体实施方式
一个计算机系统,通常有数十个甚至上百个微处理器(或者计算机)组成,这些计算机协同参与完成工作。计算机之间传递的基本上都是数据(消息,命令,数据)。计算机收到数据以后,执行相应的预定的动作,但是无法产生一个新的动作(预定动作之外的动作)。系统合作完成一个任务根据一定的流程(workflow)。流程是预设的。在计算机领域里,就是把对象(object)序列化(Serialization)传递到另外的计算机还原为对象(Deserialization),执行预定的动作(operation)。序列化以后的得到的数据除了传递,还可以存储。对象的序列化本质上就是对软件对象属性的序列化。常见序列化数据的格式有2类,一类是私有的二进制格式数据,还有一类是使用XML格式,或者是XML的变种,广泛使用的有JS0N,譬如Web Service中使用的SOAP格式。以充电对象为例,下面是XML的数据格式:
权利要求
1.一种代码序列化方法,其特征在于包括以下步骤:步骤1、将代码付值给一个字符串code,实现代码序列化;把序列化以后的代码,编译成虚拟机能识别的机器码,得到字符串P-Code ; 步骤2、将字符串P-Code和宿主软件结合在一起。
2.根据权利要求1所述的一种代码序列化方法,其特征在于:所述字符串code存储在数据库里,然后从数据库里读出,以字符串形式链接(插入)到原来序列化的位置。
3.根据权利要求1所述的一种代码序列化方法,其特征在于:采用script.Execute (code, this)进行反序列化动作,将序列化以后的数据字符串code和当前的宿主软件运行时环境this传给script.Execute (code, this),执行数据化后的代码。
4.根据权利要求1所述的一种代码序列化方法,其特征在于:宿主软件结合在一起可采用以下2种方法: 第一种:把P-Code,转换为宿主软件的机器码,譬如Java语言,那么就转换为bytecode ; 第二种:动态嵌 入运行。
全文摘要
本发明是一种代码序列化的方法,属于软件开发领域,计算机软件有代码和数据组成,软件的功能也由代码和数据来体现。其包括步骤1、将代码付值给一个字符串code,实现代码序列化;把序列化以后的代码,编译成虚拟机能识别的机器码,得到字符串P-Code;步骤2、将字符串P-Code和宿主软件结合在一起。代码包含应用逻辑,数据在软件运行是可以存储也可以传输,而代码在运行过程中相对稳定,不可改变。软件的功能的增加和变化通常只能由数据来实现。本发明把代码序列化为数据以后,作为数据可以传输和改变,然后还原成代码,来增加软件的柔性;此方法适合于商业软件的开发。
文档编号G06F9/44GK103176803SQ201310134648
公开日2013年6月26日 申请日期2013年4月18日 优先权日2013年4月18日
发明者江辅华, 曾志良 申请人:成都一云数据处理有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1