CN101311903A - 对基于组件的软件系统中的组件进行重用的方法和装置 - Google Patents
对基于组件的软件系统中的组件进行重用的方法和装置 Download PDFInfo
- Publication number
- CN101311903A CN101311903A CNA2007101048525A CN200710104852A CN101311903A CN 101311903 A CN101311903 A CN 101311903A CN A2007101048525 A CNA2007101048525 A CN A2007101048525A CN 200710104852 A CN200710104852 A CN 200710104852A CN 101311903 A CN101311903 A CN 101311903A
- Authority
- CN
- China
- Prior art keywords
- assembly
- software systems
- proxy server
- running environment
- 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.)
- Granted
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/547—Remote procedure calls [RPC]; Web services
-
- 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
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
技术领域
本发明涉及基于组件的软件系统,尤其涉及对基于组件的软件系统中的组件重用的方法和装置。
背景技术
在传统的基于组件的软件系统中,例如在由Java企业柄(Enterprise Java Bean,EJB)、组件对象模型(Component ObjectModel,COM)、公共对象请求代理架构(Common Object RequestBroker Architecture,CORBA)等实现的软件系统中,组件的功能是通过接口来体现的,同时组件间的调用依赖关系包含在组件代码的实现中。例如,组件A可能在表1中示出的如下代码实现中包含对于组件B和组件C的调用依赖关系。
表1
组件A的代码 |
...b=ServiceManager.locateService(“B”);b.x();...c=ServiceManager.locateService(“C”);c.y();... |
新兴的面向服务组件模型,例如服务组件架构(ServiceComponent Architecture,SCA),将面向服务的概念引入了组件模型和执行环境。例如,在SCA组合模型中包括一系列在实现和/或使用服务的服务组件方面定义SCA系统的配置的工件(artifact)以及描述它们如何链接在一起的连接(连线)和相关工件。此外,SCA旨在包括用于服务组件的和用于连接它们的访问方法的广泛的技术。服务组件提供给其它服务的用于调用其自身的入口称为“接口”,而服务组件本身可能也需要调用别的服务,这个调用出口称为“引用”。
与传统的基于组件的软件系统相比较,基于SCA的软件系统将组件间的调用依赖关系进行了外部化,属于依赖关系外部化软件系统。换句话说,在依赖关系外部化软件系统中,组件之间的调用依赖关系(例如,SCA的“接口”和“引用”)是独立于组件的具体代码实现的(例如通过可扩展标记语言(XML)文档的形式)。因此,例如在基于SCA的软件系统中,组件A所需要的服务可以由暴露其服务的任何组件B来提供。因此,组件A的代码实现中可以不用附加代码而与组件B链接在一起。
从一个角度而言,如果可以将由传统组件技术实现的组件“SCA化”,那么可以不使用附加代码而将这些“SCA化”的组件与其他SCA组件组合在一起,由此实现对由传统组件技术实现的组件的重用。而且,通过“SCA化”这些组件也可以受益于基于SCA的软件系统的管理能力,例如监控、日志管理等。
因此,广义而言,存在这样的需求使得现有基于组件的系统能够被高级的基于面向服务组件模型的应用所包含,即使得现有遗存系统适于与新技术和平台进行集成。一种解决方案是根据由将被集成的应用所遵循的高级规范或标准,用明确定义的接口包装现有遗存系统。公开号为US 2003/0055921的美国专利申请是这种解决方案的一个示例。在该发明中,将整个面向对象的应用包装为对象facade,通过可以为任何标准中间件的连通总线与相对集成的基于组件的应用中的新组件进行通信。另一种解决方案是在遗存系统与利用高级技术的应用之间添加轻量代理。代理在不同协议之间起调解作用,其不强制任何一个对等方服从任何其它方。作为示例,美国专利申请公开号为US 2006/0041862的美国专利申请开发了一种API库,用于允许遗存系统与Web服务之间的通信,遗存系统需要使用这些API以便与新系统进行集成;公开号为US 2004/0054812的美国专利申请集中于遗存系统与其它高级应用之间的数据集成。
但是,上述这两种集成方案不能避免修改传统系统的原始源代码。
此外,遗存系统的用户为了体验由新技术带来的先进特性通常还期望将遗存系统移植到新平台上(例如从Windows操作系统到Linux操作系统;从独立Web服务器到J2EE应用服务器)或利用更高级的技术(例如,从过程化范例到面向对象范例)。理解和转换原始遗存系统以及重新部署新移植的系统不仅是消耗时间的,而且是易出错的,这主要是因为执行移植工作的软件工程师并不一定是原始开发者。为了便于遗存系统的转换,投入了大量文献努力并进行了大量实践,用来分析和发现其相应高级设计来指导源代码转换。
针对这个问题,一种解决方案集中于源代码和文件编制本身并采用静态分析技术来概括目标系统的高级设计。在公开号为US6,847,981的美国专利申请中,分析Servlet代码以提取Web UI信息、商业逻辑/Java类信息和SQL信息。对该提取的信息进行合成通过EJB组件生成器来生成EJB代码,以将纯Web应用转换为J2EE基于组件的应用。在公开号为US 2005/0144226的美国专利申请中从现有客户端/服务器应用通过将它们分解成单独的用户接口、商业逻辑和事件管理层来生成用于面向服务的架构的开放可重用、商业组件。不同层被包装为服务并被重组为基于开放标准的应用。公开号为US2005/0138603的美国专利申请提出用于将遗存系统移植到基于组件的应用的移植过程和对于每个步骤的工作产品,但该发明的关键步骤仍然涉及分析源代码、对组件进行挖掘以及将原始源代码转换为组件程序。另一种解决方案涉及各种用于轮廓化、测试和观察系统的行为的方法,包括实际执行和检验执行跟踪。尽管这种方案提高了对遗存系统转换的效率,但是难以避免对源代码转换的集中手动工作。
可见,以现有技术实现基于组件的软件系统中的组件重用的方案均需要改变组件内部代码实现。
发明内容
为了克服现有技术中存在的局限性,本发明提供了一种无需修改组件实现,而是利用组件依赖关系外部化的方式实现基于组件的软件系统中组件的重用的技术方案。
根据本发明的一方面,提供一种组件重用的方法,用于将第一软件系统中的所选第一组件重用于第二软件系统,其中第一软件系统为运行于第一运行环境的基于组件的软件系统,并且第二软件系统为运行于第二运行环境的依赖外化的软件系统。该方法包括以下步骤:分析第一软件系统,确定在第一软件系统中第一组件的依赖关系并且获取相关接口信息;利用依赖关系和接口信息生成将分别部署在第一运行环境和第二软件系统中的代理器,其中代理器允许第二软件系统调用第一运行环境中的第一组件所提供的服务,并且允许第一组件调用第二软件系统中的相关服务。
根据本发明的另一方面,提供一种支持组件重用的系统。该系统包括:组件选择装置,用于从第一软件系统中选择需要在第二软件系统中重用的第一组件,第一软件系统为运行于第一运行环境的基于组件的软件系统,并且第二软件系统为运行于第二运行环境的依赖外化的软件系统;分析装置,用于对第一软件系统进行分析,确定在第一软件系统中第一组件的依赖关系并且获取相关接口信息;生成装置,用于利用依赖关系和接口信息生成将分别部署在第一运行环境和第二软件系统中的代理器,代理器允许第二软件系统调用第一运行环境中的第一组件所提供的服务,并且允许第一组件调用第二软件系统中的相关服务。
根据本发明的另一方面,提供一种计算机程序产品,用于将第一软件系统中的所选第一组件重用于第二软件系统,其中第一软件系统为运行于第一运行环境的基于组件的软件系统,并且第二软件系统为运行于第二运行环境的依赖外化的软件系统。该计算机程序产品被配置于执行根据本发明的方法。
因此,根据本发明的技术方案无需关心组件化过程,为最终用户带来充分的灵活性以便选择任何可能的候选组件来提供服务。通过确定组件引用接口和并且将对这些接口的调用重新定向到相应代理器,将需要重用的组件的依赖关系外部化,从而可为诸如基于SCA系统的依赖关系外部化系统进行重用。而且,更加有利地是根据本发明的技术方案避免了对传统基于组件软件系统中原始源代码的修改。
结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。
附图说明
为了对本发明实施例的特征和优点进行详细说明,将参照以下附图。如果可能的话,在附图和描述中使用相同或者类似的参考标号以指代相同或者类似的部分。附图中:
图1是根据本发明实施方式的对基于组件的软件系统中的组件重用的方法的处理流程图;
图2示意性示出了根据本发明一个实施方式的用于对基于组件的软件系统中的组件重用的系统架构图;
图3a-图3c示出了根据本发明实施方式在第一软件系统中选择一个第一组件以便在第二软件系统中进行重用的示例;
图4a-图4c示出了根据本发明实施方式在第一软件系统中选择多个第一组件以便在第二软件系统中进行重用的示例;
图5示意性的示出了根据本发明一个实施例的四种适配器;以及
图6示意性示出了可以实现根据本发明的实施例的计算设备。
具体实施方式
以下根据附图对本发明进行说明。
图1示出根据本发明一个实施方式的对基于组件的软件系统中的组件重用的方法的处理流程图,其中将第一软件系统的组件重用于第二软件系统。
如图1所示,在步骤S100中,该处理开始。
在步骤S102中,在第一软件系统中选择需要在第二软件系统中进行重用的第一组件。在一个示例中,第一软件系统例如前所述的传统基于组件的软件系统,并且其运行环境为第一运行环境;第二软件系统是例如基于SCA的软件系统的依赖关系外化的软件系统,并且其运行环境为第二运行环境。用户可以根据需要来选择需要在第二软件系统进行重用的组件作为第一组件,可以选择单个组件,可以选择多个组件。
在步骤S104中,分析第一软件系统中第一组件的依赖关系,确定第一组件中各个组件所依赖的组件,将这些依赖的组件记为第二组件。并且,至少获取以下接口信息:用于调用第一组件的接口的信息、第一组件所引用的接口的信息。
在步骤S106中,依据所获得的信息生成与第一组件相关联的用于第二运行环境的第一代理器,生成与第一组件相关联的用于第一运行环境的第二代理器,并且生成与第二组件相关联的用于第一运行环境的第三代理器。
第一代理器是在第二软件系统中重用组件(第一组件)的代理器。在第二软件系统中对该重用组件进行调用时,第一代理器能够接收调用请求,并且将该调用请求进行协议转换后重新定向到第一运行环境中的第二代理器。第二代理器是重用组件(即第一组件)在第一运行环境中的代理器。第二代理器通过协议转换将接收到的调用请求转发给第一组件中的相应组件,以便在第二运行环境中执行该组件。第三代理器是重用组件所依赖的组件,即第二组件在第一运行环境中的代理器。在第一组件执行期间,如果该第一组件需要调用其它的组件,也即该第一组件依赖于第二组件,则由对应的第三代理器接收该调用的请求,并通过协议转换将该请求转发给第二软件系统中的第一代理器。第一代理器通过协议转换将该调用请求转发给在第二软件系统中对应于第二组件的相应组件。
在步骤S108中,分别在第一运行环境中和第二运行环境中相应地部署需要重用的第一组件和各个代理器。例如,可以对第一组件和生成的各个代理器进行打包封装,然后在第一运行环境中和第二运行环境中对封装包进行相应的部署,从而实现对所选的第一组件的重用。
在步骤S110中,该处理结束。
可以理解,图1中各个步骤的执行顺序可以与上述描述有所不同,例如可以先针对第一软件系统内的组件进行分析,分析出其中部分或全部组件的依赖性和接口(步骤S104),然后再选择需要进行重用的第一组件(S102)。优选地,可以将分析出的依赖关系以图形化的方式可视地呈现给用户,以便用户直观地选择第一组件,并且了解所选第一组件所依赖的第二组件。
图2示意性示出了根据本发明一个实施方式的用于对基于组件的软件系统中的组件重用的系统架构图。
其中,参考标号200表示根据本发明一个实施例的系统,用于实现对基于组件的软件系统中的组件重用;参考标号202表示组件选择装置,用于对第一软件系统中需要进行重用的组件进行选择;参考标号204表示分析装置,用于对第一软件系统中的组件进行分析以获得相关信息;参考标号206表示代理器生成装置,用于生成在第二软件系统中重用第一软件系统的组件所需的各个代理器;以及参考标号208表示包封装装置,用于对重用组件和生成代理器进行包封装以便后续将其在相应的第一、第二运行环境中进行部署。
如图2所示,用户可以通过组件选择装置202从诸如传统基于组件的系统的第一软件系统中选择需要进行重用的组件作为第一组件。本领域技术人员应该理解,可以选择一个或多个组件作为第一组件。组件选择装置202例如可以具有友好的用户接口,向用户可视化地提供第一软件系统中组件的信息,并且用户可以使用该用户接口来选择第一软件系统中需要重用的组件,即第一组件。
组件分析装置204用于对第一软件系统中的组件进行分析以获得相关信息。组件分析装置204可以分析组件间的依赖关系以便确定所选的第一组件所依赖的组件,即第二组件。作为组件分析装置204所需的信息输入,可以通过多种方式获取第一软件系统的组件间的依赖关系和组件的接口。例如,一种可能方式是跟踪方法。其中输入用于使用第一软件系统的多个场景;由场景执行引擎在第一软件系统对这些场景进行解析和执行;通过执行,交互跟踪器(可以基于现有产品建立,例如Tivoli)将负责捕获第一软件系统组件间的所有交互数据;依赖性分析器接着对交互数据进行分析并生成指示第一软件系统组件间依赖关系的数据,该数据至少表示:a)一组具有组件接口定义的组件;以及b)一组主要表示组件间调用关系的依赖关系。当然,可以理解另一种更为直接的方式就是直接获得有关第一软件系统的设计文档,这样无需执行复杂的分析步骤即可获得有关第一软件系统中各个组件的接口以及组件间依赖关系的信息。
代理器生成装置206依据组件选择装置202所提供的关于第一组件的信息以及组件分析装置204所提供的关于第二组件的信息自动生成在第二软件系统中重用第一组件所需的各个代理器。这些代理器将与第一软件系统的第一运行环境的中的各个组件以及第二软件系统的第二运行环境中的各个组件相结合,从而实现在第二软件系统中对第一组件的重用。更具体地,代理器生成装置206生成与第一组件相关联的用于第二运行环境的第一代理器,生成与第一组件集合相关联的用于第一运行环境的第二代理器,并且生成与第二组件相关联的用于第一运行环境的第三代理器。其中,第二代理器允许对重用的第一组件进行调用,其名称可以与第一组件的名称相同或不同;以及第三代理器是代表各个第二组件的代理器,其名称需要与相应的第二组件的名称相同;第一代理器具有与第一组件的相同接口,该接口能够将所有对于第一组件的调用重新定向到第一组件的第二代理器,而且第一代理器具有可以由第三代理器(如果存在的话)调用的接口,该接口可以将第三代理器的调用重新定向到其他第二软件系统的组件,以将其作为引用的服务。
可选地,包封装装置208例如将原始组件、所生成的各个代理器作为输入,并生成两个输出:组合包,包括将被部署到第二运行环境的第一代理器,其可用于第二软件系统中的各个组件进行配合;以及将被部署到第一运行环境的部署包,包括第一组件和第二、第三代理器。
下面结合具体的示例描述根据本发明如何在第二软件系统中对第一软件系统中的所选组件进行重用。
图3a-图3c示出了根据本发明实施方式在第一软件系统中选择一个第一组件以便在第二软件系统中进行重用的示例。其中,图3a示意性示出第一软件系统的示例;图3b标识出所选第一组件以及其所依赖的第二组件;图3c示意性示出第二软件系统对第一组件进行重用的过程。
如图3a所示,例如传统基于组件的系统的第一软件系统包括四个组件:组件A、组件B、组件C、组件D。其中,组件D调用组件A,并且组件A调用组件B和C。
若选择将要在诸如依赖外化的基于SCA的软件系统的第二软件系统中对图3a所示第一软件系统中的组件A进行重用,即组件A为第一组件,则需要分析组件A的依赖关系。如图3b中箭头所示,组件D依赖于组件A,组件A依赖于组件B和组件C,所以可以确定针对组件A的所依赖组件为组件B和组件C,即组件B和C为第二组件。
根据上文说述,为组件A生成第一代理器A’和第二代理器A(图3c左侧虚框表示在第一运行环境中的代理器),并且分别为组件B和组件C生成第三代理器B和第三代理器C,如图3c所示,将各个生成的代理器部署在诸如EJB的第一运行环境和诸如SCA运行时间的第二运行环境中。在第一运行环境中,第二代理器A提供第二软件系统可访问协议接口,并代理对第一运行环境中的组件A的调用。具体地,第二代理器A将第二软件系统可访问协议调用通过协议转换转换为第一运行环境中的调用并转发至组件A的接口,从而调用实现所需功能的组件A。第三代理器B和第三代理器C的接口和名称分别与在原第一软件系统中的组件B和组件C相同。第三代理器B和第三代理器C所提供的接口用以接收来自组件A的调用,并将该调用通过协议转换转换为第二软件系统可访问协议调用,以便转发至部署在第二软件系统中的第一代理器A’。第一代理器A’实际上可以认为是第二软件系统的组件,例如SCA组件。第一代理器A’一方面作为第二软件系统中对所选第一组件进行调用的接口来提供服务,另一方面还作为第一运行环境中与第二组件对应的第三代理器的接口来要求服务。具体地,在第二软件系统中,第一代理器A’从其他第二软件系统组件,例如组件E接收第二软件系统可访问协议调用并将该调用重新定向至第一运行环境中的第二代理器A,并且当组件A在执行中需要对组件B和组件C进行调用时,其还从分别代替组件B和组件C的第三代理器B和第三代理器C接收所转换的第二软件系统可访问协议调用并将它们重新定向至第二软件系统的组件,例如在该示例中为组件F和组件G。通常地,第二软件系统的组件F和组件G的功能分别和第一软件系统的组件B和组件C类似,其能够为组件A提供所依赖的服务。
由此,包括组件A、第一代理器A’,第二代理器A以及第三代理器B和第三代理器C的组可以实现在第二软件系统中对组件A的重用而无需附加代码或者修改组件A的代码实现。
图4a-图4c示出了根据本发明实施方式在第一软件系统中选择多个第一组件以便在第二软件系统中进行重用的示例。其中,图4a示意性示出第一软件系统的示例;图4b标识出所选多个第一组件以及其所依赖的第二组件;图4c示意性示出第二软件系统对多个第一组件进行重用的过程。
如图4a所示,例如为传统基于组件的系统的第一软件系统包括五个组件:组件A、组件B、组件C、组件D和组件E。其中,组件E调用组件A和组件B,并且组件A调用组件C,组件B调用组件D。
若选择将要在诸如依赖外化的基于SCA的软件系统的第二软件系统中对图4a所示第一软件系统中的组件A和组件B进行重用,即组件A和组件B为第一组件,则需要分析组件A和组件B的依赖关系。如图4b中箭头所示,组件E依赖于组件A和组件B,组件A依赖于组件C,组件B依赖于组件D,所以可以确定针对组件A和组件B的所依赖组件为组件C和组件D,即组件C和D为第二组件。
根据上文所述,为组件A和B生成第一代理器A&B’和第二代理器A&B,并且分别为组件C和组件D生成第三代理器C和第三代理器D(图4c左侧虚框表示在第一运行环境中的代理器)。如图4c所示,将各个生成的代理器部署在诸如EJB的第一运行环境和诸如SCA运行时间的第二运行环境中。在第一运行环境中,第二代理器A&B提供第二软件系统可访问协议接口,并代理对第一运行环境中的组件A和组件B的调用。具体地,第二代理器A&B将第二软件系统可访问协议调用通过协议转换为第一运行环境中的调用并分别转发至组件A和组件B的接口,从而调用实现所需功能的组件A和组件B。第三代理器C和第三代理器D的接口和名称分别与在原第一软件系统中的组件C和组件D相同。第三代理器C和第三代理器D所提供的接口用以接收来自组件A的调用,并将该调用通过协议转换为第二软件系统可访问协议调用,以便转发至部署在第二软件系统中的第一代理器A&B’。第一代理器A&B’实际上可以认为是第二软件系统的组件,例如SCA组件。第一代理器A&B’一方面作为第二软件系统中对所选第一组件进行调用的接口来提供服务,另一方面还作为第一运行环境中与第二组件对应的第三代理器的接口来要求服务。具体地,在第二软件系统中,第一代理器A&B’从其他第二软件系统组件,例如组件E接收对于组件A和组件B的第二软件系统可访问协议调用并将该调用重新定向至第一运行环境中的第二代理器A&B,并且当组件A和组件B在执行中需要分别对组件C和组件D进行调用时,其还从分别代替组件B和组件C的第三代理器C和第三代理器D接收所转换的第二软件系统可访问协议调用并将它们重新定向至第二软件系统的组件,例如在该示例中为组件F和组件G。通常地,第二软件系统的组件F和组件G的功能分别和第一软件系统的组件C和组件D类似,其能够分别为组件A和组件B提供所依赖的服务。
由此,包括组件A和组件B、第一代理器A&B’、第二代理器A&B以及第三代理器C和第三代理器D的组可以实现在第二软件系统中对组件A和组件B的重用而无需附加代码或者修改组件A或者组件B的代码实现。
通过上述的具体示例可以理解,当选择了多个第一组件时仅需要在第一代理器和第二代理器中增加与之相关联的接口即可实现。实际上,根据本发明,如何选择第一软件系统中的第一组件不对本发明构成限制。
在上述所描述的各种示例,所选择的第一软件系统中的第一组件均存在其所依赖的第二组件。实际上更为简单的情况是,在第一软件系统中所选的第一组件不存在所依赖的第二组件。本领域的技术人员可以理解,针对这种情况,上述第三代理器仅提供重新定向到所述第二软件系统的第一代理器的接口,并且代理器和组件间的调用过程与上文所描述的过程类似。
为了实现本发明的解决方案,需要调用第一组件的接口的信息以及第一组件所引用的接口的信息。这些接口信息可以通过上述分析步骤获得。并且还需要在第一代理器与相关代理器(第二和第三代理器)之间的通用调用机制。例如在第一软件系统为EJB系统而第二软件系统为基于SCA的软件系统,则可以利用Web service来实现上述通用调用机制,也即作为第一软件系统和第二软件系统协议转换的中介。根据这些接口和通用调用机制,可以生成相关代理器。通过上面的描述,根据本发明的各种代理器均包括调用转换的适配器,正如在图3c和图4c中各个代理器中圆形标记所示。各个适配器用于接收一种类型的调用并且通过协议转换将其转换为至另一种类型的调用,然后进行转发。根据本发明一个实施方式,在第一软件系统为EJB系统而第二软件系统为基于SCA的软件系统的情况下,可能需要应用到四种类型的适配器,如图5所示。根据该实施方式,第二代理器包括将Web service调用转换为EJB调用的适配器(适配器a);第三代理器包括将EJB调用转换为Web service的适配器(适配器b);以及第一代理器一方面包括将SCA支持的调用转换为Web service调用的适配器(适配器c),另一方面包括将Webservice调用转化到SCA支持的调用的适配器(适配器d)。
生成适配器所需的输入如下:接口定义;左侧调用机制;右侧调用机制。
利用第二代理器所包括的适配器a(Web service->EJB)作为示例来说明如何实现适配器。
根据所获得的接口定义信息并遵循左侧调用机制生成代码框架。在本实例中,需要生成Web service框架。有许多现有工具可以运用。
Public class orderService{
Public String createOrder(String order_in){
}
}
在每个操作中,遵循在右侧的调用机制来定位组件并调用相应方法。在本实例中,使用EJB的JNDI名称来定位EJB,然后调用相应方法。
Public class orderService{
Public String createOrder(String order_in){
String confirm_out;
InitialContext ic=new InitialContext();
orderLocalHome oih=(OrderLocalHome)ic.lookup(″java:comp/env/EJB/order″);
OrderLocal order=oih.create();
confirm_out=order.createOrder(order_in)
return confirm_out;
}
}
图6示意性示出了可以实现根据本发明的实施例的计算设备。
图6中所示的计算机系统包括CPU(中央处理单元)601、RAM(随机存取存储器)602、ROM(只读存储器)603、系统总线604,硬盘控制器605、键盘控制器606、串行接口控制器607、并行接口控制器608、显示器控制器609、硬盘610、键盘611、串行外部设备612、并行外部设备613和显示器614。在这些部件中,与系统总线604相连的有CPU 601、RAM 602、ROM 603、硬盘控制器605、键盘控制器606,串行接口控制器607,并行接口控制器608和显示器控制器609。硬盘610与硬盘控制器605相连,键盘611与键盘控制器606相连,串行外部设备612与串行接口控制器607相连,并行外部设备613与并行接口控制器608相连,以及显示器614与显示器控制器609相连。
图6中每个部件的功能在本技术领域内都是众所周知的,并且图6所示的结构也是常规的。这种结构不仅用于个人计算机,而且用于手持设备,如Palm PC、PDA(个人数据助理)、移动电话等等。在不同的应用中,例如用于实现包含有根据本发明的客户端模块的用户终端或者包含有根据本发明的网络应用服务器的服务器主机时,可以向图6中所示的结构添加某些部件,或者图6中的某些部件可以被省略。图6中所示的整个系统由通常作为软件存储在硬盘610中、或者存储在EPROM或者其它非易失性存储器中的计算机可读指令控制。软件也可从网络(图中未示出)下载。或者存储在硬盘610中,或者从网络下载的软件可被加载到RAM 602中,并由CPU601执行,以便完成由软件确定的功能。
尽管图6中描述的计算机系统能够支持根据本发明的提供网络内容以供脱机使用的方案,但是该计算机系统只是计算机系统的一个例子。本领域的熟练技术人员可以理解,许多其它计算机系统设计也能实现本发明的实施例。
本发明还可以实现为例如由图6所示计算机系统所使用的计算机程序产品,其可以包含有用于实现根据本发明的提供网络内容以供脱机使用的网络应用服务器的代码;其还可以包含有用于实现根据本发明的用于获取网络内容以供脱机使用的客户端模块的代码。在使用之前,可以把代码存储在其它计算机系统的存储器中,例如,存储在硬盘或诸如光盘或软盘的可移动的存储器中,或者经由因特网或其它计算机网络进行下载。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在所附权利要求的范围内做出各种变形或修改。
Claims (17)
1.一种组件重用的方法,用于将第一软件系统中的所选第一组件重用于第二软件系统,其中所述第一软件系统为运行于第一运行环境的基于组件的软件系统,并且所述第二软件系统为运行于第二运行环境的依赖外化的软件系统,该方法包括以下步骤:
分析所述第一软件系统,确定在所述第一软件系统中所述第一组件的依赖关系并且获取相关接口信息;
利用所述依赖关系和接口信息生成将分别部署在所述第一运行环境和所述第二软件系统中的代理器,
其中所述代理器允许所述第二软件系统调用所述第一运行环境中的所述第一组件所提供的服务,并且允许所述第一组件调用所述第二软件系统中的相关服务。
2.根据权利要求1所述的方法,还包括以下步骤:
确定在所述第一软件系统中所述第一组件依赖的第二组件,并且获取调用所述第一组件的接口的信息、以及所述第一组件所引用的接口的信息。
3.根据权利要求2所述的方法,还包括以下步骤:
生成与所述第一组件相关联的将部署于所述第二运行环境的第一代理器、与所述第一组件相关联的将部署于所述第一运行环境的第二代理器、以及与所述第二组件相关联的用于所述第一运行环境的第三代理器,
其中,所述第一代理器允许将来自所述第二软件系统中对所述第一组件的调用重新定向到所述第二代理器,所述第二代理器允许对所述第一组件进行调用,并且所述第三代理允许将来自所述第一组件的调用重新定向到所述第一代理器,以便由所述第一代理器重新定向到所述第二软件系统的相应组件。
4.根据权利要求3所述的方法,还包括以下步骤:
对所述第一组件、所述第一代理器、第二代理器以及第三代理器进行包封装生成用于部署的封装包。
5.根据权利要求1-4中任何权利要求所述的方法,其中所述第二软件系统为基于服务组件架构的软件系统。
6.根据权利要求1-5中任何权利要求所述的方法,其中所述第一运行环境为Java企业柄运行环境,并且所述第二运行环境为服务组件架构运行时间的运行环境。
7.根据权利要求6所述的方法,包括以下步骤:
生成所述第一代理器所包括的将服务组件架构支持的调用转换为Web service调用的适配器,以及将Web service调用转换为服务组件架构支持的调用的适配器;
生成所述第二代理器所包括的将Web service调用转换为Java企业柄调用的适配器;以及
生成所述第三代理器所包括的将Java企业柄调用转换为Webservice调用的适配器。
8.根据权利要求1-7中任一权利要求所述的方法,其中:
所述第一组件包括所述第一软件系统中组件的任何所选组件的集合。
9.一种支持组件重用的系统,包括:
组件选择装置,用于从第一软件系统中选择需要在第二软件系统中重用的第一组件,所述第一软件系统为运行于第一运行环境的基于组件的软件系统,并且所述第二软件系统为运行于第二运行环境的依赖外化的软件系统;
分析装置,用于对所述第一软件系统进行分析,确定在所述第一软件系统中所述第一组件的依赖关系并且获取相关接口信息;
生成装置,用于利用所述依赖关系和接口信息生成将分别部署在所述第一运行环境和所述第二软件系统中的代理器,所述代理器允许所述第二软件系统调用所述第一运行环境中的所述第一组件所提供的服务,并且允许所述第一组件调用所述第二软件系统中的相关服务。
10.根据权利要求9所述的系统,其中:
所述分析装置还用于确定在所述第一软件系统中所述第一组件依赖的第二组件,并且获取调用所述第一组件的接口的信息、以及所述第一组件所引用的接口的信息。
11.根据权利要求10所述的系统,其中:
所述生成装置还用于生成与所述第一组件相关联的将部署于所述第二运行环境的第一代理器、与所述第一组件相关联的将部署于所述第一运行环境的第二代理器、以及与所述第二组件相关联的用于所述第一运行环境的第三代理器,
其中,所述第一代理器允许将来自所述第二软件系统中对所述第一组件的调用重新定向到所述第二代理器,所述第二代理器允许对所述第一组件进行调用,并且所述第三代理允许将来自所述第一组件的调用重新定向到所述第一代理器,以便由所述第一代理器重新定向到所述第二软件系统的相应组件。
12.根据权利要求11所述的系统,还包括:
包封装装置,用于对所述第一组件、所述第一代理器、第二代理器以及第三代理器进行包封装生成用于部署的封装包。
13.根据权利要求9-12中任一权利要求所述的系统,其中所述第二软件系统为基于服务组件架构的软件系统。
14.根据权利要求9-13中任一权利要求所述的系统,其中所述第一运行环境为Java企业柄运行环境,并且所述第二运行环境为服务组件架构运行时间的运行环境。
15.根据权利要求14所述的系统,其中:
所述生成装置还用于生成所述第一代理器所包括的将服务组件架构支持的调用转换为Web service调用的适配器,以及将Webservice调用转换为服务组件架构支持的调用的适配器;
生成所述第二代理器所包括的将Web service调用转换为Java企业柄调用的适配器;以及
生成所述第三代理器所包括的将Java企业柄调用转换为Webservice调用的适配器。
16.根据权利要求9-15中任一权利要求所述的系统,其中:
所述第一组件包括所述第一软件系统中组件的任何所选集合。
17.一种计算机程序产品,用于将第一软件系统中的所选第一组件重用于第二软件系统,其中所述第一软件系统为运行于第一运行环境的基于组件的软件系统,并且所述第二软件系统为运行于第二运行环境的依赖外化的软件系统,所述计算机程序产品被配置于执行根据权利要求1-8中任一权利要求所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101048525A CN101311903B (zh) | 2007-05-22 | 2007-05-22 | 对基于组件的软件系统中的组件进行重用的方法和装置 |
US12/115,890 US8595700B2 (en) | 2007-05-22 | 2008-05-06 | Method and apparatus for reusing components of a component-based software system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101048525A CN101311903B (zh) | 2007-05-22 | 2007-05-22 | 对基于组件的软件系统中的组件进行重用的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101311903A true CN101311903A (zh) | 2008-11-26 |
CN101311903B CN101311903B (zh) | 2011-05-18 |
Family
ID=40073617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101048525A Active CN101311903B (zh) | 2007-05-22 | 2007-05-22 | 对基于组件的软件系统中的组件进行重用的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8595700B2 (zh) |
CN (1) | CN101311903B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937366A (zh) * | 2009-07-02 | 2011-01-05 | 华为技术有限公司 | 一种具有运行软件功能的装置和系统及运行方法 |
CN102404355A (zh) * | 2010-09-10 | 2012-04-04 | 金蝶软件(中国)有限公司 | 一种Camel与SCA的交互方法及中间件 |
CN102437945A (zh) * | 2010-09-29 | 2012-05-02 | 金蝶软件(中国)有限公司 | 一种Camel路由和媒介引擎导入方法、装置及架构 |
CN102779043A (zh) * | 2012-06-29 | 2012-11-14 | 吴东辉 | 一种软件连接的方法及工具软件 |
CN104134034A (zh) * | 2013-06-13 | 2014-11-05 | 腾讯科技(深圳)有限公司 | 控制应用运行的方法和装置 |
CN107015873A (zh) * | 2017-01-23 | 2017-08-04 | 阿里巴巴集团控股有限公司 | App的功能模块的调用方法、组件接口装置、电子设备及App |
CN109791482A (zh) * | 2016-07-22 | 2019-05-21 | 思科技术公司 | 在微服务环境中缩放服务发现 |
CN113296765A (zh) * | 2021-05-28 | 2021-08-24 | 成都谐盈科技有限公司 | 一种基于模型驱动的模块代码记忆方法及终端 |
US11838376B2 (en) | 2016-07-22 | 2023-12-05 | Cisco Technology, Inc. | Scaling service discovery in a micro-service environment |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8560938B2 (en) | 2008-02-12 | 2013-10-15 | Oracle International Corporation | Multi-layer XML customization |
US8875306B2 (en) | 2008-02-12 | 2014-10-28 | Oracle International Corporation | Customization restrictions for multi-layer XML customization |
US8966465B2 (en) | 2008-02-12 | 2015-02-24 | Oracle International Corporation | Customization creation and update for multi-layer XML customization |
US8538998B2 (en) | 2008-02-12 | 2013-09-17 | Oracle International Corporation | Caching and memory optimizations for multi-layer XML customization |
US8788542B2 (en) | 2008-02-12 | 2014-07-22 | Oracle International Corporation | Customization syntax for multi-layer XML customization |
US8782604B2 (en) | 2008-04-11 | 2014-07-15 | Oracle International Corporation | Sandbox support for metadata in running applications |
US8813066B2 (en) * | 2008-05-06 | 2014-08-19 | International Business Machines Corporation | Multi-component software application installation facility |
US8667031B2 (en) | 2008-06-13 | 2014-03-04 | Oracle International Corporation | Reuse of shared metadata across applications via URL protocol |
US8799319B2 (en) * | 2008-09-19 | 2014-08-05 | Oracle International Corporation | System and method for meta-data driven, semi-automated generation of web services based on existing applications |
US8996658B2 (en) | 2008-09-03 | 2015-03-31 | Oracle International Corporation | System and method for integration of browser-based thin client applications within desktop rich client architecture |
US9122520B2 (en) | 2008-09-17 | 2015-09-01 | Oracle International Corporation | Generic wait service: pausing a BPEL process |
US8332654B2 (en) | 2008-12-08 | 2012-12-11 | Oracle International Corporation | Secure framework for invoking server-side APIs using AJAX |
US8856737B2 (en) | 2009-11-18 | 2014-10-07 | Oracle International Corporation | Techniques for displaying customizations for composite applications |
US8954942B2 (en) | 2011-09-30 | 2015-02-10 | Oracle International Corporation | Optimizations using a BPEL compiler |
US8335851B1 (en) * | 2012-03-12 | 2012-12-18 | Ringcentral, Inc. | Network resource deployment for cloud-based services |
US10503787B2 (en) | 2015-09-30 | 2019-12-10 | Oracle International Corporation | Sharing common metadata in multi-tenant environment |
US10031745B2 (en) | 2016-02-02 | 2018-07-24 | International Business Machines Corporation | System and method for automatic API candidate generation |
CN108519874B (zh) * | 2017-02-27 | 2022-03-29 | 腾讯科技(深圳)有限公司 | Python项目包的生成方法及装置 |
US9977656B1 (en) * | 2017-03-13 | 2018-05-22 | Wipro Limited | Systems and methods for providing software components for developing software applications |
US10691428B2 (en) * | 2018-10-24 | 2020-06-23 | Sap Se | Digital compliance platform |
US11159375B2 (en) * | 2019-06-04 | 2021-10-26 | International Business Machines Corporation | Upgrade of IT systems |
CN111427922A (zh) * | 2020-03-19 | 2020-07-17 | 广东蔚海数问大数据科技有限公司 | 基于分布式架构的数据分析方法、系统、装置及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6175948B1 (en) * | 1998-02-05 | 2001-01-16 | Motorola, Inc. | Method and apparatus for a waveform compiler |
US7904569B1 (en) * | 1999-10-06 | 2011-03-08 | Gelvin David C | Method for remote access of vehicle components |
US20030055921A1 (en) | 2001-08-21 | 2003-03-20 | Kulkarni Vinay Vasant | Method and apparatus for reengineering legacy systems for seamless interaction with distributed component systems |
US7000238B2 (en) * | 2001-10-10 | 2006-02-14 | Borland Software Corporation | Development system providing extensible remoting architecture |
US20040054812A1 (en) | 2002-09-13 | 2004-03-18 | Jiasen Liang | System and method for interfacing with a legacy computer system |
KR100501410B1 (ko) | 2002-11-27 | 2005-07-18 | 한국전자통신연구원 | 서블릿 프로그램의 재사용 가능한 비즈니스 로직으로부터이제이비 컴포넌트를 생성하는 시스템 및 방법 |
FI114581B (fi) * | 2003-02-17 | 2004-11-15 | Nokia Corp | Ohjelmistokehitysympäristö |
US7194733B2 (en) * | 2003-06-11 | 2007-03-20 | Microsoft Corporation | Transformation of an asynchronous transactional messaging language into a web services compatible language |
US20050144226A1 (en) | 2003-11-10 | 2005-06-30 | Churchill Software Services | Systems and methods for modeling and generating reusable application component frameworks, and automated assembly of service-oriented applications from existing applications |
US7331047B2 (en) * | 2003-11-25 | 2008-02-12 | Microsoft Corporation | Deterministic system and method for implementing software distributed between a desktop and a remote device |
KR20050063402A (ko) | 2003-12-22 | 2005-06-28 | 한국전자통신연구원 | 레거시 시스템의 재공학을 위한 컴포넌트화 방법 |
US7941543B2 (en) | 2004-08-23 | 2011-05-10 | Neon Systems, Inc. | System and method for migrating applications from a legacy system |
US20070033640A1 (en) * | 2005-07-22 | 2007-02-08 | International Business Machines Corporation | Generic context service in a distributed object environment |
-
2007
- 2007-05-22 CN CN2007101048525A patent/CN101311903B/zh active Active
-
2008
- 2008-05-06 US US12/115,890 patent/US8595700B2/en not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937366A (zh) * | 2009-07-02 | 2011-01-05 | 华为技术有限公司 | 一种具有运行软件功能的装置和系统及运行方法 |
CN102404355B (zh) * | 2010-09-10 | 2015-04-22 | 金蝶软件(中国)有限公司 | 一种Camel与SCA的交互方法及中间件 |
CN102404355A (zh) * | 2010-09-10 | 2012-04-04 | 金蝶软件(中国)有限公司 | 一种Camel与SCA的交互方法及中间件 |
CN102437945A (zh) * | 2010-09-29 | 2012-05-02 | 金蝶软件(中国)有限公司 | 一种Camel路由和媒介引擎导入方法、装置及架构 |
CN102437945B (zh) * | 2010-09-29 | 2014-05-07 | 金蝶软件(中国)有限公司 | 一种Camel路由和媒介引擎导入方法、装置及架构 |
CN102779043A (zh) * | 2012-06-29 | 2012-11-14 | 吴东辉 | 一种软件连接的方法及工具软件 |
CN102779043B (zh) * | 2012-06-29 | 2018-09-21 | 吴东辉 | 一种软件连接的方法及工具软件 |
CN104134034A (zh) * | 2013-06-13 | 2014-11-05 | 腾讯科技(深圳)有限公司 | 控制应用运行的方法和装置 |
CN104134034B (zh) * | 2013-06-13 | 2015-10-21 | 腾讯科技(深圳)有限公司 | 控制应用运行的方法和装置 |
US10198573B2 (en) | 2013-06-13 | 2019-02-05 | Tencent Technology (Shenzhen) Company Limited | Method, device and computer storage medium for controlling the running of an application |
CN109791482B (zh) * | 2016-07-22 | 2022-06-21 | 思科技术公司 | 用于在微服务环境中缩放服务发现的方法和装置 |
CN109791482A (zh) * | 2016-07-22 | 2019-05-21 | 思科技术公司 | 在微服务环境中缩放服务发现 |
US11838376B2 (en) | 2016-07-22 | 2023-12-05 | Cisco Technology, Inc. | Scaling service discovery in a micro-service environment |
CN107015873A (zh) * | 2017-01-23 | 2017-08-04 | 阿里巴巴集团控股有限公司 | App的功能模块的调用方法、组件接口装置、电子设备及App |
CN113296765B (zh) * | 2021-05-28 | 2023-11-03 | 成都谐盈科技有限公司 | 一种基于模型驱动的模块代码记忆方法及终端 |
CN113296765A (zh) * | 2021-05-28 | 2021-08-24 | 成都谐盈科技有限公司 | 一种基于模型驱动的模块代码记忆方法及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN101311903B (zh) | 2011-05-18 |
US8595700B2 (en) | 2013-11-26 |
US20080295109A1 (en) | 2008-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101311903B (zh) | 对基于组件的软件系统中的组件进行重用的方法和装置 | |
CN109933522B (zh) | 一种自动化用例的测试方法、测试系统及存储介质 | |
US8332813B2 (en) | Service re-factoring method and system | |
US9916137B2 (en) | Rest service source code generation | |
CN110780853A (zh) | 前端框架及开发方法、存储介质、电子设备 | |
CN100492290C (zh) | 软件动态演化中构件运行时状态的获取和转换方法 | |
US20040139176A1 (en) | Systems and methods for improving service delivery | |
US20030204644A1 (en) | System and method for developing, deploying, and debugging software agents | |
CN110928529A (zh) | 辅助算子开发的方法和系统 | |
EP1662383A2 (en) | Prescriptive architecture for application development | |
US20120078809A1 (en) | Integrating sub-processes in business process modeling notation processes | |
JP2009116733A (ja) | アプリケーション検索システム、アプリケーション検索方法、モニタ端末、検索サーバおよびプログラム | |
US11995444B2 (en) | Systems and methods for modernizing legacy applications | |
JP2010250378A (ja) | ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム | |
US20090249312A1 (en) | Process Generation Approach and System for an Integrated Telecom Platform | |
KR20030056654A (ko) | Ejb 컴포넌트 조립 장치 및 방법 | |
US7257735B2 (en) | Identifying solutions to computer problems in client/server system | |
US20060120353A1 (en) | Systems and methods for VolP service delivery | |
US7418628B2 (en) | Systems and methods for identifying solutions to computer problems using contexts and versions | |
Sosa et al. | A model-driven process to modernize legacy web applications based on service oriented architectures | |
Lakshmanan et al. | A business centric end-to-end monitoring approach for service composites | |
US7403933B2 (en) | Identifying solutions to computer problems in main system by service system | |
JP4702835B2 (ja) | Webサービスカスタマイズシステム | |
Zhang et al. | Service-oriented architecture | |
Millham | Migration of a legacy procedural system to service-oriented computing using feature analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |