CN104423983B - 用于开发、测试和部署应用的方法和装置 - Google Patents
用于开发、测试和部署应用的方法和装置 Download PDFInfo
- Publication number
- CN104423983B CN104423983B CN201310384507.7A CN201310384507A CN104423983B CN 104423983 B CN104423983 B CN 104423983B CN 201310384507 A CN201310384507 A CN 201310384507A CN 104423983 B CN104423983 B CN 104423983B
- Authority
- CN
- China
- Prior art keywords
- application
- service
- profile
- environment
- parameter
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
Abstract
本发明涉及用于开发、测试和部署应用的方法和装置。根据本发明的实施例,可以自动地创建应用与服务之间的绑定。特别地,用于服务的简档可以指示一个或多个参数是待实例化的。相应地,当应用在一个特定的环境上运行时,将动态地实例化这些参数并且对应用进行重配置。以此方式,有效地提高了在应用的开发、测试和部署等各个阶段的效率和准确性,而且显著地改善了灵活性。公开了用于开发和配置应用的方法和装置。
Description
技术领域
本发明的实施例总体上涉及计算机领域,更具体地,涉及用于开发、测试和部署应用的方法和装置。
背景技术
随着计算技术在各个领域的迅速普及和应用,越来越多的业务借助于计算机程序或应用(application)来完成。在传统的应用开发模式中,开发者例如借助于集成开发环境(Integrated Development Environment,IDE)编写应用的业务逻辑部分。为了测试所开发的应用,测试人员需要开发相应的测试用例(test case)并且建立和设置相应的测试环境。而后,在应用的部署阶段,运营人员必须根据具体的目标环境来配置服务的各种参数和信息。
然而,随着云计算(cloud computing)等新型计算技术的发展,应用开发和部署的上述传统模式受到了挑战。例如,在上述模式中,负责开发、测试和部署的人员必须手工创建应用与该应用所需要的服务之间的绑定(binding)关系,从而使得应用可以访问服务所提供的各种资源。由于系统复杂性的增加,这种手工配置严重影响了应用的开发和部署周期,并且提高了成本。另外,应用往往需要在开发、测试、部署等各种不同的环境之间被迁移和配置,并且这种迁移往往是由不同的团队来完成。由不同的人员针对各个不同的环境反复地配置应用需要花费相当的人力、物力和时间,而且缺乏灵活性。
特别地,与一个应用相关联的服务可能具有很多参数,例如数据源、主机名称、路径、端口号,等等。在开发阶段,由于无法确定实际运行环境中的这些参数,因此传统的做法是开发人员根据本地环境来配置这些参数。在后续的测试和/或部署阶段,相应的人员同样需要根据不同的环境而手工改变服务的配置。可以理解,上述过程通常是不可重复和再现的,而且易错、低效。而且,由于开发团队和运营团队隶属与不同的部门,两者之间存在信息不一致性,该不一致性导致系统业务存在较大的运营风险,甚至带来较大的业务损失。某些已知的方案采用硬编码(hard-coded)或者预先编写的配置文件的方式来固化服务的配置。但是,这种方式缺乏灵活性,导致了应用的维护、迁移、升级等后续动作的不便。
鉴于上述问题,本领域中需要一种更加为有效的用于开发和部署应用的技术方案。
发明内容
为了解决上述以及其他潜在问题,本发明提出了一种用于开发、测试和部署应用的方法和装置。
在本发明的第一方面,提供一种用于开发应用的计算机实现的方法。所述方法包括:选择与所述应用相关联的至少一个服务;以及创建所述应用与所述至少一个服务之间的绑定,所述创建至少包括与所述应用相关联地生成针对所述至少一个服务的简档,所述简档至少包含与所述服务有关的至少一个参数,所述至少一个参数将基于所述应用运行的环境而被自动地实例化。
在本发明的另一方面,提供一种用于配置应用的计算机实现的方法。所述方法包括:确定所述应用与至少一个服务之间的绑定,所述确定至少包括提取针对所述至少一个服务的简档,所述简档至少包含与所述服务有关的、将要实例化的至少一个参数;基于所述应用运行的环境而自动地实例化所述简档中的所述至少一个参数;以及基于实例化的所述至少一个参数来配置所述应用。
根据本发明的又一方面,提供一种用于开发应用的计算机实现的装置。所述装置包括:服务选择单元,被配置为选择与所述应用相关联的至少一个服务;以及绑定创建单元,被配置为创建所述应用与所述至少一个服务之间的绑定,所述绑定创建单元至少被配置为与所述应用相关联地生成针对所述至少一个服务的简档,所述简档至少包含与所述服务有关的至少一个参数,所述至少一个参数将基于所述应用运行的环境而被自动地实例化。
根据本发明的再一方面,提供一种用于配置应用的计算机实现的装置。所述装置包括:绑定确定单元,被配置为确定所述应用与至少一个服务之间的绑定,所述确定至少包括提取针对所述至少一个服务的简档,所述简档至少包含与所述服务有关的、将要实例化的至少一个参数;实例化单元,被配置为基于所述应用运行的环境而自动地实例化所述简档中的所述至少一个参数;以及部署配置单元,被配置为基于实例化的所述至少一个参数来配置所述应用。
通过下文描述将会理解,根据本发明的实施例,无需通过例如硬编码或是配置文件的方式固化服务的配置和参数。相反,可以使用服务的简档来指示需要根据不同环境而实例化的参数。此后,当应用被迁移到一个新的环境上时,可以从环境中动态地收集信息以实例化服务的参数,同时配置应用运行实例以完成应用部署。在大规模环境下(例如,存在大量服务器,诸如多于100台服务器),本发明能够较好的实现部署自动化。以此方式,可以避免在应用开发、测试和/或部署过程中的手工操作,降低错误风险并且提高效率,以及提高应用开发和部署的灵活性。
附图说明
通过结合附图对本发明示例性实施方式进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显其中:
图1示出了适于用来实现本发明实施例的示例性计算机系统/服务器的示意性框图;
图2示出了根据本发明实施例的用于开发应用的方法的示意性流程图;
图3示出了根据本发明实施例的用于配置应用的方法的示意性流程图;
图4示出了根据本发明实施例的用于开发应用的装置的示意性框图;以及
图5示出了根据本发明实施例的用于配置应用的装置的示意性框图。
贯穿所有附图,相同或相似的标号被用来表示相同或相似的元素。
具体实施方式
下面将参照附图更详细地描述本发明的优选实施方式。虽然附图中显示了本发明的优选实施方式,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为装置、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是-但不限于-电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括-但不限于-电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括-但不限于-无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络-包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
下面参考附图详细描述根据本发明的示例性实施例。图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括-但不限于-操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管未在图中示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。还应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
现在参考图2,其示出了根据本发明实施例的用于开发应用的计算机实现的方法200的流程图。根据本发明的实施例,方法200可在一个应用的开发者一侧被执行。注意,在此使用的术语“应用”包括能够运行在计算机系统(例如,上文参考图1描述的计算机系统12)上并且完成特定任务的计算机程序。特别地,应用可以是本地应用,也可以是云应用。
方法200开始之后,在步骤S201,选择与待开发的应用相关联的至少一个服务。可以理解,在应用的运行过程中可能需要调用或访问各种服务,诸如Apache Derby数据库、关系数据库、JSON存储、网络服务,等等。根据本发明的实施例,可以在用于应用开发的IDE中提供用于选择服务的用户接口,例如图形用户界面(GUI)。通过该用户接口,可以向用户显示与当前开发的应用可能关联的一个或多个服务。可选地,还可以显示用于每个服务的元数据。在此使用的术语“元数据”表示与服务有关的所有信息。用户例如可以通过用户接口上的控件(例如,按钮、复选框、下拉列表)或者直接通过拖放(Drag-and-Drop)来选择服务。例如,用户可以选择一个服务并且将所选择的服务拖放在应用的工程窗口内,以此完成对服务的选择。
特别地,根据本发明的实施例,一个或多个服务可以被事先注册在预定义的服务目录中。为此,应用的开发者、服务的开发者和/或提供者可以将服务的元数据上传至专门的服务器,这些元数据描述与服务有关的信息,例如包括但不限于以下一个或多个:名称、版本、类型、镜像、客户端库、接口、文档、示例代码、连接配置,等等。此类元数据可以被保存在服务器的服务目录中,并且服务目录被刷新。
如上文所述,传统上,开发者必须手工确定和添加将要与应用关联的服务。与此不同,通过将服务组织在IDE可访问的服务目录中,在应用开发者一侧,用户可以通过使用IDE访问服务目录而方便、直观和高效地从服务目录中选择将与应用关联的服务。而且,根据某些实施例,可以为用户提供搜索选项,以允许用户在服务目录中搜索特定的服务。这些有助于提高应用的开发效率,同时能够降低开发过程中可能出现的人为错误。
接下来,方法200进行到步骤S202,在此创建应用与所选择的至少一个服务之间的绑定。如上文所述,这种绑定传统上需要开发者以手工方式创建。例如,开发者必须手工输入与该服务的配置有关的各种参数。与此不同的是,根据本发明的实施例,应用与服务之间的这种绑定将被自动地创建。这种自动绑定是有益的,因为在传统的人工绑定中,人类用户需要完成大量繁琐的操作,这个过程是耗时的和易错的。例如,传统人工绑定可能导致对某些参数的错误配置和/或疏漏了对某些参数的配置。相反,根据本发明的实施例,可以通过自动的绑定创建来克服这些问题,从而在高效、快速地实现应用与服务的绑定的同时,降低这一过程期间可能出现的错误。
具体而言,根据本发明的实施例,创建应用与服务之间的绑定至少包括与应用相关联地生成一个针对服务的简档(profile)。例如,用于服务的简档可以在用于应用的工程中被生成和保存,从而指示应用与服务之间的关联关系。根据本发明的实施例,简档可以包括服务的各种信息,例如服务名称、版本、类型,等等。
特别地,根据本发明的实施例,用于服务的简档包含与该服务有关的至少一个参数,其中这些参数的值无法在开发时确定,而是可能随着不同的环境而变化。换言之,对于这些参数中的每一个,它们的具体值将随着应用所在的不同环境而动态地变化。根据本发明的实施例,这些参数将基于应用所运行的具体环境而被自动地实例化。注意,在此使用的术语“实例化”是指根据特定的环境而确定参数的值。
根据本发明的实施例,可以采用任何适当的方式在简档中指定待实例化的参数。例如,在简档以编辑语言JSON(JavaScript Object Notation)编写的实施例中,可以设计和实现专门的标签(tag),使得在该标签之内的参数被解释为待实例化的参数。作为一个示例,一个示例性简档如下所示:
在上面的示例性简档中,由标签“credentials”定义的块中所包含的各个参数是待实例化的参数。例如,参数“dbname”(数据库名称)的值被设定为“<name>”,这表明数据库名称需要根据应用所运行的具体环境而被实例化。类似地,参数“host”(主机)、“port”(端口)、“user”(用户)和“password”(口令)均是待实例化的参数。
备选地或附加地,也可以采用其他任何适当的方式来创建服务简档以及制定待实例化的参数,而不限于JSON文件格式。例如可以采用数据库表、XML文件、文本文件等各种其他格式来实现服务简档,并且采用与文件格式相匹配的各种适当手段来指定待实例化的参数。本发明的范围在此方面不受限制。
可以理解,根据本发明的实施例,与服务有关的参数无需由开发、测试和/部署人员手工输入。相反,通过生成和使用上述服务简档,这些参数的值可以根据用于开发、测试和/或部署的特定环境而被动态地产生和注入。以此方式,可以以一种对于用户而言透明的方式实现应用与服务之间的绑定。更具体地,在开发者完成了对一个应用的开发之后,下游的测试者和/或部署者无需像传统模式中那样根据自己的特定环境和平台对应用的配置进行人工修改和调整。相反,根据本发明的实施例,对应用的特定于环境的自适应配置将基于该应用的简档、通过对参数的自动赋值和注入而高效地、准确地和自动地实现。以此方式,能够显著提高应用测试和部署的效率,降低错误风险,节约时间和人力成本。
接下来,根据本发明的某些可选实施例,在步骤S203处,可以自动地导入用于该应用的文件和辅助应用中的至少一个。在此使用的术语“文件”包括与应用相关的任何文件,例如包括但不限于以下一个或多个:文档、库(library)、头文件、动态链接库,等等。在此使用的术语“辅助应用”是指为了支持应用的运行而需要的其他应用,例如包括但不限于驱动程序,等等。例如,如果应用是一个JavaWeb项目,则可以自动地向与该应用有关的目录中添加相应的库,例如类库。可以理解,与上文描述的服务简档生成相类似,与服务有关的所有辅助文件和/或程序可以通过用户透明的方式而被导入,从而提高操作效率,降低开发者的操作负担。
接下来,方法200可以进行到步骤S204,在此至少部分地基于生成的服务简档而配置应用。请注意,基于简档对应用的配置也可以由其他实体来完成。实际上,该操作甚至可由应用自己来完成。因此,步骤S204在方法200中是可选的。在步骤S204处对应用的配置例如可以包括创建、修改和/或更新的应用的设置,以使得应用可以访问服务。例如,如果一个Java Web应用与一个数据库服务绑定,则可以在此修改该应用的配置文件(例如,web.xml)以设置一个相应的数据源,使得应用具有数据库服务的访问途径。将会理解,根据本发明的实施例,在步骤S204所进行的配置是初始配置,此时服务的很多参数尚未被具体地实例化。此后每当应用被移植到一个新的环境,均会对该应用进行相应的配置。可以理解,这种配置相对于开发阶段的配置而言可被视为是对应用的一种重配置(reconfiguration),这还将在下文详述。
下面参考图3,其示出了根据本发明的示例性实施例的用于配置应用的方法300的流程图。方法300可以在测试和/或部署应用时被执行,以便根据不同的环境而自动地配置应用。
具体地,方法300开始之后,在步骤S301处确定所述应用与至少一个服务之间的绑定。如上所述,根据本发明的实施例,对于与服务有关的每个服务,针对该服务的简档与该应用相关联地被生成。例如,该简档被包含应用的文件包中。由此,可以从待部署的应用的文件包中提取此类简档,并且根据简档来确定应用与服务之间的绑定关系。特别地,如上所述,根据本发明的实施例,服务简档包含与服务有关的、待实例化的至少一个参数。
此后,方法300进行步骤S302,在此基于应用运行的环境,自动地实例化上述简档中的至少一个参数。注意,根据本发明的实施例,在此所说的“环境”可以是用于测试应用的环境,也可以是部署的目标环境。而且,根据本发明的实施例,该环境可以是本地环境,也可以是远程环境(例如,云计算中的云端位置)。
根据本发明的实施例,对参数的动态实例化可以根据各种方式实现。例如,在某些实施例中,可以基于运行应用的环境收集与所述服务有关的信息,例如数据源的具体位置、主机IP地址、端口号,等等。而后,可以将所收集的信息动态注入应用的运行时(runtime),从而实例化简档中的有关参数。备选地,与服务有关的信息也可以不是动态收集的,而是由目标环境定期收集和存储。在另外一些实施例中,根据开发方与部署方之间的协议,需要实例化的参数的值可以被事先获取和存储。本发明的范围在此方面不受限制。
另外,根据本发明的实施例,对简档中指示的参数的实例化可以借助于各种技术手段来实现。换言之,通过分析环境信息所导出的参数值可以通过各种方式被传递给应用。例如,在某些实施例中,所导出的参数的值可被写入到应用的运行时可访问的配置文件中,从而被注入到应用运行时中。备选地或附加地,也可以借助于环境变量、注册表、进程间通信等等各种方式来实现参数值向应用的传递,由此实现对参数的实例化。
接下来,方法300进行到步骤S303,在此至少部分地基于实例化的参数来配置应用。此时,由于简档中的参数已经被实例化,因此可以利用实例化的参数的值来修改应用的设置(例如,填写应用的配置文件),使得应用在当前环境中运行时能够正确地访问服务。可以理解,相对于开发阶段的配置而言,在此实现了对应用的再配置。以此方式,可以有效地消除应用的开发、测试和部署过程中由于环境异构性对手工操作的依赖,降低了错误风险,提高了操作效率。
而且,通过这种方式,实现了应用和服务之间的晚绑定(late binding)。具体而言,服务的实例是被动态地注入应用的运行时的,而不是在源代码中被硬编码等方式固化。由此,可以灵活地将应用部署到任何环境而无需改变应用的代码。这可以显著地提高应用部署的效率和准确性,降低成本,并且提高应用开发和部署的灵活性和适应性。
应当理解,上文参考图2和图3描述的方法的执行顺序并不限于图中所示出的顺序。相反,方法200和300的步骤可以按照任何适当的顺序来执行。例如,在方法200中,简档的生成(步骤S202)与文件和/或辅助应用的导入(步骤S203)可以按照任何顺序甚至并行地执行。又如,文件和/或辅助应用的导入(步骤S203)与基于简档的应用配置(步骤S204)同样可以按照任何顺序甚至并行地执行,等等。本发明的范围在此方面不受限制。
下面考虑一个实现方法200和300具体示例。如上所述,在某些实施例中,应用开发者或者任何其他方可以在服务目录中注册服务。例如,可以在一个云服务目录中注册一个Apache Derby数据库服务。为此,描述名称、版本、类别、镜像、客户端库、接口、文档、连接配置和示例代码等信息的服务元数据被提交给服务器。该元数据被存储在服务器,并且云服务目录被相应地刷新。
接下来,例如在开发一个Java Web应用时,开发者可以通过IDE从服务目录中搜索和选择上文注册的Derby数据库服务,并且例如通过拖放的方式将其与Java Web应用绑定。相应地,用于Derby数据库服务的服务简档与Java Web应用相关联地被生成。例如,可以在该应用的项目结构中生成一个相应的简档文件。下面示出了一个服务简档的部分内容的图示。
接下来,可选地,可以基于服务需求而导入所有所需的客户端侧的文件或辅助应用,例如库、驱动程序,等等。而后,可以针对用于应用的开发环境,至少部分地基于生成的简档而配置应用。例如,在此示例中,可以修改该JaVa Web应用的web.xml文件以创建一个新的数据源(Data Source),从而实例化简档中的参数。这样,应用可以使用该文件来访问数据库。
相应地,在测试或者部署应用时,可以使用“晚绑定”(late binding)向JaVa Web运行时注入服务的实例。具体而言,在要将应用部署在一个本地环境或者远程的云环境中时,可以基于应用与服务之间的绑定来确定应用的部署结构。如果需要的话,还可以创建服务的实例和/或资源。而后,可以在目标环境中收集与服务有关的信息,并且基于所收集的变量来实例化服务简档中所定义的有待实例化的参数。下面示出了经过参数实例化之后的服务简档的部分内容的示意图。
接下来,基于实例化的参数来重新配置应用。例如,在此例中,可以修改Java Web应用服务器的server.xml文件,以便更新应用的配置。下面示出了更新后的配置文件的示例。可以看到,简档中被实例化的参数的值此时被填入的应用服务器的配置文件。以此方式,应用在运行时能够正确地调用和访问服务。通过上述动作,应用可以被高效地部署在目标环境的Java Web运行时上,而且整个部署过程无需人工操作的介入。
下面参考图4,其示出了根据本发明实施例的用于开发应用的装置400的框图。如图所示,装置400包括:服务选择单元401,被配置为选择与所述应用相关联的至少一个服务;以及绑定创建单元402,被配置为创建所述应用与所述至少一个服务之间的绑定。特别地,绑定创建单元402至少被配置为与所述应用相关联地生成针对所述至少一个服务的简档,所述简档至少包含与所述服务有关的至少一个参数,所述至少一个参数将基于所述应用运行的环境而被自动地实例化。
根据本发明的某些实施例,装置400还可以包括导入单元,被配置为自动地导入用于所述应用的文件和辅助应用中的至少一项。备选地或附加地,根据本发明的某些实施例,装置400还可以包括:应用配置单元,被配置为至少部分地基于所述简档而配置所述应用。另外,根据本发明的某些实施例,所述至少一个服务被注册在预定义的服务目录中。在这样的实施例中,装置400还可以包括:服务浏览单元,被配置为显示用于所述至少一个服务的至少一部分元数据,所述元数据描述与所述至少一个服务有关的信息。
参考图5,其示出了根据本发明实施例的用于配置应用的装置500的框图。如图所示,根据本发明的实施例,装置500包括:绑定确定单元501,被配置为确定所述应用与至少一个服务之间的绑定,所述确定至少包括提取针对所述至少一个服务的简档,所述简档至少包含与所述服务有关的、将要实例化的至少一个参数;实例化单元502,被配置为基于所述应用运行的环境而自动地实例化所述简档中的所述至少一个参数;以及部署配置单元503,被配置为基于实例化的所述至少一个参数来配置所述应用。
根据本发明的某些实施例,所述实例化单元502可以包括:信息收集单元,被配置为收集所述环境中与所述服务有关的信息;以及注入单元,被配置为将收集的所述信息注入所述应用的运行时,以实例化所述简档中的所述至少一个参数。备选地或附加地,所述实例化单元502可被配置为使用环境变量、配置文件和注册表中的至少一个,向所述应用传递实例化的所述至少一个参数。而且,如上所述,所述环境是可以是用于所述应用的测试环境或者部署目标环境。而且,所述环境可以是本地环境,也可以是远程环境。
为清晰起见,图4和图5中没有示出装置所包含的可选单元或者子单元。然而应当理解,上文所描述的所有特征和操作分别适用于装置400和500,故在此不再赘述。而且,各装置中的单元或子单元的划分不是限制性的而是示例性的,旨在从逻辑上描述其主要功能或操作。一个单元的功能可以由多个单元来实现;反之,多个单元亦可由一个单元来实现。本发明的范围在此方面不受限制。而且,上文描述的装置400和500中所包含的单元可以利用各种方式来实现,包括软件、硬件、固件或其任意组合。
上文已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文公开的各实施例。
Claims (14)
1.一种用于在开发应用中使用的计算机实现的方法,所述方法包括:
选择与所述应用相关联的至少一个服务;以及
自动地创建所述应用与所述至少一个服务之间的绑定,所述创建至少包括与所述应用相关联地生成针对所述至少一个服务的简档,所述简档至少包含与所述服务有关的至少一个参数,所述至少一个参数将基于所述应用运行的环境而被自动地实例化,并且
所述自动地实例化包括:
收集所述环境中与所述服务有关的信息;以及
将收集的所述信息注入所述应用的运行时,以实例化所述简档中的所述至少一个参数。
2.根据权利要求1所述的方法,还包括:
自动地导入用于所述应用的文件和辅助应用中的至少一项。
3.根据权利要求1所述的方法,还包括:
至少部分地基于所述简档而配置所述应用。
4.根据权利要求1所述的方法,其中所述至少一个服务被注册在预定义的服务目录中,所述方法还包括:
显示用于所述至少一个服务的至少一部分元数据,所述元数据描述与所述至少一个服务有关的信息。
5.一种用于在配置应用中使用的计算机实现的方法,所述方法包括:
确定所述应用与至少一个服务之间的被自动创建的绑定,所述确定至少包括提取针对所述至少一个服务的简档,所述简档至少包含与所述服务有关的、将要实例化的至少一个参数;
基于所述应用运行的环境而自动地实例化所述简档中的所述至少一个参数;以及
基于实例化的所述至少一个参数来配置所述应用,并且其中基于所述应用运行的环境而自动地实例化所述简档中的所述至少一个参数包括:
收集所述环境中与所述服务有关的信息;以及
将收集的所述信息注入所述应用的运行时,以实例化所述简档中的所述至少一个参数。
6.根据权利要求5所述的方法,其中基于所述应用运行的环境而自动地实例化所述简档中的所述至少一个参数包括:
使用环境变量、配置文件和注册表中的至少一个,向所述应用传递实例化的所述至少一个参数。
7.根据权利要求5到6任一项所述的方法,其中所述环境是用于所述应用的测试环境或者部署目标环境。
8.一种用于在开发应用中使用的装置,所述装置包括:
服务选择单元,被配置为选择与所述应用相关联的至少一个服务;以及
绑定创建单元,被配置为自动地创建所述应用与所述至少一个服务之间的绑定,所述绑定创建单元至少被配置为与所述应用相关联地生成针对所述至少一个服务的简档,所述简档至少包含与所述服务有关的至少一个参数,所述至少一个参数将基于所述应用运行的环境而被自动地实例化,并且
所述自动地实例化包括:
收集所述环境中与所述服务有关的信息;以及
将收集的所述信息注入所述应用的运行时,以实例化所述简档中的所述至少一个参数。
9.根据权利要求8所述的装置,还包括:
导入单元,被配置为自动地导入用于所述应用的文件和辅助应用中的至少一项。
10.根据权利要求8所述的装置,还包括:
应用配置单元,被配置为至少部分地基于所述简档而配置所述应用。
11.根据权利要求8所述的装置,其中所述至少一个服务被注册在预定义的服务目录中,所述装置还包括:
服务浏览单元,被配置为显示用于所述至少一个服务的至少一部分元数据,所述元数据描述与所述至少一个服务有关的信息。
12.一种用于在配置应用中使用的计算机实现的装置,所述装置包括:
绑定确定单元,被配置为确定所述应用与至少一个服务之间被自动地创建的绑定,所述确定至少包括提取针对所述至少一个服务的简档,所述简档至少包含与所述服务有关的、将要实例化的至少一个参数;
实例化单元,被配置为基于所述应用运行的环境而自动地实例化所述简档中的所述至少一个参数;以及
部署配置单元,被配置为基于实例化的所述至少一个参数来配置所述应用,其中所述实例化单元包括:
信息收集单元,被配置为收集所述环境中与所述服务有关的信息;以及
注入单元,被配置为将收集的所述信息注入所述应用的运行时,以实例化所述简档中的所述至少一个参数。
13.根据权利要求12所述的装置,其中所述实例化单元被配置为使用环境变量、配置文件和注册表中的至少一个,向所述应用传递实例化的所述至少一个参数。
14.根据权利要求12或13所述的装置,其中所述环境是用于所述应用的测试环境或者部署目标环境。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310384507.7A CN104423983B (zh) | 2013-08-29 | 2013-08-29 | 用于开发、测试和部署应用的方法和装置 |
US14/469,088 US9785431B2 (en) | 2013-08-29 | 2014-08-26 | Development, test and deployment of applications |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310384507.7A CN104423983B (zh) | 2013-08-29 | 2013-08-29 | 用于开发、测试和部署应用的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104423983A CN104423983A (zh) | 2015-03-18 |
CN104423983B true CN104423983B (zh) | 2018-06-08 |
Family
ID=52585142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310384507.7A Active CN104423983B (zh) | 2013-08-29 | 2013-08-29 | 用于开发、测试和部署应用的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9785431B2 (zh) |
CN (1) | CN104423983B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10055340B2 (en) | 2015-06-10 | 2018-08-21 | International Business Machines Corporation | Dynamic test topology visualization |
CN106528057B (zh) * | 2015-09-09 | 2020-07-10 | 腾讯科技(深圳)有限公司 | 实现运行环境适配的方法和装置 |
CN106610853A (zh) * | 2015-10-26 | 2017-05-03 | 阿里巴巴集团控股有限公司 | 一种应用部署方法和装置 |
US10270662B2 (en) | 2016-03-14 | 2019-04-23 | International Business Machines Corporation | Local consumption of remote services |
CN106874188B (zh) * | 2016-12-30 | 2020-05-12 | 北京五八信息技术有限公司 | 软件接口测试方法及装置 |
CN106844202B (zh) * | 2016-12-30 | 2020-04-21 | 和创(北京)科技股份有限公司 | 生成测试用例的方法和终端设备 |
US10411973B2 (en) | 2017-03-20 | 2019-09-10 | Red Hat, Inc. | Automatic microservice problem detection in enterprise applications |
CN107203471B (zh) * | 2017-05-24 | 2023-03-24 | 腾讯科技(深圳)有限公司 | 联调方法、服务平台及计算机存储介质 |
CN109471797A (zh) * | 2018-10-23 | 2019-03-15 | 深圳市佰仟金融服务有限公司 | 一种环境配置管理方法、系统及终端设备 |
US11016784B2 (en) | 2019-03-08 | 2021-05-25 | Palantir Technologies Inc. | Systems and methods for automated deployment and adaptation of configuration files at computing devices |
CN110609732B (zh) * | 2019-08-13 | 2023-02-07 | 平安普惠企业管理有限公司 | 应用程序部署方法、装置、计算机设备和存储介质 |
WO2021035553A1 (zh) * | 2019-08-27 | 2021-03-04 | 西门子股份公司 | 应用程序开发部署方法、装置和计算机可读介质 |
US11474814B1 (en) * | 2020-03-13 | 2022-10-18 | Liberty Mutual Insurance Company | Modular software application configuration management |
US11461093B1 (en) | 2020-03-13 | 2022-10-04 | Liberty Mutual Insurance Company | Automated generation of release note data objects based at least in part on release-time configuration settings |
CN111443923A (zh) * | 2020-03-26 | 2020-07-24 | 北京房天下嘉居网络技术有限公司 | 服务发布方法及装置 |
US11709770B2 (en) * | 2020-04-14 | 2023-07-25 | Jpmorgan Chase Bank, N.A. | System and method for implementing a one to many configuration management tool |
US11520566B2 (en) * | 2020-08-24 | 2022-12-06 | Bank Of America Corporation | System for generation and maintenance of source capability objects for application components |
CN112015661B (zh) * | 2020-09-08 | 2023-10-03 | 南京云柜网络科技有限公司 | 一种软件测试方法及装置 |
CN112114904A (zh) * | 2020-09-28 | 2020-12-22 | 中国建设银行股份有限公司 | 系统配置信息的处理方法及装置 |
CN114706619A (zh) * | 2020-12-16 | 2022-07-05 | 武汉斗鱼鱼乐网络科技有限公司 | 配置信息的处理方法、装置、电子设备及存储介质 |
US11561976B1 (en) * | 2021-09-22 | 2023-01-24 | Sap Se | System and method for facilitating metadata identification and import |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5915112A (en) * | 1996-01-02 | 1999-06-22 | International Business Machines Corporation | Remote procedure interface with support for multiple versions |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2440031C (en) * | 2001-02-22 | 2013-07-02 | Accenture Global Services Gmbh | Distributed development environment for building internet applications by developers at remote locations |
AU2002309456A1 (en) * | 2002-05-16 | 2003-12-02 | Agency For Science, Technology And Research | A computing system deployment planning method |
US20050010896A1 (en) * | 2003-07-07 | 2005-01-13 | International Business Machines Corporation | Universal format transformation between relational database management systems and extensible markup language using XML relational transformation |
US9038023B2 (en) * | 2005-12-30 | 2015-05-19 | Sap Se | Template-based configuration architecture |
US9830145B2 (en) * | 2006-08-14 | 2017-11-28 | Federal Home Loan Mortgage Corporation (Freddie Mac) | Systems and methods for infrastructure and middleware provisioning |
US8392880B2 (en) | 2007-04-27 | 2013-03-05 | International Business Machines Corporation | Rapid application development for database-aware applications |
US8375351B2 (en) | 2007-06-23 | 2013-02-12 | International Business Machines Corporation | Extensible rapid application development for disparate data sources |
CN101855618B (zh) * | 2007-10-10 | 2015-11-25 | 甲骨文美国公司 | 用于在应用执行期间改变执行环境的方法和系统 |
US8291079B1 (en) | 2008-06-04 | 2012-10-16 | Appcelerator, Inc. | System and method for developing, deploying, managing and monitoring a web application in a single environment |
US8635534B2 (en) | 2009-08-12 | 2014-01-21 | Ebay Inc. | Reservation of resources and deployment of applications using an integrated development environment |
US9448790B2 (en) | 2010-04-26 | 2016-09-20 | Pivotal Software, Inc. | Rapid updating of cloud applications |
US20120036457A1 (en) | 2010-08-09 | 2012-02-09 | REAL Software, Inc. | Integrated development environment for rapid application development |
US20120047483A1 (en) * | 2010-08-20 | 2012-02-23 | Sap Ag | Smart Web Service Discovery |
US8904353B1 (en) * | 2010-11-08 | 2014-12-02 | Amazon Technologies, Inc. | Highly reusable test frameworks and tests for web services |
US20120291006A1 (en) | 2011-05-12 | 2012-11-15 | Google Inc. | Development Architecture for Cloud-Based Applications |
US8856724B2 (en) | 2011-06-20 | 2014-10-07 | Ebay Inc. | Systems and methods for incremental software development |
US9542566B2 (en) | 2011-06-24 | 2017-01-10 | Alibaba.Com Limited | Develop and deploy software in multiple environments |
US20130091557A1 (en) * | 2011-10-11 | 2013-04-11 | Wheel Innovationz, Inc. | System and method for providing cloud-based cross-platform application stores for mobile computing devices |
-
2013
- 2013-08-29 CN CN201310384507.7A patent/CN104423983B/zh active Active
-
2014
- 2014-08-26 US US14/469,088 patent/US9785431B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5915112A (en) * | 1996-01-02 | 1999-06-22 | International Business Machines Corporation | Remote procedure interface with support for multiple versions |
Also Published As
Publication number | Publication date |
---|---|
CN104423983A (zh) | 2015-03-18 |
US20150067642A1 (en) | 2015-03-05 |
US9785431B2 (en) | 2017-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104423983B (zh) | 用于开发、测试和部署应用的方法和装置 | |
US20230359778A1 (en) | Configuration of a digital twin for a building or other facility via bim data extraction and asset register mapping | |
CN103425728B (zh) | 用于组书签的方法和系统 | |
CN104346153B (zh) | 用于翻译应用程序的文本信息的方法和系统 | |
US8949378B2 (en) | Method and system for providing a state model of an application program | |
US20120324116A1 (en) | Enabling Service Virtualization in a Cloud | |
AU2018203274A1 (en) | Training an RGB-D classifier with only depth data and privileged information | |
US11030805B2 (en) | Displaying data lineage using three dimensional virtual reality model | |
US10579354B2 (en) | Method and system for rapid deployment and execution of customized functionality across multiple distinct platforms | |
CN110688142A (zh) | 应用程序编程接口的发布方法、设备及存储介质 | |
CN110704749B (zh) | 推荐引擎定制系统、推荐方法及推荐系统、电子设备 | |
US10922101B2 (en) | User interface widget recommendation | |
US20190265843A1 (en) | Automated command-line interface | |
US11714625B2 (en) | Generating applications for versatile platform deployment | |
US20180225357A1 (en) | Self-improving classification | |
CN110489087A (zh) | 一种生成分形结构的方法、装置、介质和电子设备 | |
US20200356469A1 (en) | Test automation systems and methods using logical identifiers | |
US20210064507A1 (en) | Detecting and predicting application performance | |
CN104253790A (zh) | 规范化页面流的方法和设备 | |
US10878804B2 (en) | Voice controlled keyword generation for automated test framework | |
US20180196928A1 (en) | Network visualization for access controls | |
CN104424525B (zh) | 辅助确定项目范围的方法和装置 | |
CN110457318A (zh) | 区块链中数据字段的更新方法、装置、介质、电子设备 | |
US20200042093A1 (en) | Context based gesture control | |
CN109684207A (zh) | 操作序列封装的方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |