CN101248416A - 组件架构 - Google Patents
组件架构 Download PDFInfo
- Publication number
- CN101248416A CN101248416A CNA2006800306523A CN200680030652A CN101248416A CN 101248416 A CN101248416 A CN 101248416A CN A2006800306523 A CNA2006800306523 A CN A2006800306523A CN 200680030652 A CN200680030652 A CN 200680030652A CN 101248416 A CN101248416 A CN 101248416A
- Authority
- CN
- China
- Prior art keywords
- assembly
- interface
- assemblies
- rule
- component
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
一种用于控制设备的自组织软件,该软件包含至少两个组件。每个组件包括至少一个用于与其他组件连接的接口,其中每个组件本身包含定义组件规则的信息。组件包含的规则定义组件可以如何彼此连接,以便不需要外部规则数据库。
Description
技术领域
本发明一般涉及组件架构。更具体地,但不是排他地,本发明涉及用于移动设备的自管理组件架构。
背景技术
组件架构广泛用于软件行业中。由于可重配置的架构与移动中间件和自管理系统相关,所以近来可重配置的架构受到关注。
移动应用平台的常见特性是环境的动态变化。取决于地理位置或接近于其他终端,服务可以变得可用或不可用。基于可用的服务以及该服务需要的属性(带宽、诸如屏幕大小的设备属性),应用可能不得不对其自身以及服务于该应用通信要求的中间件进行调整。广泛使用的方法是使用组件模型,并且通过向应用添加新组件或从应用移除新组件或通过将应用组件连接到不同中间件组件来动态地改变组件的连接(“装配”)。
对于所谓的反射中间件来说需要动态装配。反射中间件基于反射原理,反射使程序能够访问关于其自身代码库(code base)以及中间件代码库的信息。然后,程序可以分析行为模式并且调整其行为。对于使用众所周知的层次分解所不能实现的应用逻辑,为了达到调整程序行为的目的所需要的改变可能是显著的并且是横切(crosscutting)的。
在以下参考中公开了其他背景技术,现通过参考将其引入:Jeremy S.Bradbury et al.:A Survey of Self-Management in DynamicSoftware Architecture Specifications,Proc.of the InternationalWorkshop on Self-managed Systems(WOSS’04),Newport Beach,California,USA,October/November 2004;Marija Mikic-Rakic andNenad Medvidovic:Support for Disconnected Operation viaArchitectural Self-Reconfiguration。所有这些架构似乎都使用某些外部定义语言来描述组件系统。现有技术主要集中在推理引擎和规则描述上。
公知的现有技术使用集中的规则引擎,但是不幸地是,很难创建用于规则引擎的详尽规则库,并且如果规则引擎出现故障,则自适应将失败。
发明内容
本发明的目的是避免或至少减轻现有技术的问题和/或提供新的可替代技术。
根据本发明的第一方面,提供了一种包括自组织软件的设备,该自组织软件包括至少两个组件,每个组件包括至少一个用于与其他组件连接的接口,其中每个组件包含定义组件规则的信息,根据该组件规则,该组件可以与其他组件连接。
有利地,自组织软件可以独立于外部规则数据库工作。
该组件可以进一步包含定义接口规则的信息,根据该接口规则,组件的接口可以与其他组件的接口进行连接。可以配置该设备以让接口规则取代组件规则。
组件规则和/或接口规则可以包含可选的规则,该可选规则需要满足特定的条件。
有利地,取代组件规则的接口规则以及提供条件性规则的接口规则中的每一种都可以提供进一步的灵活性。有利地,这样便允许存在的某些接口具有超越一般组件规则的特殊重要性。例如,可能需要表明仅可以连接特定组件接口。在此情况中,组件规则可以使连接失效但接口规则使其有效。其结果是,可以连接被指定接口规则的接口但是不能连接其他接口。
每个组件和/或每个接口可以与给定的权重或优先级相关联,并且可以配置设备以根据这些权重或优先级来连接接口。有利地,优先级或权重可以增强重新连接过程以促成组件所希望的组合或连接。
每个组件或至少某些组件可以与预定的、可选的独立的有效期相关,在该有效期之后,删除具有有效期的组件。
自组织软件可以根据分层组件模型进行组织。
组件规则和/或接口规则可以作为元信息存储在组件中。元信息可以包括任何以下选项:强制属性,用于定义可以与讨论中的组件连接的另一个组件的所需属性及属性值;条件属性,用于当存在将要与讨论中的组件连接的另一组件时,定义必须具有给定值的所述另一组件的属性;以及禁止属性,用于定义绝对不能连接的另一组件属性的值。属性的值可以作为单个的值、范围或多个值和/或范围给出。
组件可以包括能够暴露它们元信息的基本组件(primitivecomponent)。该基本组件可以包括一个或多个组合组件,该组合组件能够通过安排与其他组件的连接来包含其他组件并且能够根据包含在组合组件中的其他组件来暴露元信息。
有利地,组合组件或容器(container)可以创建能够使多个组件以统一的方式集体行动并且表现为一个整体的增强组件的组合单元。有利地,组合组件可以包含基本组件和组合组件二者或之一。
组合组件可以与用于包含由该组合组件所包含组件的域存储器相关联。域存储器可以存储域中未连接并且还没有过期的组件。可以配置容器以保持域存储器并且根据组件将要加入组合组件还是离开组合组件而将组件移动到域存储器中或从域存储器中移出组件。
组件可以具有确定组件可以加入哪个容器的超级属性。
当组件插入域存储器中时,可以配置设备以重连接组合组件所包含的所有组件。可以配置设备以建立重连接标识,该重连接标识能够使任何新的重连接区别于最近的重连接,以便域存储器内的每个容器可以识别其在新的重连接期间是否被检查过。
有利地,设备能够基于组件架构环境中的改变确定需要的组件装配。
有利地,可以将设备看成模仿生物细胞的行为。组件可以包含划分为可选接口和强制接口的接口或端口,每个具有特定类型。当所有强制接口与其他组件相连接时,组件可以起作用。仅当将要连接到一起的组件具有通用类型的接口时,组件才可以彼此连接。
可以配置设备以存储不活跃的组件(例如,它们所有的强制接口都没有被占用)。当新组件添加到系统中时,设备可以进一步配置以检查可用组件的接口以便搜索匹配的接口。
有利地,系统可以提供新型的自管理组件架构。与现有公知的自管理组件架构不同,关于自适应的知识(规则或约束)可以配置在组件的接口内。换句话说,不需要额外的描述文件集中数据库来管理自适应。
组件可以由不同的销售商提供。例如,可以基于开源软件(OSS)提供某些组件,而某些其他的组件可以是商用的并且依赖于专利许可。这将进一步使得能够使用OSS来提供应用的无保护部分。
根据本发明的第二方面,提供一种用于对设备进行控制的自组织软件,该自组织软件包括至少两个组件,每个组件包括至少一个用于与其他组件进行连接的接口,其中每个组件包含定义组件规则的信息,根据该组件规则,该组件可以与其他组件进行连接。
根据本发明的第三方面,提供了一种自组织软件的方法,该方法包括:识别至少两个组件,每个组件包括至少一个用于与其他组件连接的接口,获取每个所述组件专用的组件规则,并且基于该组件规则确定每个所述组件可以如何与其他组件进行连接。
可以将软件作为承载和/或存储在数据介质或嵌入在数据信号中的一个或多个计算机产品来提供。该软件也可以由一个或多个设备(分布式模型)主管。
从属权利要求和前述实施例涉及本发明的不同实施例。实施例包含的并涉及本发明特定方面的主题可以在进行必要的修正后应用于本发明的其他方面。
附图说明
现在,通过参考附图的示例方式描述本发明的实施例,其中:
图1a示出了根据本发明实施例设备的框图;
图1b示出了图1a设备所使用软件环境元素细节的框图;
图2示出了根据本发明实施例的分层组件架构模型;
图3示出了组件接口的示例性连接;
图4示出了使用优先级修改组件网络;
图5示出了使用接口属性取代组件属性;
图6示出了双向组件接口;
图7示出了创建演示组;
图8示出了删除独立的演示组件;
图9示出了关于在演示应用中在网格视图和选项卡视图之间进行改变的组件连接重布置;
图10示出了关于在演示应用中激活性能监视器的组件连接重布置;
图11示出了在层级中移动组件群;
图12示出了具有垂直时间线的因果关系图,该图示出了在对演示应用的连接进行重布置时,框架和组件的操作。
具体实施方式
下面将参考附图描述两个示例。这两个示例都作为具有动态装配的组件架构的例子。这两个示例中的任一个可以使用图1a中示出的设备100来执行。
图1a示出了设备100,诸如移动通信设备(MCD),用于动态地运行装配应用,即运行这样的软件,该软件可以自动调整自身以便加载并执行需要的特征,以及在操作期间可以引入新特征或组件。MCD 100包括通信模块110、用于与用户进行数据交换(输入和输出)的用户接口120、为设备100提供电力的电池130、用于存储计算机程序代码141和长期数据142的永久或非易失性存储器140、用于为高速处理缓冲数据的工作存储器150,以及用于执行所存储的计算机程序代码并且从而用于通常控制MCD 100其他部分操作的处理器170。通信模块110一般是无线模块,诸如能够通过蜂窝网络接收和/或发送计算机用户数据并且还可能接收和/或发送程序代码的蜂窝无线网络兼容单元。
图1b示出了图1a的设备所使用软件环境的元素细节框图。这些元素通常由存储在永久存储器140中的计算机程序代码141组成,并且包括运行在彼此顶部的下列主要元素,从底部列举:操作系统1410、诸如Java Runtime Environment(JRE)之类的面向对象平台1411、诸如Fractal组件框架Julia 2.1实现之类的通用组件框架软件1412、自动连接组件所需的动态组件装配框架应用1413和多个软件组件1414,该软件组件1414能够作为在框架应用1413控制下的控制器架构软件上分开的组件实例运行。面向对象平台1411可以是软件系统,该软件系统提供诸如对象创建、对象方法调用之类的对象抽象。
容器包含的多个软件组件通常是所谓的基本组件,即,可以暴露它们的约束以在动态组合中使用的组件。
容器可以通过使用方法调用下面的框架1413或通过指示该框架这么做来重布置包含在组合组件中的其他组件,包括其他组合组件。组合组件管理的组件集合称作组合组件的域。组合组件也能够以与基本组件相同的方式经由框架1413暴露它们的约束(框架能够从组件查询这些约束)。组合组件还能够参与将组件转移进组合组件以及转移出组合组件。
从面向对象程序所公知的是:组件可以作为计算机可执行代码存储在存储器中以用于运行,并且当执行时,该组件占用它们自身的工作存储器150区域(footprint)并且用作程序或组件实例。在此文档中,为了简便起见,组件实例通常称作组件,除非正在讨论的是它们在永久存储器中的物理存储。这里不同实施例的目的是使工作存储器150免受不需要的消耗存储的组件实例的影响。因此,组件销毁以及其他术语旨在描述删除工作存储器150中的组件表示,而组件本身通常保留在永久存储器140中以避免每次需要组件时持续地获取相同的代码。
第一示例
存在运行在MCD 100中的企业库存应用,用于根据情况来基于网络服务器使用或单独使用。库存应用根据应用是否通过高速链接连接到企业网络、通过高速网络连接到公共因特网、通过低速链接连接到企业网络或应用是否根本没有连接到企业网络来进行不同的工作。应用包含连接到数据访问组件的若干用户接口(UI)组件,包括UI容器。UI组件包括总是存在的强制组件,以及仅当应用用于特定某种环境或某些环境中时才存在的辅助UI组件。数据访问组件依靠下列方式中使用的通信信道:
■当应用能够通过高速链接连接到企业网络时,UI容器添加某些组件,诸如产品的图像或库存中的详细产品文档或当前库存水平。由于高速链接,服务器的延迟低并且有可能同步通信,因此数据访问组件直接连接到服务器。数据访问组件使用企业认证组件。从而数据访问组件使用适合企业环境的通信协议,诸如公共对象请求代理架构(CORBA)。应用还自动地以预定间隔将库存信息复制到设备数据库以便断开时使用。
■当应用仅能够连接到公共因特网却没有被认证使用企业服务时,赋予该应用对于公开提供的有限制的库存服务的访问,诸如通过Web服务进行访问。此有限制的库存不允许查询当前库存水平;可用的详细产品文档较少。因此,UI容器使该应用适应于有限制的可用数据,以便移除显示不可用数据的UI组件,并且数据访问组件与支持web服务的数据访问组件交换。还移除复制组件。
■当只有低带宽通信可用时,UI容器将应用恢复成使用在应用主管设备上的本地复制数据库。由于在便携式设备中缺少设备存储器空间,可用的细节甚至更少。相反地,UI包含更少的UI组件并且数据访问组件连接到本地复制数据库。安装了低速复制组件。同时,可以选择不同的通信协议,因为低速载体将从适当地自适应的复制策略中获益。而且,复制不是自动的,因为它是潜在消耗设备全部通信带宽的长期过程。UI容器使用手工发起复制以及在复制过程期间呈现状态指示的组件来更新UI。
■当未连接到网络时,UI容器移除所有复制特征。
图2示出了根据本发明实施例的分层组件模型。图2示出了多个组件,包括分别为第一组合组件和第二组合组件(即,其他组件的容器)的组件C1_1和C2_1,组件C1到C8由容器C1_1和C2_1包含。第一容器包含两个未连接的组件C1和C2,而其他三个组件是连接的(也公知为“装配在一起”)。组件通过接口(aka端口)通信。接口可以是可选的或强制的(参见图3)。测定接口类型,即,仅通用类型的接口是可连接的。仅当组件的所有强制接口都连接到其他组件时,该组件才起作用。在图3中,组件A和B都连接了它们的强制接口并且它们可选接口中的一个也是连接的。组件A具有一个未连接的可选接口,但是由于强制接口是连接的,所以两个组件都起作用。
在明了本发明之后可以认为,组件模型类似于活生物细胞的过程。自管理逻辑发布到根据“基因”创建的组件中。“基因”对应于应该被创建的组件的列表。这些组件的接口类型均被测定,并且如果所有需要的接口都满足,即,如果存在具有正确类型以及一定数量的未连接接口的其他组件,则自动连接组件。未连接组件在系统中自由走动并且存储直到它们的有效期届满。
组件也可以销毁自己。例如,如果特定组件在预定时间内未接收到请求,则它可以销毁自己并且因此潜在地销毁整个组件网络。这样允许清除未使用的功能,以便可以节省存储器。当请求到达时,组件链可以从基因重建。
组件全面控制组件网络:它们可以取消现有的连接并且将它们自己构建到现有组件网络中、它们可以启动“基因”部分的处理或者可以将其他组件释放到系统中,或者它们甚至可以改变基因本身。其结果是:自适应逻辑分布在独立组件中,并且可以仅通过将其他组件注入到系统中或扩展“基因”来轻易地扩展自适应逻辑。
为了控制组件连接,可以将属性分配到组件和组件接口中。属性能够表达规则,比如“该组件仅可以连接到属性a=5的组件”或“该组件绝对不能连接到属性a=5的组件”或“该组件可以连接到属性a设置为任何值的组件”。组件框架可以在组件中使用简单的匹配规则或复杂的匹配规则。
分配给组件接口的属性可以重写分配给该组件的属性。例如,组件属性可以定义该组件绝对不能连接到属性“a”的值为5(a=5)的组件。分配给接口的属性可以重写此规则并且可以表述该接口需要其他组件的各自接口的属性a=5。在此情况中,分配给接口的属性规则优先于分配给组件的属性。图5示出了该效果。
除了用于确定两个组件是否可以连接的属性集合外,还存在另一个属性集合用于确定组件是否可以置于父组件的域中。该属性集合被称作超级属性。组件可以暂时地置于父组件的域中并且然后使其超级属性与父组件的常规属性相比较。如果存在匹配,则组件可以置于该域中并且可以与该域中的组件进行连接。如果不存在匹配,则组件不能置于该域中,并且将放到存储器中至过期或将要从该域中导出。
根据使用此架构的环境,组件可以使用本地方法调用或远程协议以便相互通信。
接口还具有分配给它们的、指示接口连接顺序的优先级。这使得一个组件将自己插入已经连接组件的网络中成为可能。如果现有连接的优先级低于进入组件的接口优先级并且进入组件可以连接到现有组件网络中,则接口连接的最高优先级胜出。因此,进入组件可以替代旧的一个或多个组件并且进入组件可以在旧组件中创建自己(参见图4)。
具有未连接的强制接口的组件还未解析并且存储在分配给所属组件的存储区域中(参见图2)。组件具有使它们可以在存储器中停留的(可能无限的)有效期。如果组件超过了其存储有效期,则销毁它。
应用程序将它的新组件引入到域中。使用框架连接或重连接容器的域,即,框架代表组合组件进行动作。框架连接组件并且将未连接的组件放入属于组合组件的存储器中,使得每个组合组件具有其自己的存储器。
组件具有将新组件引入它们的域的机制。当新组件被引入到组合组件的域中时,解析过程开始。在此过程期间,接口类型、优先级以及存储器中未使用的组件用于创建新的组件网络(其可以与旧的组件网络相同)。在解析过程的最后,建立新组件网络并且将未使用组件放入存储器。
基于导出过滤器和导入过滤器在域中导出和导入组件。导出过滤器对未连接组件存储器中的组件进行操作。将导出过滤器选择的组件从此域的存储器中移除并将其放入父组件的存储器中,然后解析父组件的域。类似地,存在导入列表以选择父组件的未连接组件存储器中的组件,并且将它们导入孩子域中并提示解析。导出过滤器和导入过滤器管理未连接组件在父亲域和孩子域之间的流动。
第二示例
接下来描述称作Dynacomp的模型实现。Dynacomp建立在Fractal框架之上,如由E.Bruneton,T.Coupaye和J.Stefani,Recursive anddynamic software composition with sharing,In Proceedings of the 7thECOOP International Workshop on Component-Oriented Programming(WCOP’02),Malaga(Spain),June 2002所描述的。Dynacomp框架使用扩展了Fractal的组合组件类型和基本组件类型的两类组件。除了Fractal特征之外,Dynacomp组件类型还提供了以下功能。
接下来解释Dynacomp模型中使用的术语,并按照该术语来描述基于Java的用例研究。
约束由独立组件实例提供。因此,组件实例通过这些约束直接控制重连接进程。除了在Fractal框架中已经可用的非常有限的元信息之外,组件还包含其他元信息。在此示例中使用以下元信息。
接口名称:对每个接口进行命名,并且仅可以连接具有相同名称的接口。接口名称约定直接来自于Fractal网络。
接口方向:除了Fractal网络客户端(出去)和服务器(进入)接口外,动态组合框架引入双向接口类型,参见图6。暴露双向接口的组件具有一个客户端接口和一个服务器接口,这两个接口在逻辑上具有相同的名称。由于Fractal限制,实际名称不能相同。一个双向接口仅可以连接到另一个双向接口。双向接口在随机方向上连接,例如,第一组件的客户端接口连接到第二组件的服务器接口。第一组件上的服务器接口和第二组件上的客户端接口未连接。双向接口能够表达相同类型的特定组件实例必须相互连接的声明。在没有提示双向接口的情况下,此声明将在连接图中创建循环,因此,组件网络不能启动。
接口多样性:Fractal制造了单个和集合基数之间的差异。自动组合需要对允许接口连接的更精确描述。Dynacomp采用由H.Cervantes and R.S.Hall,Automating Service Dependency Managementin a Service-Oriented Component Model,ICSE CBSE6 Workshop,2003解释的服务绑定器的基数描述。接口(客户端和服务器二者)的基数可以是一个、一个或多个、零个或一个、零个或多个连接。可以针对客户端接口和服务器接口指定基数。
接口优先级:优先级分配给所有组件接口。倘若存在多个组件接口满足搜索标准时,优先级确定选择哪个组件接口用于连接。添加将要连接的接口的优先级并且选择具有最大总和的接口对用于连接。
组件和接口优先级:与服务绑定器类似,通过匹配组件实例或接口优先级以限制组件实例候选者是可能的。根据开源服务网关倡议(OSGi)服务属性约定,服务绑定器允许属性分配给组件的单独接口。Dynacomp最初将属性分配给组件,分配给接口的属性可以取代该属性。根据非常简单的模式语言来匹配属性。该语言能够描述:其他组件必须具有带有特定值的特定属性(强制属性),其他组件可以具有特定属性并且在此情况中,其值必须与该组件的值相同以匹配(可选属性),以及其他组件不允许具有带有特定值的特定属性(禁止属性)。模式或约束语言在覆盖区与复杂度之间进行了平衡。更复杂的约束语言是有利的,但是耗费更多的存储器以及重连接时间。
超级属性:组件可以具有超级属性,该超级属性确定可以放置该容器的容器组件。仅当组件的超级属性与容器的属性匹配时,才可以将该组件导入容器。匹配规则与组件和接口属性的规则相同。
导出列表和导入列表:容器可以具有控制哪些组件可以离开此容器的域以及哪些组件可以移入此容器的导出列表和导入列表。CHAM,或P.Inverardi,A.L.Wolf,Formal Specification and Analysisof Software Architectures Using the Chemical Abstract Machine Model,IEEE Transactions on Software Engineering,volume 21,no.4,1995具有类似的机制,但是CHAM将其应用于数据项而不是组件。导出列表和导入列表包含接口名称。如果未连接的组件包含具有导出或导入列表上的名称的接口,则可以将其导出到更高级(闭合)域中或者来自于更高级域的组件可以导入该域。仅当组件的超级属性与域的属性匹配时发生该导入。
超时:未连接组件在超时之后“过期”,并且框架将其从存储器中移除。
创建时间:当创建组件时,框架将时间戳放置在组件上。可以使用该时间戳基于组件年龄来实现冲突解决逻辑,例如,如果组件检查到它与域中的某些其他组件冲突,则更年轻的组件可以存活。
创建列表:给每个组件分配创建列表。这个列表是组件名称的列表。列表也可以包含标签。可以认为创建列表是一种关于应当如何通过将组件集合插入到域中来重配置域的情形。当发生特定事件时,事件处理器可以查询创建列表中的特定标签并且创建组件名称在列表中从此标签开始直到下一标签中的所有组件。此活动可以由组件自己完成(使用它自己的创建列表)或通过专门处理其他组件的创建列表的组件来完成。
接口名称、方向、多样性和优先级对于相同类型的每个组件是通用的,而其他元信息可以针对每个组件实例设置。
首先,将组件插入到容器的域中,并且框架对域进行配置。进行这些以便框架启动组件实例。组件根据它们的约束被停止、被连接,连接的组件按照顺序启动并且将未连接组件放入域的存储器中。存储器中的组件可以导出到较高级的域中,导入到该域中的容器的域中,或者如果未连接组件的时间过期则删除它。下面描述确切的算法。出于此描述的目的,已经存在于系统中的组件集合表示为C。要插入的组件表示为ci并且其域是被插入的域的组件表示为cp。c的域中的组件集合表示为child(c),并且c驻留在其中的容器表示为parent(c)。parent(c)理论上是集合但是Dynacomp不支持Fractal特征,Fractal特征是一个组件可以是多个域的部分。在Dynacomp模式中对于任何c∈C,|parent(c)|≡1。
●向重连接过程分配标识号。此重连接ID必须是唯一的(后续重连接过程必须具有不同的ID),以便每个容器可以识别此重连接过程是否访问过它。
●ci作为Fractal级的cp的子组件添加。
●停止每个c|c∈child(cp)并且断开组件的连接。
●cp域中的组件(包括存储器中的组件)被重新连接。当连接接口时,框架考虑接口名称、属性、方向和多样性。注意,为了最小化重连接时间,算法是贪心(greedy)的,其连接具有最高优先级的接口并且不考虑是否可以利用非贪心策略最终连接更多的组件。在连接过程之后,当连接了组件的每个强制接口时,将要解析组件。未解析的组件放入存储器中。
●存储器向下传播,朝向cp的组合子组件。测验每个组合子组件其是否能够导入存储器中的任何组件(存储器中的任何组件具有其名称在组合子组件的导入列表中的接口)以及存储器中组件的超级属性是否与组合子组件的那些属性匹配。如果发现任何组件可以导入到组合子组件中,则在导入后重连接此子组件。作为副作用,组合子组件可以变为已解析的,其需要cp域中的另一个重连接过程。
●针对超时检查存储器中的组件。当组件进入存储器时,设置其超时的基础。此基础时间用于计算超时。如果组件的时间过期,则框架移除该组件。
●如果任何组合子组件变为已解析的,则组件再次断开连接并且发生另一个迭代。注意,这可以是无穷的循环。这被认为是被期望创建可以由此算法解析的组件网络的程序员的失误。
●cp域中的所有组件按顺序启动。计算了在Michael C.McFarland,Tutorial on High-Level Synthesis,25th ACM/IEEE DesignAutomation Conference,1988 IEEE中描述的简单的尽可能快(ASAP)调度,并且具有较低ASAP时间的组件首先启动。在此过程期间,组合子组件递归地启动-当组合子组件启动时,其域中的每个子组件也启动。
●当组件启动时组件网络可能改变。例如,某些组件的startFc()方法可能删除组件本身或者某些其他组件,因此连接的组件可以变为未解析的。如果任何组件在组件网络启动期间变为未解析的,则整个重连接过程重启。
●仍旧在存储器中的组件向上传播,直到parent(cp)。此过程由cp的导出列表、parent(cp)的超级属性以及将要导出的组件的属性来控制。如果导出成功,则从cp域中移除所导出的组件并且将其放置到之后重连接的parent(cp)的域。通过使用重连接ID,框架保证导出的组件在此重连接过程期间将不会再次导入到cp的域中,尽管该再次导入是可能的。这就阻止了在父亲容器和孩子容器之间对组件的“乒乓”操作。
应该理解,算法的优化标准仅接近最优全局组件配置。贪心连接算法将尽其所能多的组件连接到高优先级接口。如果组件可以在域中连接,框架就决不尝试在另一域中连接此组件,尽管组件可以导出或导入到该域并且该另一域中的优先级总和可能更高。组件开发者必须认识到这个事实并且使用组件元信息来创建他们希望的连接。
用例研究:JAVA2D演示
下面,将在熟知的Java2D演示应用上展示动态组合。Java2D是摇摆(Swing)应用,该摇摆应用装载有作为展示标准Java 2D API图形功能的示例程序的每个Sun Java开发工具。Java2D演示以及下面的Java 2D API全部以Java实现,并且演示是高度动态的,其将显著的负载放在垃圾收集器上。堆(heap)所需的存储器不仅是存活对象的大小的总和,而且为了达到真实的性能,需要多若干倍的存储器。Java2D可以包括在组件内,以便用户可以仅实例化需要的服务。未使用的服务将不会被实例化,因此可以节省存储器。示出了发生在所包括的Java2D中的组件实例化和重连接的若干情况,以展示动态组合如何运作这个景象。第一交互允许用户将演示添加到她能够使用的演示集合中(图7)。将演示分为多个演示组,并且一个演示组呈现在一个标签上。Java2D核心应用(主框架和引入)由一个java2d组件实例代表。首先创建演示组。一个演示组由一个组合DemoGroupContainer代表。此组合组件包含一个演示组组件实例(DemoGroupArcsCurves,DGAC)以及零个或多个演示组件实例。最初DemoGroupContainer和DemoGroupArcsCurves创建到java2d所在的同一域中。存在用于该演示组的超级属性以及用于该容器的属性。(demogroup=arcscurves)。这意味着演示组可以仅放置在具有相同demogroup属性的容器中。在创建这两个组件之后,启动重连接。没有一个组件可以被连接,因为容器的内部接口没有连接并且演示组的超级属性与java2d的父亲的属性不匹配,因此将这两个都放入存储器中。然而,容器可以导入带有演示接口的组件,因此将演示组导入该容器并且重连接该容器。这次连接成功,容器的强制内部接口是连接的并且解析了容器。依次地,这触发了java2d级别的重连接,并且java2d和该容器通过它们的演示接口连接。当重启组件时,java2d检查其演示客户端接口的连接矢量并且如果检测到新演示连接,则java2d查询组的名称、创建标签并且在由演示组组件针对该标签创建的Java2D应用的用户接口上将演示组组件所创建的绘画区域添加到为演示组保留的标签上。将演示组件类似地放入演示组。然而,令人感兴趣的是,何时将演示组件从该组移除的交互(图8)。在此情况中,java2d将DemoItemDestructor组件的实例创建到它的域中,并且以这样的方式设置它的属性,销毁器组件将被导入到包含演示组件的DemoGroupContainer中并且销毁器组件将仅连接到将要被移除的演示组件上(demogroup和demoitem属性用于选择容器,然后是演示组件)。销毁器demoitem接口的优先级增加,因此如果销毁器传播到演示组件的域中,它将从演示组组件中“偷取”演示组件。当重启组件时,销毁器销毁演示组件和其自身并触发重连接。其影响是:演示组件不再存在。演示组具有这样的特征:它们能够在同一表面上的格子中显示演示或者在标记的窗格的标签上单独地显示演示。参考图12,当Java2D被组件化时,通过在演示组和演示组件之间插入121 DemoGroupTabbedPane(DGTP)组件实例来重新包括此功能(图9)。DemoGroupTabbedPane具有客户端和服务器demoitem接口,该接口具有比演示组或演示组件任一都高的优先级。DGAC请求122创建DBTP。因此,在演示组重连接之后,客户端接口将连接123到DemoGroupTabbedPane的服务器接口并且所有演示组件将连接到DemoGroupTabbedPane的客户端接口。这允许DemoGroupTabbedPane使用标记的窗格显示和隐藏演示组件。注意,Fractal不允许组件具有相同名称的接口。Dynacomp提供名称修饰(name mangling)以创建逻辑上相同的名称。切换回到格子视图仅需要销毁DemoGroupTabbedPane组件然后重新连接,因为这将把演示组件连接回它们的演示组。通过创建另一个DemoGroupTabbedPane来完成此目标。DGAC请求框架创建另一个DGTB 124,然后将其插入到DemoGroupContainer 125。DemoGroupTabbedPane具有可选的双向标记接口。如果在域中存在一个DemoGroupTabbedPane,则标记接口是未连接的。然而,如果存在另一个DemoGroupTabbedPane,则标记接口是连接的。当DemoGroupTabbedPane启动并且发现126存在另一个连接到其标记接口的组件时,它销毁127该组件以及它自己。在重连接之后,DemoGroupTabbedPane消失并且演示连接128回到它们的演示组。
图10示出了关于演示应用中激活性能监视器的组件连接重布置。Java2D具有性能监视器特征。示范测量了瞬时性能(例如,每秒帧数)并且将此数据发送到显示该数据的性能监视器。通过使用真实实现替换虚拟实现(其仅具有根代码并且不显示任何事物)及其反向来完成使能和禁用性能监视器。开始,MissingperformanceMonitor组件(虚拟实现)被实例化并且被连接。当用户使能性能监视器时,创建PerformanceMonitor的实例。两个性能监视器通过标记接口感觉彼此的存在,如DemoGroupTabbedPane实例在之前的情况中所做的。然而,在此情况中,组件检查通过标记接口连接的组件的创建时间。创建时间由组件框架保留。组件根据哪一个较旧来销毁自己或另一组件。重新连接组件并且新创建的监视器变为可操作。为了展示动态组件在分层组件结构中的能力,将新特征添加到Java2D。此特征允许将当前演示组标签移动到另一个Java2D的主框架。通过在不同的域中实例化另一个java2d实现这个目的(图11)。那个域具有不同的appcontainer属性。通过将未连接的演示组容器移动到此第二域中并且与此第二java2d示例取得连接的方式建立导出过滤器和导入过滤器。为了达到此目的,修改容纳演示组的所有组件(演示组和演示组件)的容器组件的appcontainer超级属性并且请求重新连接就足够了。到组件网络启动时,整个演示组组件集合被移动到第二域中并且连接到第二java2d实例。
实现和结果
测试运行显示确实可能通过仅装载用户使用的特征来节省存储器。测量同样示出了在分层布置中的动态重组合能够为最终用户应用提供低的中断时间。
可以表明,如果用分层配置组件代替“平坦”配置,则连接的数量可以减少,从而重连接算法的执行时间也可以减少。当使用本发明时,连接的数量对于任何非平凡组来说都是较低的(使得组包含不止一个组件并且存在不止一个组)。
本领域的普通技术人员也将理解,本发明的组件架构远比本领域中公知的那些灵活。此灵活性使得组件架构特别地,尽管不是排他地,适合于实现自管理特征,并且在移动应用中更是如此。该架构能够容易地以改进的方式实现众所周知的编程范例,例如该架构提供健壮的事件处理(事件是能够使用其他组件来处理事件的组件)、面向方面的编程(组件解析可以引起系统中的交叉影响)以及基于代理的架构(组件可以用作代理)。
已经描述了本发明的特定实现和实施例。对于本领域的技术人员来说应该清楚本发明不限制于上述实施例的细节,但是在不脱离本发明特点的情况下使用等价装置在其他实施例中可以实现本发明。本发明的范围仅由所附专利权利要求书限制。
Claims (25)
1.一种包括自组织软件的设备,所述自组织软件包括至少两个组件,每个组件包括至少一个用于与其他组件连接的接口,其中每个所述组件包含定义组件规则的信息,根据所述组件规则,该组件可以与其他组件连接。
2.根据权利要求1所述的设备,其中所述组件进一步包含定义接口规则的信息,根据所述接口规则,组件的接口可以与其他组件的接口连接。
3.根据权利要求2所述的设备,其被进一步配置以使所述接口规则取代所述组件规则。
4.根据权利要求2或3所述的设备,其中所述组件规则和/或所述接口规则包含要求满足特定条件的可选规则。
5.根据前述权利要求的任何一项所述的设备,其中每个组件和/或每个接口与给定的优先级相关联,并且配置所述设备以根据这些优先级来连接接口。
6.根据前述权利要求的任何一项所述的设备,每个组件或至少某些所述组件与预定的、可选的独立的有效期相关联,在所述有效期之后删除具有有效期的组件。
7.根据前述权利要求的任何一项所述的设备,其中所述自组织软件是根据分层组件模型组织的。
8.根据前述权利要求的任何一项所述的设备,其中所述组件规则作为元信息存储在所述组件中。
9.根据权利要求8所述的设备,其中所述元信息包括任何以下选项:强制属性,用于定义可以与讨论中的组件连接的另一组件所需的属性及属性的值;条件属性,用于当存在将要与讨论中的组件连接的另一组件时,定义所述另一组件必须具有给定值的属性;以及禁止属性,用于定义绝对不能连接的另一组件的属性值。
10.根据前述权利要求的任何一项所述的设备,其中所述组件包括能够暴露它们的元信息的基本组件。
11.根据前述权利要求的任何一项所述的设备,其中所述组件包括一个或多个组合组件,所述组合组件能够通过安排与其他组件连接来包含其他组件,并且能够根据所述组合组件包含的所述其他组件来暴露元信息。
12.根据权利要求11所述的设备,其中所述组合组件与域存储器相关联,该域存储器用于包含由所述组合组件所包含的组件。
13.一种用于控制设备的自组织软件,包括至少两个组件,每个组件包括至少一个用于与其他组件连接的接口,其中每个所述组件包含定义组件规则的信息,根据所述组件规则,组件可以与其他组件进行连接。
14.根据权利要求13所述的自组织软件,其中所述组件进一步包含定义接口规则的信息,根据所述接口规则,组件的接口可以与其他组件的接口连接。
15.根据权利要求14所述的自组织软件,进一步配置以使所述接口规则取代所述组件规则。
16.根据权利要求13到15中任何一项所述的自组织软件,其中所述组件规则包含要求满足特定条件的可选规则。
17.根据权利要求16所述的自组织软件,其中所述组件规则和/或所述接口规则可以包含要求满足特定条件的可选规则。
18.根据权利要求13到17中任何一项所述的自组织软件,其中每个组件和/或每个接口与给定的权重或优先级相关联,并且配置所述自组织软件以根据这些权重或优先级连接接口。
19.根据权利要求13到18中任何一项所述的自组织软件,每个组件或至少某些所述组件与预定的、可选的独立的有效期相关联,在所述有效期之后删除具有有效期的组件。
20.根据权利要求13到19中任何一项所述的自组织软件,其中所述自组织软件是根据分层组件模型组织的。
21.根据权利要求13到20中任何一项所述的自组织软件,所述自组织软件承载或存储在数据介质或数据信号上。
22.一种自组织软件的方法,包括:识别至少两个组件,每个组件包括至少一个用于与其他组件连接的接口,获取每个所述组件专用的组件规则,并且基于所述规则确定每个所述组件可以如何与其他组件进行连接。
23.根据权利要求22所述的方法,其中所述组件进一步包含定义接口规则的信息,根据所述接口规则,组件的接口可以与其他组件的接口进行连接。
24.根据权利要求23所述的方法,其中所述组件规则和/或所述接口规则可以包含要求满足特定条件的可选规则。
25.根据权利要求22到24中的任何一项所述的方法,其中所述组件包括一个或多个组合组件,所述组合组件能够通过安排与其他组件的连接来包含其他组件,并且能够根据所述组合组件包含的所述其他组件来暴露元信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/211,302 | 2005-08-24 | ||
US11/211,302 US20070050756A1 (en) | 2005-08-24 | 2005-08-24 | Component architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101248416A true CN101248416A (zh) | 2008-08-20 |
Family
ID=37771257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800306523A Pending CN101248416A (zh) | 2005-08-24 | 2006-08-22 | 组件架构 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20070050756A1 (zh) |
EP (1) | EP1934716A4 (zh) |
KR (1) | KR100959173B1 (zh) |
CN (1) | CN101248416A (zh) |
WO (1) | WO2007023210A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102349056A (zh) * | 2009-05-14 | 2012-02-08 | 国际商业机器公司 | 动态组合数据流处理应用程序 |
CN111651190A (zh) * | 2020-04-30 | 2020-09-11 | 北京临近空间飞行器系统工程研究所 | 一种基于多维融合元素的发射控制软件动态装配方法 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239830B2 (en) * | 2006-11-03 | 2012-08-07 | Accenture Global Services Limited | System for portal architecture |
US20080244470A1 (en) * | 2007-03-30 | 2008-10-02 | Motorola, Inc. | Theme records defining desired device characteristics and method of sharing |
US7539796B2 (en) * | 2007-03-30 | 2009-05-26 | Motorola, Inc. | Configuration management of an electronic device wherein a new configuration of the electronic device is selected based on attributes of an application |
US20080237337A1 (en) * | 2007-03-30 | 2008-10-02 | Motorola, Inc. | Stakeholder certificates |
KR100973543B1 (ko) * | 2008-01-15 | 2010-08-02 | 포항공과대학교 산학협력단 | 모바일 응용 애플리케이션의 동적 아키텍처를 모델링하기위한 방법 및 그 장치 |
US8307329B2 (en) * | 2008-02-07 | 2012-11-06 | Microsoft Corporation | Implicit composition of component bindings |
US8108831B2 (en) * | 2008-02-07 | 2012-01-31 | Microsoft Corporation | Iterative component binding |
US8806185B2 (en) * | 2008-05-29 | 2014-08-12 | International Business Machines Corporation | System and method for automatic configuration of portal composite applications |
US8245191B2 (en) * | 2008-07-03 | 2012-08-14 | International Business Machines Corporation | Policy application rules for automated configuration of software components |
CN102834810A (zh) * | 2010-03-30 | 2012-12-19 | 日本电气株式会社 | 程序处理方法、程序处理设备和计算机程序 |
JP5863818B2 (ja) | 2010-11-23 | 2016-02-17 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ソフトウェア製品のあらかじめ必要なソフトウェアをインストールするための方法、システム、およびコンピュータ・プログラム |
US9250985B2 (en) | 2012-03-05 | 2016-02-02 | International Business Machines Corporation | Dynamic user interface aggregation through smart eventing with non-instantiated content |
GB2508160A (en) | 2012-11-21 | 2014-05-28 | Ibm | Avoiding conflicts between computing machines |
CN103152433B (zh) * | 2013-01-14 | 2017-12-05 | 广东电子工业研究院有限公司 | 一种分布式服务端的使用、交互和请求处理方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7249048B1 (en) * | 2000-06-30 | 2007-07-24 | Ncr Corporation | Incorporating predicrive models within interactive business analysis processes |
US6954758B1 (en) * | 2000-06-30 | 2005-10-11 | Ncr Corporation | Building predictive models within interactive business analysis processes |
US7246104B2 (en) * | 2001-03-21 | 2007-07-17 | Nokia Corporation | Method and apparatus for information delivery with archive containing metadata in predetermined language and semantics |
US7200627B2 (en) * | 2001-03-21 | 2007-04-03 | Nokia Corporation | Method and apparatus for generating a directory structure |
US7483986B2 (en) * | 2003-12-03 | 2009-01-27 | International Business Machines Corporation | Dynamically tuning networks of relationships in self-organizing multi-agent systems |
-
2005
- 2005-08-24 US US11/211,302 patent/US20070050756A1/en not_active Abandoned
-
2006
- 2006-08-22 EP EP06778546A patent/EP1934716A4/en not_active Withdrawn
- 2006-08-22 CN CNA2006800306523A patent/CN101248416A/zh active Pending
- 2006-08-22 KR KR1020087003970A patent/KR100959173B1/ko not_active IP Right Cessation
- 2006-08-22 WO PCT/FI2006/050363 patent/WO2007023210A1/en active Application Filing
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102349056A (zh) * | 2009-05-14 | 2012-02-08 | 国际商业机器公司 | 动态组合数据流处理应用程序 |
CN102349056B (zh) * | 2009-05-14 | 2014-07-16 | 国际商业机器公司 | 动态组合数据流处理应用程序 |
CN111651190A (zh) * | 2020-04-30 | 2020-09-11 | 北京临近空间飞行器系统工程研究所 | 一种基于多维融合元素的发射控制软件动态装配方法 |
CN111651190B (zh) * | 2020-04-30 | 2023-03-07 | 北京临近空间飞行器系统工程研究所 | 一种基于多维融合元素的发射控制软件动态装配方法 |
Also Published As
Publication number | Publication date |
---|---|
US20070050756A1 (en) | 2007-03-01 |
WO2007023210A1 (en) | 2007-03-01 |
KR100959173B1 (ko) | 2010-05-24 |
EP1934716A4 (en) | 2009-12-16 |
KR20080038350A (ko) | 2008-05-06 |
EP1934716A1 (en) | 2008-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101248416A (zh) | 组件架构 | |
CN100418057C (zh) | 用于应用程序分布式管理的启用网格的虚拟机的方法和系统 | |
Grimshaw et al. | Wide area computing: resource sharing on a large scale | |
CN1906580B (zh) | 对于具有可移动对象的启用网格的虚拟机的方法和系统 | |
CN101198947B (zh) | 对web服务第三方扩展的安全且稳定的主存 | |
CN105024865B (zh) | 云联合即服务 | |
CN101374146B (zh) | 对物理计算机系统的虚拟表示的按需访问 | |
US20040176968A1 (en) | Systems and methods for dynamically configuring business processes | |
CN106462467A (zh) | 在不同分布式网络上针对消费服务的集成api和ui | |
CN105094997B (zh) | 一种云计算主机节点间物理内存共享方法和系统 | |
US20050289388A1 (en) | Dynamic cluster configuration in an on-demand environment | |
CN104067257A (zh) | 自动化事件管理 | |
CN101276271A (zh) | 一种面向切面编程的拦截器系统及方法 | |
CN102202078A (zh) | 用于远程呈现会话服务器场的集中式管理工具 | |
CN103473696A (zh) | 一种收集、分析和分发网络商业信息的方法和系统 | |
CN101946258A (zh) | 基于计算机的业务过程在专用硬件上的基于模型的部署 | |
AU2012228693A1 (en) | Method and system for synchronization mechanism on multi-server reservation system | |
TW201229795A (en) | Web service patterns for globally distributed service fabric | |
US20090037902A1 (en) | Transitioning From Static To Dynamic Cluster Management | |
US20210149723A1 (en) | Method and apparatus for microservice architecture reconfiguration | |
Xiong et al. | Challenges for building a cloud native scalable and trustable multi-tenant AIoT platform | |
US20090254552A1 (en) | Highly available large scale network and internet systems | |
US8903889B2 (en) | Method, system and article for mobile metadata software agent in a data-centric computing environment | |
CN114638017A (zh) | 一种隐私计算算法跨平台系统及迁移方法 | |
Oliveira et al. | Component framework infrastructure for virtual environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080820 |