CN1916842A - 构件化软件***中实现反射机制的构件封装方法 - Google Patents
构件化软件***中实现反射机制的构件封装方法 Download PDFInfo
- Publication number
- CN1916842A CN1916842A CN 200610030855 CN200610030855A CN1916842A CN 1916842 A CN1916842 A CN 1916842A CN 200610030855 CN200610030855 CN 200610030855 CN 200610030855 A CN200610030855 A CN 200610030855A CN 1916842 A CN1916842 A CN 1916842A
- Authority
- CN
- China
- Prior art keywords
- information
- interface
- packing
- component
- software system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种构件化软件***中实现反射机制的构件封装方法,包括记录该构件所包含的接口和类的定义信息、将定义信息作为构件描述元数据进行打包封装存放处理、分析并记录构件对其它构件的依赖关系信息、将依赖关系信息作为构件导入信息元数据封装于构件中。采用该种构件化软件***中实现反射机制的构件封装方法,使得采用C/C++编写的构件也具有了同java和.Net编写的构件一样的动态效果,可以在运行时获得每一个类型的信息,而且编译时可直接创建对象,可不用绑定就可动态操作构件,实现了***API层面上的对元数据进行各种计算的统一界面,简单快捷、运行性能稳定可靠,适用范围较为广泛,为构件化软件***的进一步发展奠定了坚实的基础。
Description
技术领域
本发明涉及计算机软件技术领域,特别涉及计算机构件化软件***领域,具体是指一种构件化软件***中实现反射机制的构件封装方法。
背景技术
随着现代构件化计算机软件技术的进一步发展,CAR(ComponentAssembly Runtime)构件技术是一种使用面向构件编程(Component Oriented Programming,简称COP)技术,它定义了一套网络编程时代的构件编程模型和编程规范,规定了一组构件间相互调用的标准,使得二进制构件能够自描述,能够在运行时动态链接。
目前,CAR构件技术已在某些先进的嵌入式操作***上实现,在该嵌入式操作***的SDK(Software Development Kit)下,用户很容易编写出自己的构件。
CAR构件技术的基础思想来源于微软的COM,但它对微软的COM进行了拓展,并且二者不兼容。CAR构件技术由CAR语言(构件描述语言,描述构件的元数据信息)、CAR编译器、自动代码生成工具以及CAR构件基础库支持。CAR构件技术体现了网络编程时代的特性,编程界面简单。
同时,随着软件技术的不断进步,目前已经出现了和CAR中反射机制相类似的Java和.Net中的反射(Reflection)技术。Java是Sun公司发明的一种跨平台的强类型语言,而.Net是Microsoft公司发明的一项最新技术,其中包含了C#等多种语言,且这些语言之间能够互相操作对方所定义的对象。Reflection在Java和.Net中都起到了十分重要的作用,使它们可以在运行时获得每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。
但是,这两种技术只是为两种新的语言提供了Reflection机制,而基于C/C++的构件技术中还没有成熟的Reflection机制。随着面向构件技术的发展、C/C++在构件技术中的广泛运用以及处理器处理能力的提高,基于C/C++的构件技术也有必要提供一种相应的Reflection机制。
发明内容
本发明的目的是克服了上述现有技术中的缺点,提供一种能够在传统的C/C++语言中实现构件的反射机制、从而构建出***API层面上的对元数据进行计算的统一界面的构件化软件***中实现反射机制的构件封装方法。
为了实现上述的目的,本发明的构件化软件***中实现反射机制的构件封装方法如下:
该构件化软件***中实现反射机制的构件封装方法,其主要特点是,所述的方法包括以下步骤:
(1)***对构件进行编译的过程中记录该构件所包含的接口和类的定义信息;
(2)将记录的所述定义信息作为构件描述元数据进行打包封装存放处理操作;
(3)***分析并记录该构件对其它构件的依赖关系信息;
(4)将记录的所述依赖关系信息作为构件导入信息元数据封装于该构件中。
所述的打包封装存放处理操作可以为:
将构件描述元数据与***编译得到的构件的实现代码一起打包封装到构件模块文件中。
所述的打包封装存放处理操作也可以包括以下步骤:
(1)根据构件描述元数据生成单独的文件;
(2)将该生成的文件存放在目标目录中;
(3)***将该文件打包封装到动态链接库DLL的资源段里。
所述的构件描述元数据包括构件模块信息、构件类信息和构件接口信息。
所述的构件模块信息包括构件模块版本信息、构件模块名称和通用唯一名称。
所述的构件类信息包括类数量信息和类定义信息。
所述的类定义信息包括类名称、类标识、类所在模块名称、类属性、类实现的接口数量信息和接口定义信息。
所述的构件接口信息包括接口数量信息和接口定义信息。
所述的接口定义信息包括接口名称、接口标识、接口所在模块名称、接口属性、接口拥有的方法数量信息和方法定义信息。
所述的方法定义信息包括方法名称、方法返回值类型、方法的参数数量信息和参数定义信息。
所述的参数定义信息包括参数名称和参数属性。
所述的参数属性可以为输入参数或者输出参数。
所述的构件描述元数据还包括构件数据结构信息。
所述的构件数据结构信息包括数据结构的数量信息和数据结构的定义信息。(包括结构类型和枚举类型)
采用了该发明的构件化软件***中实现反射机制的构件封装方法,由于在传统的C/C++语言编写的构件中封装了具有构件所包含的接口和类的定义信息以及构件对其它构件的依赖关系信息的元数据,并将该元数据和二进制实现代码放在同一个可执行文件中,从而实现了构件的反射机制,使得采用C/C++编写的构件也具有了同java和.Net编写的构件一样的动态效果,可以在运行时获得每一个类型(包括类、结构、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等;而且还可以获得每个成员的名称、限定符和参数等,即可对每一个类型了如指掌;不仅如此,如果获得了构造函数的信息,即使这个对象的类型在编译时还不知道,仍然可以直接创建对象,而且如果获得了其它方法的信息,就可不用与构件在编译时绑定就可动态操作构件,从而实现了***API层面上的对元数据进行各种计算的统一界面,实现方法简单快捷、运行性能稳定可靠,适用范围较为广泛,为构件化软件***的进一步发展奠定了坚实的基础。
附图说明
图1为本发明的构件化软件***中实现反射机制的构件封装方法中构件描述元数据的封装结构示意图。
图2为本发明的构件化软件***中实现反射机制的构件封装方法中类定义信息的封装结构示意图。
图3为本发明的构件化软件***中实现反射机制的构件封装方法中接口定义信息的封装结构示意图。
图4为本发明的构件化软件***中实现反射机制的构件封装方法中方法定义信息的封装结构示意图。
图5为本发明的构件化软件***中实现反射机制的构件封装方法中标准接口结构示意图。
具体实施方式
为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。
请参阅图1至图4所示,该构件化软件***中实现反射机制的构件封装方法,其中,包括以下步骤:
(1)***对构件进行编译的过程中记录该构件所包含的接口和类的定义信息;
(2)将记录的所述定义信息作为构件描述元数据进行打包封装存放处理操作,该构件描述元数据包括构件模块信息、构件类信息、构件接口信息和构件数据结构信息;其中,所述的构件模块信息包括构件模块版本信息、构件模块名称和通用唯一名称(UUNM,UniversalUnique Name),该通用唯一名称UUNM用于修饰构件,标识该构件在互联网上的地址,通过UUNM中指定的地址,客户程序可以在互联网上获取该构件的最新版本;所述的构件类信息包括类数量信息和类定义信息,所述的构件接口信息包括接口数量信息和接口定义信息,所述的构件数据结构信息包括数据结构的数量信息和数据结构的定义信息,该数据结构包括结构类型和枚举类型等。
其中,所述的类定义信息包括类名称、类标识、类所在模块名称、类属性、类实现的接口数量信息和接口定义信息;所述的接口定义信息包括接口名称、接口标识、接口所在模块名称、接口属性、接口拥有的方法数量信息和方法定义信息。
其中,所述的方法定义信息包括方法名称、方法返回值类型、方法的参数数量信息和参数定义信息;其中,所述的参数定义信息包括参数名称和参数属性,所述的参数属性可以为输入参数或者输出参数。
所述的打包封装存放处理操作可以为:将构件描述元数据与***编译得到的构件的实现代码一起打包封装到构件模块文件中;也可以包括以下步骤:
(a)根据构件描述元数据生成单独的文件;
(b)将该生成的文件存放在目标目录中;
(c)***将该文件打包封装到动态链接库DLL的资源段里;
(3)***分析并记录该构件对其它构件的依赖关系信息;
(4)将记录的所述依赖关系信息作为构件导入信息元数据封装于该构件中。
在实际应用当中,反射技术(Reflection)是基于CAR构件技术对元数据的内建支持而发展起来的。它对用户提供了一套完整的基于C/C++语言的进行元数据计算的界面。
构件自描述是构件能够描述自己的信息数据,在COM技术中,强调构件的自描述,强调接口数据类型的自描述,以便于从二进制级上把接口与实现分离,并达到接口可以跨地址空间的目的。
构件及接口数据的自描述是COM的理论基础及立足点之一,但在一些广泛采用的COM的具体设计和实现上,并未完全贯彻这种思想。比如微软的MS COM就是一个例子,其不足之处主要体现在以下几点:
(1)在MS COM中,构件的一些相关运行信息都存放在***的全局数据库——注册表中,构件在能够正确运行之前,必须进行注册。而构件的相关运行信息本身就应该是构件自描述的内容之一。
(2)MS COM对构件导出接口的描述方法之一是使用类型库(Type Library)元数据(MetaData,用于描述构件信息的数据),类型库本身是跟构件的DLL(Dynamic Link Library)文件打包在一起的。但类型库信息却不是由构件自身来解释,而是靠***程序OLE32.DLL来提取和解释,这也不符合构件的自描述思想。
(3)大多数情况下,一个构件会使用到另一些构件的某种功能,即构件之间存在相互的依存关系。MSCOM中,构件只有关于自身接口(或者说功能)的自描述,而缺少对构件依赖关系的自描述。在网络计算时代的今天,正确的构件依赖关系是构件滚动运行、动态升级的基础。
正是由于MS COM中存在的种种问题,CAR在继承了COM自描述思想的同时,针对上述问题,对COM的具体设计和实现进行了如下扩展和改进:
(1)CAR把类信息(ClassInfo)作为描述构件的元数据,类信息所起的作用与MS COM的类型库相似,类信息由CAR文件编译而来,是CAR文件的二进制表述。与MS COM不同的是,MS COM使用***程序OLE32.DLL来取出并解释类型库信息;在CAR中,可以使用一个特殊的CLSID从构件中取出元数据信息,构件元数据的解释不依赖于其它的DLL文件。
(2)在CAR的构件封装中,除了构件本身的类信息封装在构件内外,还对构件的依赖关系进行了封装。即把一个构件对其它构件的依赖关系也作为构件的元数据封装在构件中,我们把这种元数据称为构件的导入信息(ImportInfo)。
CAR构件通过对ClassInfo和ImportInfo的封装,可以实现构件的无注册运行。并可以支持构件的动态升级和自滚动运行。
元数据(metadata),是描述数据的数据(data about data),首先元数据是一种数据,是对数据的抽象,它主要描述了数据的类型信息。
普通的源文件(c或者c++语言)经过编译器的编译产生二进制的文件,但在编译时编译器只提取了CPU执行所需的信息,忽略了数据的类型信息。比如一个指针,单看编译完之后的二进制代码或汇编已不能区分它是整型或是char型了,如果是指向字符串的指针,字符串的长度也无从知晓。这部分类型信息就属于通常所说的元数据信息。
CAR构件以接口方式向外提供服务,构件接口需要元数据来描述才能让其他使用构件服务的用户使用。构件为了让接口与实现无关,从而保持了接口的不变性,使得动态升级成为可能;并且使用vptr结构将接口的内部实现隐藏起来,由接口的元数据来描述接口的函数布局和函数参数属性。接口的元数据描述的就是服务和调用之间的关系。有了这种描述,不同构件之间的调用才成为可能,构件的远程化,进程间通讯,自动生成Proxy和Stub及自动Marshalling、Unmarshalling才能正确地进行。
CAR构件的元数据是CAR文件经过CAR编译器生成的,元数据与构件的实现代码一起被打包到构件模块文件中。元数据记录了构件接口及构件类的定义信息,是构件自描述的基础。
在CAR里,ClassInfo被作为构件程序的元数据信息,用于描述构件导出的接口及方法列表。同时ClassInfo也是自动生成构件源程序的基础。
在目前的CAR构件开发环境下ClassInfo以两种形式存在:一种是与构件的实现代码一起被打包到构件模块文件中,用于列集和散集用的;另一种是以单独的文件形式存在,存放在目标目录中,最终会被打包到DLL的资源段里,该文件的后缀名为cls,如hello.car将会生成hello.cls。这个cls文件和前者相比,就是它详细描述了构件的各种信息,而前者是一个简化了ClassInfo,如它没有接口和方法名称等信息。cls文件就是CAR文件的二进制版本。由于前者只是用于CAR构件库的实现,接下来要介绍的是后一种ClassInfo,这是用户需要关心的。
ClassInfo(构件描述的元数据)的构成方式如下:
再请参阅图1至图4所示,对于每个CAR构件模块,ClassInfo主要包括三大部分:构件模块信息、构件类信息以及构件接口信息,还可以包括构件数据结构信息。其中,类定义信息里有其所在的模块名,这是因为该类可能是其它模块的构件类;接口也可以是另外模块定义,所以接口定义信息也记录了接口所在的模块名;对于方法的每个参数有参数名及参数属性等主要构成,参数属性描述了该参数是输入参数还是输出参数。另外,每个接口的方法信息不包括IObject方法的信息,因为它是所有接口的基接口,没有必要包含在每个接口定义信息里面。
请参阅图5所示,在本发明的构件封装方法中,为了实现Reflection机制,***需要提供一组标准接口及方法来支持元数据的计算,这些接口包括:
●IModuleInfo——模块信息接口,提供了一组对模块进行操作的方法
●IInterfaceInfo——接口信息接口,提供了一组对模块中定义的接口进行操作的方法
●IClassInfo——构件类信息接口,提供了一组对模块中定义的构件类进行操作的方法
●IStructInfo——结构体信息接口,提供了一组对模块中定义的结构体进行操作的方法
●IFieldInfo——结构体成员信息接口,提供了一组对结构体中的某个成员进行操作的方法
●IStructBox——创建struct的接口,由IStructInfo创建出来并与之绑定,通过此接口的方法为结构对象的成员赋值,并最终获取创建出来的结构对象指针
●IEnumerationInfo——枚举类信息接口,提供了一组对模块中定义的枚举类进行操作的方法
●IEnumElementInfo——枚举类元素信息接口,提供了一组对枚举类中的某个元素进行操作的方法
●IAliasInfo——别名类信息接口,别名类是在CAR文件中用typedef定义的新的数据类型,此接口提供了一组对别名类进行操作的方法
●IMethodInfo——方法信息接口,提供了一组对接口中定义的某个方法进行操作的方法
●IParameterInfo——参数信息接口,提供了一组对接口方法中某个参数进行操作的方法
●IDataTypeInfo——数据类型信息接口,提供了一组对CAR数据类型进行操作的方法
●IMethodDispatcher——方法调用接口,由IMethodInfo创建出来,提供一组方法来传递参数并最终通过Invoke来完成实际方法调用
其中,图中的箭头表示箭头所指接口对象可以通过箭头前的对象创建得到。
除了这些接口以外,***也提供了如下几个API来方便对这些接口的使用:
●EzAcquireModuleInfo——获取指定名字的构件的模块信息
●EzReflectClassInfo——获取指定的IObject对象的类信息
●EzReflectInterfaceInfo——获取指定的IObject对象的接口信息
●EzReflectModuleInfo——获取指定的IObject对象的模块信息
●EzCreateMethodDispatcher——创建方法调用分发器,通过它来完成对构件方法的调用
下面结合源代码对本发明的方法进行进一步举例说明:
一个CAR构件是如下声明的://hello.carmodule{
interface IHello {
Hello([in]EzStr inStr,[out]EzStrBuf outStrBuf);
}
class CHello {
interface IHello;
}}
采用Reflection机制,通过如下代码即可在运行时操作上面这个构件:#include<stdio.h>void InvokeFun(IMethodDispatcher*iMethodDispatcher){
//绑定到IMethodDispatcher关联的对象的Hello方法
ec=iMethodDispatcher->BindMethodByName("Hello");
if(FAILED(ec)){
printf("*ERROR*Failed to BindMethod.\n");
return;
}
//传入第一个参数(Ezstr类型)
ec=iMethodDispatcher->PushEzStr(EZCSTR("Hello"));
if(FAILED(ec)){
printf("*ERROR*Failed to PushEzStr.\n");
return;
}
//传入第二个参数(EzStrBuf类型)
EzStrBuf_<32>esbBuf;
ec=iMethodDispatcher->PushEzStrBuf(esbBuf);
if(FAILED(ec)){
printf("*ERROR*Failed to PushEzStrBuf.\n");
return;
}
//调用Hello方法
ec=iMethodDispatcher->Invoke(&ec1);
if(FAILED(ec)){
printf("*ERROR*Failed to invoke.\n");
return;
}
//打印Hello方法的out属性参数值到控制台
wprintf((wchar_t*)esbBuf);}int_cdecl main(int argc,char*argv[]){
IModuleInfo*pModule=NULL;
IClassInfo*pClassInfo=NULL;
IObject*pObject=NULL;
IMethodDispatcher*pMethodDispatcher=NULL;
//获取要使用的构件的模块信息
ECODE ec=EzAcquireModuleInfo(L“hello.dll”,&pModule);
if(FAILED(ec)){
assert(0&&"Can′t load hello.dll");
return1;
}
//通过名字获取模块中的CAR构件类信息
ec=pModule->GetClassByName(“CHello”,&pClassInfo);
if(FAILED(ec)){
goto error;
}
//通过类信息创建出类实例
ec=pClassInfo->CreateObject(CTX_SAME_DOMAIN,&pObject);
if(FAILED(ec)){
goto error;
}
//创建此对象对应的方法调用分发器(MethodDispatcher)
IMethodDispatcher*pMethodDispatcher;
ec=EzCreateMethodDispatcher(pObject,&pMethodDispatcher);
if(FAILED(ec)){
printf("*ERROR*Failed to EzCreateMethodDispatcher.\n");
goto error;
}
else{
//调用方法
InvokeFun(pMethodDispatcher);
}
error:
//释放内存
if(pModule)
pModule->Release();
if(pClassInfo)
pClassInfo->Release();
if(pObject)
pObject->Release();
if(pMethodDispatcher)
pMethodDispatcher->Release();
return ec;
}
从代码可以看出,它并没有直接创建(通过EzCreateObject方法)任何CHello类的实例,而是在运行期间通过Reflection提供的统一界面进行计算,最后完成了对方法的调用。
采用了上述的构件化软件***中实现反射机制的构件封装方法,由于在传统的C/C++语言编写的构件中封装了具有构件所包含的接口和类的定义信息以及构件对其它构件的依赖关系信息的元数据,并将该元数据和二进制实现代码放在同一个可执行文件中,从而实现了构件的反射机制,使得采用C/C++编写的构件也具有了同java和.Net编写的构件一样的动态效果,可以在运行时获得每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等;而且还可以获得每个成员的名称、限定符和参数等,即可对每一个类型了如指掌;不仅如此,如果获得了构造函数的信息,即使这个对象的类型在编译时还不知道,仍然可以直接创建对象,而且如果获得了其它方法的信息,就可不用与构件在编译时绑定就可动态操作构件,从而实现了***API层面上的对元数据进行各种计算的统一界面,实现方法简单快捷、运行性能稳定可靠,适用范围较为广泛,为构件化软件***的进一步发展奠定了坚实的基础。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
Claims (14)
1、一种构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的方法包括以下步骤:
(1)***对构件进行编译的过程中记录该构件所包含的接口和类的定义信息;
(2)将记录的所述定义信息作为构件描述元数据进行打包封装存放处理操作;
(3)***分析并记录该构件对其它构件的依赖关系信息;
(4)将记录的所述依赖关系信息作为构件导入信息元数据封装于该构件中。
2、根据权利要求1所述的构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的打包封装存放处理操作为:
将构件描述元数据与***编译得到的构件的实现代码一起打包封装到构件模块文件中。
3、根据权利要求1所述的构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的打包封装存放处理操作包括以下步骤:
(1)根据构件描述元数据生成单独的文件;
(2)将该生成的文件存放在目标目录中;
(3)***将该文件打包封装到动态链接库DLL的资源段里。
4、根据权利要求1所述的构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的构件描述元数据包括构件模块信息、构件类信息和构件接口信息。
5、根据权利要求4所述的构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的构件模块信息包括构件模块版本信息、构件模块名称和通用唯一名称。
6、根据权利要求4所述的构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的构件类信息包括类数量信息和类定义信息。
7、根据权利要求6所述的构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的类定义信息包括类名称、类标识、类所在模块名称、类属性、类实现的接口数量信息和接口定义信息。
8、根据权利要求4所述的构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的构件接口信息包括接口数量信息和接口定义信息。
9、根据权利要求7或8所述的构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的接口定义信息包括接口名称、接口标识、接口所在模块名称、接口属性、接口拥有的方法数量信息和方法定义信息。
10、根据权利要求9所述的构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的方法定义信息包括方法名称、方法返回值类型、方法的参数数量信息和参数定义信息。
11、根据权利要求10所述的构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的参数定义信息包括参数名称和参数属性。
12、根据权利要求10所述的构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的参数属性为输入参数或者输出参数。
13、根据权利要求4至8中任一项所述的构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的构件描述元数据还包括构件数据结构信息。
14、根据权利要求13所述的构件化软件***中实现反射机制的构件封装方法,其特征在于,所述的构件数据结构信息包括数据结构的数量信息和数据结构的定义信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610030855 CN1916842A (zh) | 2006-09-06 | 2006-09-06 | 构件化软件***中实现反射机制的构件封装方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610030855 CN1916842A (zh) | 2006-09-06 | 2006-09-06 | 构件化软件***中实现反射机制的构件封装方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1916842A true CN1916842A (zh) | 2007-02-21 |
Family
ID=37737845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610030855 Pending CN1916842A (zh) | 2006-09-06 | 2006-09-06 | 构件化软件***中实现反射机制的构件封装方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1916842A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100543673C (zh) * | 2007-07-26 | 2009-09-23 | 南京大学 | 一种基于本体的反射式体系结构自演化方法 |
CN101763258A (zh) * | 2009-12-31 | 2010-06-30 | 深圳联友科技有限公司 | 一种软件复用方法及*** |
CN101840334A (zh) * | 2010-04-16 | 2010-09-22 | 中国电子科技集团公司第二十八研究所 | 一种软件构件服务化封装方法 |
CN101504609B (zh) * | 2009-03-17 | 2011-11-30 | 北大方正集团有限公司 | 生成对象包装类型的方法与装置 |
CN101482817B (zh) * | 2008-12-18 | 2012-01-11 | 浙江大学 | 基于黑盒的大粒度Java构件组装方法 |
CN102495882A (zh) * | 2011-12-07 | 2012-06-13 | 方正国际软件有限公司 | Java环境下页面对象与数据库字段绑定的实现***和方法 |
US8484204B2 (en) | 2008-08-28 | 2013-07-09 | Microsoft Corporation | Dynamic metadata |
CN103729184A (zh) * | 2013-12-29 | 2014-04-16 | 国云科技股份有限公司 | 一种软件组件组合构建方法 |
CN104142833A (zh) * | 2013-05-06 | 2014-11-12 | 沈阳中科博微自动化技术有限公司 | 封装测试生产线的设备动态管理方法 |
CN106502668A (zh) * | 2016-10-20 | 2017-03-15 | 武汉斗鱼网络科技有限公司 | 一种实现Android JNI反射的接口封装方法及*** |
CN106775734A (zh) * | 2016-12-23 | 2017-05-31 | 北京数字天域科技有限责任公司 | 一种Andriod***工程化的方法和装置 |
CN108614687A (zh) * | 2018-04-20 | 2018-10-02 | 苏州蜗牛数字科技股份有限公司 | 一种在c++程序中实现反射的方法、存储介质及计算设备 |
-
2006
- 2006-09-06 CN CN 200610030855 patent/CN1916842A/zh active Pending
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100543673C (zh) * | 2007-07-26 | 2009-09-23 | 南京大学 | 一种基于本体的反射式体系结构自演化方法 |
US8484204B2 (en) | 2008-08-28 | 2013-07-09 | Microsoft Corporation | Dynamic metadata |
CN102132267B (zh) * | 2008-08-28 | 2013-12-18 | 微软公司 | 动态元数据 |
CN101482817B (zh) * | 2008-12-18 | 2012-01-11 | 浙江大学 | 基于黑盒的大粒度Java构件组装方法 |
CN101504609B (zh) * | 2009-03-17 | 2011-11-30 | 北大方正集团有限公司 | 生成对象包装类型的方法与装置 |
CN101763258B (zh) * | 2009-12-31 | 2013-09-11 | 深圳联友科技有限公司 | 一种软件复用方法及*** |
CN101763258A (zh) * | 2009-12-31 | 2010-06-30 | 深圳联友科技有限公司 | 一种软件复用方法及*** |
CN101840334A (zh) * | 2010-04-16 | 2010-09-22 | 中国电子科技集团公司第二十八研究所 | 一种软件构件服务化封装方法 |
CN101840334B (zh) * | 2010-04-16 | 2013-04-17 | 中国电子科技集团公司第二十八研究所 | 一种软件构件服务化封装方法 |
CN102495882A (zh) * | 2011-12-07 | 2012-06-13 | 方正国际软件有限公司 | Java环境下页面对象与数据库字段绑定的实现***和方法 |
CN104142833A (zh) * | 2013-05-06 | 2014-11-12 | 沈阳中科博微自动化技术有限公司 | 封装测试生产线的设备动态管理方法 |
WO2015096275A1 (zh) * | 2013-12-29 | 2015-07-02 | 国云科技股份有限公司 | 一种支持组件组合构建的软件构建方法 |
CN103729184A (zh) * | 2013-12-29 | 2014-04-16 | 国云科技股份有限公司 | 一种软件组件组合构建方法 |
CN103729184B (zh) * | 2013-12-29 | 2017-05-17 | 国云科技股份有限公司 | 一种软件组件组合构建方法 |
CN106502668A (zh) * | 2016-10-20 | 2017-03-15 | 武汉斗鱼网络科技有限公司 | 一种实现Android JNI反射的接口封装方法及*** |
CN106502668B (zh) * | 2016-10-20 | 2019-08-23 | 武汉斗鱼网络科技有限公司 | 一种实现Android JNI反射的接口封装方法及*** |
CN106775734A (zh) * | 2016-12-23 | 2017-05-31 | 北京数字天域科技有限责任公司 | 一种Andriod***工程化的方法和装置 |
CN106775734B (zh) * | 2016-12-23 | 2021-02-23 | 北京数字天域科技有限责任公司 | 一种Andriod***工程化的方法和装置 |
CN108614687A (zh) * | 2018-04-20 | 2018-10-02 | 苏州蜗牛数字科技股份有限公司 | 一种在c++程序中实现反射的方法、存储介质及计算设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1916842A (zh) | 构件化软件***中实现反射机制的构件封装方法 | |
CN1313920C (zh) | 一种基于统一构件封装件结构的构件组装方法 | |
CN1811702A (zh) | 开发门户应用和自动部署门户应用的***和方法 | |
CN1647042A (zh) | 定制软件抽象的方法 | |
CN1310148C (zh) | 程序执行处理终端装置和程序执行处理方法 | |
US7493605B2 (en) | Method and a software product for adapting a .Net framework compliant reflection mechanism to a java environment | |
CN1208482A (zh) | 分布式处理 | |
CN101078995A (zh) | 构件运行支撑平台接入消息服务的方法 | |
CN1577322A (zh) | 管理数据处理***中的应用文件的方法和装置 | |
CN1949187A (zh) | 一种程序调测***及方法 | |
CN101038545A (zh) | 操作***内核构件跨域运行的方法 | |
CN111506314B (zh) | 项目开发的方法、装置、服务器及介质 | |
CN100345110C (zh) | 避免网格计算应用依赖底层开发工具箱的方法 | |
CN1716249A (zh) | 延迟取出用户定义类型的指定成员的***和方法 | |
CN101042649A (zh) | 一种配置信息处理方法及装置以及平台*** | |
CN1764183A (zh) | 一种基于计算机网络的QoS驱动的提供组合Web服务的计算机*** | |
CN1908894A (zh) | 基于Brew的一种动态用户界面的体系结构和实现方法 | |
CN1766835A (zh) | 用于在设计和运行时间无缝制作和编辑工作流的框架 | |
CN1805345A (zh) | Web服务工作流处理器 | |
CN1258704C (zh) | 基于网格环境的多计算引擎协同方法 | |
CN1313926C (zh) | 模板编译方法 | |
CN1662011A (zh) | 使用元数据定义映射来构建组件应用程序的***和方法 | |
CN101079736A (zh) | 模型化的网格资源定位方法 | |
CN1819588A (zh) | 基于中间件平台提供网络服务的方法 | |
CN1805431A (zh) | 远程门户组件的Web服务处理*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1103591 Country of ref document: HK |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1103591 Country of ref document: HK |