专利名称:构件化软件系统中自动为构件分配通用唯一标识符的方法
技术领域:
本发明涉及计算机构件化软件系统领域,特别涉及构件化软件系统中构件命名标识技术领域,具体是指一种构件化软件系统中自动为构件分配通用唯一标识符的方法。
背景技术:
在软件构件编程中,需要为每个构件类和接口定义一个唯一的标识符,这样才能区分不同的构件和接口。但是构件开发人员是遍布全世界的,如何才能保证每一个标识符是唯一的呢?如果简单的使用名字,将很容易导致名字冲突。如果像IP地址一样,为每个构件分配一个唯一标识符,这就需要一个专门的权威机构分配标识符。这对于构件的开发和使用,是不能满足实际需要的。为了保证唯一性,微软COM构件规范采用了128位的通用唯一标识符(UUID,Universally unique identifier),这是一个随机数,并不需要专门机构进行分配和管理。从理论上讲,如果一台机器每秒产生10000000个UUID,则可以保证(概率意义上)3240年不重复。微软提供一个uuidgen.exe工具用于产生UUID。
但是,现有技术中的UUID是一个128位的数,这些数字本身没有任何含意。对于初学构件编程的人,显得晦涩难懂。而且在开发构件的时候,经常拷贝旧的代码,改写成新的代码。如果漏了改UUID,将会造成UUID冲突,构件运行得不到预期结果(可能运行了旧的构件)。而这种错误是很难查找、定位的。另外,在开发构件过程中,经常修改接口方法,如果不改变UUID,有可能旧的客户端程序调用了修改接口后的构件时,会出现莫明其妙的错误。
发明内容
本发明的目的是克服了上述现有技术中的缺点,提供一种构件化软件系统中自动为构件分配通用唯一标识符的方法,该方法能够直接利用构件本身固有的特定信息来实现标识符的分配唯一性,有效保证了标识符的避免了标识符冲突的发生,降低了构件开发的复杂度,使用方便简单,适用范围较为广泛。
为了实现上述的目的,本发明的构件化软件系统中自动为构件分配通用唯一标识符的方法如下该构件化软件系统中自动为构件分配通用唯一标识符的方法,包括分配构件类通用唯一标识符的处理操作和分配接口通用唯一标识符的处理操作,其主要特点是,所述的分配构件类通用唯一标识符的处理操作包括以下步骤(1)系统获取该构件通用唯一名称;(2)系统获取该构件类的名称信息;(3)系统根据所述的构件类名称信息和所述的构件类所属的构件的通用唯一名称生成构件类通用唯一标识符;所述的分配接口通用唯一标识符的处理操作包括以下步骤(1)系统获取该接口的名称信息;(2)系统获取该接口中的方法名称信息;(3)系统根据所述的接口名称信息和接口中的方法名称信息生成接口通用唯一标识符。
该构件化软件系统中自动为构件分配通用唯一标识符的方法的构件通用唯一名称的格式为统一资源定位符+构件文件名称。
该构件化软件系统中自动为构件分配通用唯一标识符的方法的根据构件类名称信息和构件类所属的构件通用唯一名称生成构件类通用唯一标识符包括以下步骤(1)将构件通用唯一名称和构件类名称组合产生特定字符串;(2)根据该特定字符串通过压缩算法生成压缩编码;(3)根据该压缩编码产生校验位;(4)将该压缩编码和校验位组合成为构件类通用唯一标识符。
该构件化软件系统中自动为构件分配通用唯一标识符的方法的压缩算法可以为字典压缩算法、固定位长压缩算法、RLE压缩算法或者LZ77压缩算法。
该构件化软件系统中自动为构件分配通用唯一标识符的方法的根据接口名称信息和接口中的方法名称信息生成接口通用唯一标识符包括以下步骤(1)将接口名称和接口中的方法名称组合产生特定字符串;(2)根据该特定字符串通过压缩算法生成压缩编码;(3)根据该压缩编码产生校验位;(4)将该压缩编码和校验位组合成为接口通用唯一标识符。
该构件化软件系统中自动为构件分配通用唯一标识符的方法的压缩算法可以为字典压缩算法、固定位长压缩算法、RLE压缩算法或者LZ77压缩算法。
采用了该发明的构件化软件系统中自动为构件分配通用唯一标识符的方法,由于系统利用构件自身的特定信息,包括构件通用唯一名称(UUNM,Universally unique name)、构件类名称、接口名称和接口中的方法名称,通过一定的压缩算法产生全局唯一而且有意义的通用唯一标识符UUID,有效保证了标识符的避免了标识符冲突的发生;不仅如此,该方法能够为构件的开发和使用隐藏相应的UUID,降低了构件开发的复杂度,使用方便简单,适用范围较为广泛,为构件化软件技术的进一步发展奠定了良好的基础。
图1为本发明的构件化软件系统中为构件类分配通用唯一标识符的方法过程示意图。
图2为本发明的构件化软件系统中为接口分配通用唯一标识符的方法过程示意图。
具体实施例方式
为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。
该构件化软件系统中自动为构件分配通用唯一标识符的方法,包括分配构件类通用唯一标识符的处理操作和分配接口通用唯一标识符的处理操作,其中,请参阅图1所示,所述的分配构件类通用唯一标识符的处理操作包括以下步骤(1)系统获取该构件通用唯一名称,该通用唯一名称的格式为统一资源定位符+构件文件名称;(2)系统获取该构件类的名称信息;(3)系统根据所述的构件类名称信息和所述的构件类所属的构件的通用唯一名称生成构件类通用唯一标识符,包括以下步骤(a)将构件通用唯一名称和构件类名称组合产生特定字符串;(b)根据该特定字符串通过压缩算法生成压缩编码,该压缩算法可以为字典压缩算法、固定位长压缩算法、RLE压缩算法或者LZ77压缩算法;关于上述各压缩算法,均为现有技术中常用的压缩编码算法,其详细的信息说明,请直接在因特网搜索引擎上键入“压缩算法”关键字进行搜索,或者请参阅以下网址http://my.opera.com/neutronstar/blog/show.dml/161609;(c)根据该压缩编码产生校验位;(d)将该压缩编码和校验位组合成为构件类通用唯一标识符;再请参阅图2所示,所述的分配接口通用唯一标识符的处理操作包括以下步骤(1)系统获取该接口的名称信息;
(2)系统获取该接口中的方法名称信息;(3)系统根据所述的接口名称信息和接口中的方法名称信息生成接口通用唯一标识符,包括以下步骤(a)将接口名称和接口中的方法名称组合产生特定字符串;(b)根据该特定字符串通过压缩算法生成压缩编码,该压缩算法可以为字典压缩算法、固定位长压缩算法、RLE压缩算法或者LZ77压缩算法;(c)根据该压缩编码产生校验位;(d)将该压缩编码和校验位组合成为接口通用唯一标识符;在实际应用当中,通常人们都知道,internet的统一资源定位符(URL,Uniform ResourceLocators)是一个全球唯一的标识符,如http://www.elastos.com/koretide.php是科泰世纪公司的简介网页。类似的,可以使用通用唯一名称(UUNM,Universally unique name)来唯一标识一个构件,如www.elastos.com/car/sample/hello.dll,其中hello.dll为构件的文件名称。为了和以前的构件程序兼容,并且不影响程序执行效率,避免在程序中大量使用字符串比较、不定长字符数组分配释放等耗时的操作,还需要保留UUID。而这个UUID是根据UUNM等信息自动生成的,对构件开发者和使用者都是不可见的。
在构件中有两个地方要用到UUID,分别是构件类和接口,其对应的UUID也分别称为类标识(CLSID,Class Identifier)和接口标识(IID,Interface Identifier)。构件通过UUNM唯一标识。
对于构件类,由于类名(Class Name)只在一个构件中保证唯一,不同构件中两个具有不同实现的构件类可能存在类名相同的情况。为了解决这个问题,可以通过UUNM和类名生成UUID,以保证最终生成的构件类UUID的唯一性。
对于接口,由于相同的接口可能出现在不同的构件中,所以接口UUID与构件UUNM无关。但只用接口名的话,名字冲突的概率比较大,因此在生成接口UUID时,还结合了接口的方法名等信息。
本发明的方法中,生成的UUID使用了字典压缩算法,这样就可以从UUID反过来恢复类名或接口名,从而方便调试;同时还具有校验码,这样可以检查校验码确定是否是所生成的UUID。
采用了上述的构件化软件系统中自动为构件分配通用唯一标识符的方法,由于系统利用构件自身的特定信息,包括构件通用唯一名称(UUNM,Universally unique name)、构件类名称、接口名称和接口中的方法名称,通过一定的压缩算法产生全局唯一而且有意义的通用唯一标识符UUID,有效保证了标识符的避免了标识符冲突的发生;不仅如此,该方法能够为构件的开发和使用隐藏相应的UUID,降低了构件开发的复杂度,使用方便简单,适用范围较为广泛,为构件化软件技术的进一步发展奠定了良好的基础。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
权利要求
1.一种构件化软件系统中自动为构件分配通用唯一标识符的方法,包括分配构件类通用唯一标识符的处理操作和分配接口通用唯一标识符的处理操作,其特征在于,所述的分配构件类通用唯一标识符的处理操作包括以下步骤(1)系统获取该构件通用唯一名称;(2)系统获取该构件类的名称信息;(3)系统根据所述的构件类名称信息和所述的构件类所属的构件的通用唯一名称生成构件类通用唯一标识符;所述的分配接口通用唯一标识符的处理操作包括以下步骤(1)系统获取该接口的名称信息;(2)系统获取该接口中的方法名称信息;(3)系统根据所述的接口名称信息和接口中的方法名称信息生成接口通用唯一标识符。
2.根据权利要求1所述的构件化软件系统中自动为构件分配通用唯一标识符的方法,其特征在于,所述的构件通用唯一名称的格式为统一资源定位符+构件文件名称。
3.根据权利要求1或2所述的构件化软件系统中自动为构件分配通用唯一标识符的方法,其特征在于,所述的根据构件类名称信息和构件类所属的构件通用唯一名称生成构件类通用唯一标识符包括以下步骤(1)将构件通用唯一名称和构件类名称组合产生特定字符串;(2)根据该特定字符串通过压缩算法生成压缩编码;(3)根据该压缩编码产生校验位;(4)将该压缩编码和校验位组合成为构件类通用唯一标识符。
4.根据权利要求3所述的构件化软件系统中自动为构件分配通用唯一标识符的方法,其特征在于,所述的压缩算法为字典压缩算法、固定位长压缩算法、RLE压缩算法或者LZ77压缩算法。
5.根据权利要求1或2所述的构件化软件系统中自动为构件分配通用唯一标识符的方法,其特征在于,所述的根据接口名称信息和接口中的方法名称信息生成接口通用唯一标识符包括以下步骤(1)将接口名称和接口中的方法名称组合产生特定字符串;(2)根据该特定字符串通过压缩算法生成压缩编码;(3)根据该压缩编码产生校验位;(4)将该压缩编码和校验位组合成为接口通用唯一标识符。
6.根据权利要求5所述的构件化软件系统中自动为构件分配通用唯一标识符的方法,其特征在于,所述的压缩算法为字典压缩算法、固定位长压缩算法、RLE压缩算法或者LZ77压缩算法。
全文摘要
本发明涉及一种构件化软件系统中自动为构件分配通用唯一标识符的方法,其中,分配构件类通用唯一标识符包括获取该构件通用唯一名称、获取该构件类的名称信息、根据构件类名称信息和构件通用唯一名称生成构件类通用唯一标识符,分配接口通用唯一标识符包括获取该接口的名称信息、获取该接口中的方法名称信息、根据接口名称信息和接口方法名称信息生成接口通用唯一标识符。采用该种构件化软件系统中自动为构件分配通用唯一标识符的方法,有效保证了标识符的避免了标识符冲突的发生,同时能够为构件的开发和使用隐藏相应的标识符,降低了构件开发的复杂度,使用方便简单,适用范围较为广泛,为构件化软件技术的进一步发展奠定了良好的基础。
文档编号G06F9/44GK1920772SQ200610030220
公开日2007年2月28日 申请日期2006年8月18日 优先权日2006年8月18日
发明者陈榕, 苏翼鹏, 梁宇洲 申请人:上海科泰世纪科技有限公司