CN102262527B - 生成网络服务的方法和系统 - Google Patents
生成网络服务的方法和系统 Download PDFInfo
- Publication number
- CN102262527B CN102262527B CN201010188585.6A CN201010188585A CN102262527B CN 102262527 B CN102262527 B CN 102262527B CN 201010188585 A CN201010188585 A CN 201010188585A CN 102262527 B CN102262527 B CN 102262527B
- Authority
- CN
- China
- Prior art keywords
- call stack
- information
- user
- input
- input information
- 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.)
- Expired - Fee Related
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/74—Reverse engineering; Extracting design information from source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及网络服务技术,尤其涉及在面向服务体系结构下从网络应用中自动生成网络服务的技术。本发明提供了一种用于生成网络服务的方法,包括:获取网络应用的用户输入信息;获取网络应用基于所述用户输入信息在运行时产生的调用栈信息;将所述用户输入信息与所述调用栈信息进行参数匹配;根据所述参数匹配的结果以及所述调用栈信息,从所述调用栈信息中选取方法作为应用编程接口API;以及利用所述应用编程接口API生成网络服务。
Description
技术领域
本发明涉及网络服务技术,尤其涉及在面向服务体系结构下从网络应用中自动生成网络服务的技术。
背景技术
随着面向服务体系结构SOA的迅速发展,人们对网络服务(WebService)的需求也日益增长。网络服务是一种面向服务的架构的技术,通过标准的网络协议提供服务,目的是保证不同平台的应用服务可以互操作。简单地讲,网络服务本质上就是一个能够通过网络进行调用的API(应用编程接口)。人们能够用编程的方法通过网络来调用这个网络服务。网络服务是基于已有的网络应用而生成的,并且网络服务仍然要被将来的网络应用所使用。我们把调用这个网络服务的网络应用叫做客户,也就是说,网络服务生成后,是网络应用在使用网络服务,而并非终端用户在直接使用网络服务。
具体到企业应用领域,随着企业的发展,可能存在许多之前开发并部署的独立的网络应用,这些网络应用又被称作“遗留系统(LegacySystem)”。这些独立的遗留系统彼此之间没有联系,可以理解为彼此独立的网络应用(WebApplication)。它们可以向企业的客户或者企业自身提供服务,例如人力资源管理系统、订单系统或供应链管理(SCM)系统等。所有这些彼此独立的“遗留系统”都是在不同的时间由不同的软件服务提供商开发的。由于企业客户的需求不断增长,现存的这些“遗留系统”不再能满足当前市场的需求。因此企业必须开发新的系统以满足新的需求。但是为了降低开发过程中的成本,我们发现,如何将现存的“遗留系统”集成、整合起来并在新的系统中重用它们是一个亟待解决的问题。也就是说,需要基于网络应用服务器中已有的遗留系统(网络应用)或者遗留系统所提供的功能来生成网络服务(WebService),从而使得将来新的系统能够通过API调用的方式调用这些网络服务。由于当时开发那些“遗留系统”的不同的软件服务提供商既没有预计到未来可能产生的需求,也没有提供可以由其它系统调用的应用编程接口API,因此新开发的系统就无法直接调用或重用那些现存的“遗留系统”。我们要解决的问题的实质就在于如何从“遗留系统”(网络应用)中找到合适的API,以生成网络服务供新的系统调用。
目前存在一些从“遗留系统”(网络应用)生成网络服务的技术方案。根据一种现有技术中的解决方案,新系统的开发者首先必须阅读“遗留系统”的源代码或对“遗留系统”进行反编译以获取其源代码,然后在分析、理解遗留系统的源代码的基础上选择适用的API,接下来对所选择的API进行封装并附加一些新的开发工作以生成网络服务。该解决方案存在以下问题:(1)对于开发人员而言,阅读并理解“遗留系统”的源代码非常费力并且耗时,尤其是当那些源代码并非当初由其本人编写的情况下更是如此;(2)对于有些“遗留系统”而言,源代码是无法获得的。
发明内容
考虑到上述存在的问题,本发明的目的之一在于提供一种生成网络服务的方法,通过该方法无需获得现存的网络应用的源代码就可以识别出网络应用的适用的API以生成网络服务。本发明的又一目的在于提供一种生成网络服务的方法,通过该方法无需人工阅读大量的网络应用的源代码就可以自动识别出网络应用的API,从而节省人力和耗时。
根据本发明的一个方面,提供了一种用于用于基于网络应用而生成网络服务的方法,包括:获取网络应用的用户输入信息;获取网络应用基于所述用户输入信息在运行时产生的调用栈信息;将所述用户输入信息与所述调用栈信息进行参数匹配;根据所述参数匹配的结果以及所述调用栈信息,从所述调用栈信息中选取方法作为应用编程接口API;以及利用所述应用编程接口API生成网络服务。
根据本发明的另一方面,提供了一种用于基于网络应用而生成网络服务的系统,包括:输入信息获取装置,用于获取网络应用的用户输入信息;调用栈信息获取装置,用于获取网络应用基于所述用户输入信息在运行时产生的调用栈信息;参数匹配装置,用于将所述用户输入信息与所述调用栈信息进行参数匹配;方法选取装置,用于根据所述参数匹配的结果以及所述调用栈信息,从所述调用栈信息中选取方法作为应用编程接口API;以及网络服务生成装置,用于利用所述应用编程接口API生成网络服务。
通过本发明的方法和系统,可以巧妙地利用调用栈的信息而自动地识别出适用的API,从而避免了通过人工阅读源代码的方式而花费大量的人力、精力寻找网络应用或者网络应用的功能的API,节省了生成网络服务的时间、提高了生成网络服务的效率、提高了基于“遗留系统”而生成网络服务从而节约新系统开发成本的效率,并且在生成网络服务的过程中无需获得“遗留系统”(网络应用)的源代码。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将更加明显,本发明附图中相同的标号表示相同或相似的部件。在附图中,
图1示出了根据本发明一个实施例的用于生成网络服务的方法的流程图;
图2示出了根据本发明的另一实施例的用于生成网络服务的方法的流程图;
图3A至3D示出了一个根据本发明的实施例基于网络应用的功能而生成网络服务的具体示例。具体地:图3A示出了网络应用的“创建新用户”功能的用户输入信息界面,图3B示出了“创建新用户”功能的基于用户的8个输入值的调用栈信息,图3C示出了参数匹配的大致过程,图3D示出了将该选定的方法作为“创建新用户”这个网络应用的功能的API从而生成的网络服务(WebService)。
图4示出了根据本发明一个实施例的用于生成网络服务的系统的框图。
具体实施方式
在下文中,将参考附图通过实施方式对本发明提供的用于确定要被物化的节点的方法和系统进行详细地描述。
图1示出了根据本发明一个实施例的用于基于网络应用而生成网络服务的方法的流程图。图1所示的方法从步骤101开始。在步骤101中,获取网络应用的用户输入信息。根据本发明的一个实施例,网络应用是现存的、已经部署在网络应用服务器上的“遗留系统”。根据本发明的一个实施例,网络应用的用户输入信息是网络应用的用户在使用某个网络应用时在该网络应用的用户界面输入的相关参数信息。根据本发明的另一个实施例,网络应用的用户输入信息是网络应用的用户在使用某网络应用的某个特定功能时在该特定功能所提供的用户界面输入的相关参数信息。例如:在一个“机票预定”网络应用的用户登录界面中,用户输入的帐户名、密码、出发地、目的地、航空公司等参数值即为网络应用的用户输入信息。基于网络应用而生成网络服务既可以指为一个网络应用生成一个网络服务API,也可以指为一个网络应用的一个功能生成一个网络服务API,从而可能为同一个网络应用生成多个网络服务API(该网络应用包含多个功能时)。还需要指出的是,“用户输入信息”的“用户”既可以是实际的网络应用的用户,也可以是为了开发新的系统而生成网络服务的软件开发人员。在步骤101中获取网络应用的用户输入信息的具体“获取”方式可以有多种。根据本发明一个实施例,可以在后台截获用户输入相关参数信息时输入值。根据本发明的另一实施例,可以通过记录用户的键盘输入操作来确定用户输入信息的具体内容。
接下来进行至步骤102,在步骤102中获取网络应用基于所述用户输入信息在运行时产生的调用栈(callstack)信息。调用栈是表示了程序在运行过程中方法(函数)的相互间的调用关系的信息。本领域技术人员应当了解,调用栈信息通常被用作检验测试例程序的覆盖率,也就是测试程序对于被测母程序的各个功能的覆盖程度,用于评价测试程序的性能。但是,根据本发明的一个实施例,我们利用这种调用栈的信息来识别网络应用的某个方法(函数)作为网络服务API(具体方式将在下面的步骤中详述)。本领域技术人员还应当了解,获取网络应用的调用栈信息的方式或可以借助的工具有多种,这属于本技术领域通用的技术手段,在此不再详述。
接下来进行至步骤103,将所述用户输入信息与所述调用栈信息进行参数匹配。进行参数匹配的目的是为了从调用栈信息中识别出合适的方法(函数)作为网络服务API。由于调用栈信息中完整地包含了网络应用在运行过程中的类以及各个类都调用了哪些方法(也就是函数)的信息,还包含了各个方法(函数)的参数名以及实际运行过程所依据的被输入的参数值和数值类型信息。正是因为调用栈信息中包含了被输入的参数值和数值类型信息,我们可以通过将在步骤101中获取的用户输入信息中的参数值信息与在步骤102中获取的调用栈信息中的方法的参数值信息进行比较,来实现参数匹配的目的。根据本发明的一个实施例,参数匹配指参数值的匹配,也就是将用户输入信息中对特定输入域的输入值与调用栈信息中的方法的参数值进行比较,查找调用栈信息中是否存在参数值与输入值相同的方法。由于网络应用的用户输入信息可能是针对多个输入域的,例如,在“机票预定”这个网络应用中,用户需要在帐号名、密码、出发地、目的地、航空公司等多个输入域中进行输入。根据本发明的一个实施例,对每一个用户输入信息中的输入值都需要进行这样的查找。根据本发明的另一个实施例,可以不对每一个输入值都进行这样的查找,而是针对一定比例的输入值在调用栈信息中进行查找(例如,80%的输入值)。根据本发明的另一个实施例,参数匹配除了包括参数值的匹配外,还包括参数类型的匹配,例如“字符串型”、“浮点型”等。
接下来进行至步骤104,在此步骤中根据所述参数匹配的结果以及所述调用栈信息,从所述调用栈信息中选取方法作为应用编程接口API。在上文中已经介绍,基于网络应用(或网络应用的功能)生成网络服务的方法的难点在于如何选取网络应用(或网络应用的功能)的应用编程接口API,网络服务从本质上理解就是所暴露出的这样的API。在步骤103中,已经将用户输入信息与调用栈信息进行了参数匹配,那么有些方法的参数值分别与用户输入信息的针对某个输入域的输入值匹配成功。但是,由于生成网络服务的API应当是一个单一的API,从而保证可以利用这样一个API来调用网络应用或网络应用的功能,因此我们需要根据在步骤103中的匹配结果以及调用栈的信息,在调用栈信息中选取适当的方法作为应用编程接口API,使得通过这个选定的API可以调用网络应用或网络应用的某个功能。关于具体如何选取调用栈信息中的方法,有多种实施例可以实现,将在下文结合图2进行具体介绍。
由于在步骤104已经从调用栈信息中选取了作为生成网络服务的API的方法,因此在步骤105中就可以利用当前常用的技术手段来利用这样的应用编程接口API生成网络服务。根据本发明的一个实施例,在利用应用编程接口API生成网络服务前,可以对API进行适当的包装。根据本发明的另一个实施例,利用WSDL语言(网络服务描述语言)来生成网络服务的XML描述文件。本领域技术人员应当了解,在获得了用于生成网络服务的API的情况下,生成网络服务的方法属于本技术领域的常用技术手段,在此不作详述。
利用本发明的实施例,可以巧妙地利用调用栈的信息而自动地识别出适用的API,从而避免了通过人工阅读源代码的方式而花费大量的人力、精力寻找网络应用或者网络应用的功能的API,节省了生成网络服务的时间、提高了生成网络服务的效率、提高了基于“遗留系统”而生成网络服务从而节约新系统开发成本的效率,并且在生成网络服务的过程中无需获得“遗留系统”(网络应用)的源代码。
图2示出了根据本发明的另一实施例的用于生成网络服务的方法的流程图。步骤201和步骤202分别对应于图1所示方法中的步骤101和步骤102,在此不再赘述。图1中的方法的步骤103在图2中可以理解为被更详细地拆分为步骤203至步骤208。
根据本发明的一个实施例,在步骤203中,将用户输入信息中对特定输入域的输入值与所述调用栈信息中的方法的参数值进行比较,并且在步骤204中判断两个值是否相同。如果两个值相同,则在步骤205中确定所述输入值所对应的用户输入信息的参数与所述调用栈信息中的方法相匹配。举例而言,如果用户输入信息中针对“机票预定”这个网络应用中的“帐户名”这个输入域的输入值是“mike”,那么在步骤203中将“mike”这个值与调用栈信息中的方法的参数值进行比较,查看是否调用栈信息中存在一个方法,其参数值为“mike”,如果查找到这样一个调用栈信息中的方法,则确定该方法与用户输入值“mike”所对应的用户输入信息的参数(或称作输入域)“帐户名”相匹配。由于调用栈信息中可能包括多个方法,因此根据本发明的一个实施例,对于一个用户输入信息中的输入值,需要将调用栈信息中的多个方法的参数值与该输入值进行比较,才能确定调用栈信息中是否存在与用户输入值所对应的用户输入信息的参数(输入域)相匹配的方法。
如果在步骤204中的判断结果为否,则在步骤206中判断两个值的相似度是否大于阈值。根据本发明一个实施例,这里的“阈值”是预先设定的相似度阈值,例如80%。需要指出的是,根据本发明一个实施例,步骤204的判断结果为否意味着调用栈信息中的所有方法的参数值都不与该用户输入信息中对特定输入域的输入值相同,那么在此情形下,为了仍然可以在调用栈信息中确定一个与该输入值所对应的用户输入信息的参数相匹配的方法,判断两者的相似度。如果在步骤206中的判断结果为是,也就是两个值之间的相似度大于阈值,在进行至步骤205,确定该输入值所对应的用户输入信息的参数与该调用栈信息中的方法相匹配。如果所有的调用栈信息中的方法的参数值与该输入值的相似度都不大于阈值,也就是步骤206中的判断结果为否,则在步骤207中确定该输入值所对应的用户输入信息的参数与该调用栈信息中的方法不匹配。
接下来进行至步骤208,判断是否还有未经比较的用户输入信息中的输入值。之所以要进行步骤208的判断,是因为在用户输入信息中可能存在多个输入域。如果步骤208的判断结果为是,则重复进行步骤203至步骤208。如果步骤208的判断结果为否,也就是说所有的用户输入信息中的针对不同的输入域(参数)的输入值都已经进行过参数匹配的操作,那么进行至步骤209。
需要指出的是,步骤209至步骤212可以理解为对图1中的方法的步骤104的进一步细化。步骤209至步骤212的目的就在于从调用栈信息中选取方法作为应用编程接口API。在步骤209中,判断调用栈信息中是否存在覆盖了用户输入信息中所包括的所有输入域(参数)的方法。之所以进行步骤209的判断,因为调用栈信息中可能包括多个类,其中每个类下有包括多个方法,而某些方法可能在之前的步骤中被确定与某个输入值所对应的参数匹配。但是需要找到一个方法通过该方法所引用的类而覆盖了被引用的类下所包括的多个方法,从而覆盖了该多个方法被确定匹配的多个参数或全部参数,从而可以实现只选取一个方法作为API,就可以调用该网络应用或网络应用的功能的目的。举例而言,如果“机票预定”网络应用中的“帐户名”输入域中的输入值为“mike”,而“密码”输入域中的输入值为“1234”,并且在调用栈信息中找到一个方法A的参数值为“mike”,找到一个方法B的参数值为“1234”,那么按照之前的步骤就可以确定方法A与“帐户名”这个参数匹配,方法与“密码”这个参数匹配。但是在步骤209中,我们要进一步判断调用栈信息中是否存在一个方法既覆盖了参数“帐户名”也覆盖了参数“密码”。假设方法A和方法B都是属于调用栈信息中的类(class)UserVO下的方法,而在类UserDO下有一个方法C,其调用了类UserVO,例如方法C在调用栈信息中的表达方式可以是C(UserVO),那么就可以判定方法C是一个覆盖了全部参数的方法,其通过调用类UserVO而覆盖了UserVO类下的方法A和方法B,从而覆盖了参数“帐户名”和参数“密码”。
如果步骤209的判断结果为是,则在步骤210中进一步判断覆盖全部参数的方法是否仅有一个。仍然以上文中的例子为例,如果存在方法C覆盖了全部参数,同时在另一个类UserPO下还存在一个方法D也覆盖了全部参数,那么为了仅选定一个方法作为API,我们需要在步骤211中根据预定的标准从多个覆盖了全部参数的方法中选取一个方法作为API。预定的标准可以有多种,根据本发明的一个实施例,该预定的标准为从多个覆盖了全部参数的方法中选取相对而言位于调用栈信息的最底层的方法作为API。本领域技术人员应当了解,位于调用栈信息的最底层意味着该方法不调用其它的类或者调用的类相对而言最少。根据本发明的另一个实施例,该预定的标准为从多个覆盖了全部参数的方法中选取相对而言位于调用栈信息的最顶层的方法作为API。本领域技术人员应当了解,位于调用栈信息的最顶层意味着该方法调用其它的类最多或者不被其它的类调用。根据本发明的另一个实施例,该预定的标准为提供多个覆盖了所述用户输入信息的所有参数的方法作为候选方法。也就是不自动选取一个方法,而将上文例子中的方法C和方法D均作为候选方法输出,最终由开发人员根据情况从中选择一个方法作为API。本领域技术人员应当了解,上文给出的关于预定的标准的实施例仅仅是为了示例,完全可以根据具体的系统运行环境而选择其它的标准,无论选取什么样的标准均落入本发明的保护范围。
如果在步骤210的判断结果为是,则进行至步骤212选取该唯一的覆盖了全部参数的方法作为API。然后进行至步骤213,利用该选定的API生成网络服务。步骤213对应于图1中的步骤105,在此不再赘述。同样,在步骤211中依据预定的标准从多个覆盖了全部参数的方法中选取了方法作为API后,也进行至步骤213,利用该选定的API生成网络服务。
下面回到步骤209。上文描述了在步骤209判断结果为是的情况下的操作,接下来描述在步骤209的判断结果为否的情况下的操作。如果步骤209的判断结果为否,则进行至步骤211,依据预定的标准,选取方法作为API。需要指出的是,虽然与步骤210判断结果为否时一样,均执行步骤211,但是此时预定的标准是不同的。当209判断结果为否时执行步骤211的目的是从多个没有覆盖全部参数的方法中选取方法作为API。根据本发明的一个实施例,此时预定的标准是指从所述调用栈信息中选取覆盖率最高的方法作为应用编程接口API。覆盖率最高是指例如,方法C覆盖了2个参数,方法D覆盖了3个参数,而在用户输入信息中总共有5个参数,则虽然方法C和方法D均没有覆盖全部参数,但是方法D的覆盖率最高(60%)。根据本发明的另一个实施例,此时预定的标准是指将所有覆盖了用户输入信息的部分参数的方法按照覆盖率高低排序作为候选方法输出,最终由开发人员根据情况从中选择一个方法作为API。也就是说,将上述方法C和方法D按照D在前C在后的顺序输出,由开发人员决定选择哪个方法作为API。根据本发明另一个实施例,此时预定的标准指大于预定的覆盖率的阈值(例如95%)。本领域技术人员应当了解,上文给出的关于预定的标准的实施例仅仅是为了示例,完全可以根据具体的系统运行环境而选择其它的标准,无论选取什么样的标准均落入本发明的保护范围。
还需要强调的是,在步骤209中如果判断结果为是,也就是说在调用栈信息中存在覆盖全部参数的方法,那么完全可以不再对调用栈信息中的其它方法进行判断,而是一旦检查到一个覆盖了全部参数的方法就马上选定该方法作为API。因此,在这种情况下,就不需要执行后续的判断步骤210以及步骤211,而直接进行至步骤212。
本领域技术人员还需要了解的是,步骤209中的判断结果为否的出现的概率比较低,因为通常来讲,在调用栈信息中必然会存在至少一个覆盖了全部参数的方法。之所以在本发明的实施例中也考虑到判断结果为否的情况,是因为在某些编程结构不规范的网络应用中,可能出现没有任何一个方法覆盖了全部参数的情形。
还需要强调的是,在上文描述的步骤204中,判断结果为否的情况也比较低。因为通常来讲,用户输入的值一定会在调用栈信息中的某个方法的参数中体现为相同的参数值。之所以在本发明的实施例中也考虑到步骤204判断结果为否的情况,是因为在某些情况下例如网络应用要求输入的数值必须是整数值(自动四舍五入小数部分),而用户输入的值是例如“35.6”,那么调用栈信息中的方法的参数值就是“36”,而在步骤201中所获取的用户输入信息的值则可能仍然为“35.6”,这样在做参数值匹配的时候为了避免错失应当匹配的方法,而加入步骤206进行相似度判断。但是本领域技术人员应当了解,图2所示的方法中的判断步骤204和209均不是必需的步骤。
图3A至3D是一个根据本发明的实施例基于网络应用的功能而生成网络服务的具体示例。
图3A示出了网络应用的“创建新用户”功能的用户输入信息界面。在图3A中,总共有8个输入域,也就是8个参数。用户已经在这8个输入域中输入了相应的8个输入值。当用户输入了这8个输入值后,即获取这8个输入值。并且在用户完成输入并点击“Save”按钮时,获取该“创建新用户”功能的调用栈信息如图3B所示。
图3B示出了“创建新用户”功能的基于用户的8个输入值的调用栈信息。在图3B中可以看出,调用栈信息中包括多个类,如CreateUser、UserVO和DBUtil等。其中每个类下又有一些方法,例如CreateUser类下有一个名为getUserInfo()的方法,方法在本示例的调用栈信息中由“i”标记。
接下来利用根据本发明一个实施例的方法将所获取的用户输入信息(8个输入值)与图3B示出的调用栈信息进行参数匹配。大致的参数匹配的过程在图3C中示出。从图3C中可以看出,所获取的8个用户输入值分别与类UserVO下的8个方法的参数值(参数值即为每个方法括号中的内容)相同,因此确定该8个用户输入值所对应的8个输入域(参数)分别与该8个方法相匹配。接下来,根据参数匹配的结果以及调用栈信息,从调用栈信息中选取方法作为应用编程接口API。根据本发明的一个实施例,选取覆盖了全部参数的方法作为API。从图3C中可以看出,类DBUtil下的方法insertUserIntoDB(UserVOuser)的参数包括了类UserVO,而上面匹配的8个方法又都是属于类UserVO下的方法,因此方法insertUserIntoDB(UserVOuser)即为覆盖了全部参数的方法。将该方法insertUserIntoDB选为API。
图3D示出了将该选定的方法作为“创建新用户”这个网络应用的功能的API,并利用这个API生成对应于“创建新用户”这个网络应用的功能的网络服务(WebService)的结果。该生成的网络服务可以由其它应用程序的开发人员进行调用,从而实现了“创建新用户”这个网络应用的功能重用。
通过图3的例子可以看出,利用本发明的实施例,可以巧妙地利用调用栈的信息而自动地识别出适用的API,从而避免了通过人工阅读源代码的方式而花费大量的人力、精力寻找网络应用或者网络应用的功能的API,节省了生成网络服务的时间、提高了生成网络服务的效率、提高了基于“遗留系统”而生成网络服务从而节约新系统开发成本的效率。
图4示出了根据本发明一个实施例的用于基于网络应用而生成网络服务的系统的框图。图4所示的系统在总体上由系统400表示。具体地:系统400包括输入信息获取装置401,用于获取网络应用的用户输入信息;调用栈信息获取装置402,用于获取网络应用基于所述用户输入信息在运行时产生的调用栈信息;参数匹配装置403,用于将用户输入信息与调用栈信息进行参数匹配;方法选取装置404,用于根据参数匹配的结果和调用栈信息,从调用栈信息中选取方法作为应用编程接口API;网络服务生成装置405,用于利用应用编程接口API生成网络服务。本领域技术人员应当了解,系统400从总体上对应于图1所示的方法,系统400中的步骤401至405可以理解为分别对应于图1所示的方法中的步骤101至105。
进一步地,系统400中的参数匹配装置403可以进一步被配置为执行图2所示的方法中的步骤203至208,并且方法选取装置404可以进一步被配置为执行图2所示的方法中的步骤209至212。
通过以上对具体实施例的描述,本领域技术人员可以理解,上述的系统、装置和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本实施例的装置、服务器及其单元可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合实现。
虽然以上结合具体实施例,对本发明的利用远程应用处理本地文件的系统及方法进行了详细描述,但本发明并不限于此。本领域普通技术人员能够在说明书教导之下对本发明进行多种变换、替换和修改而不偏离本发明的精神和范围。应该理解,所有这样的变化、替换、修改仍然落入本发明的保护范围之内。本发明的保护范围由所附权利要求来限定。
Claims (10)
1.一种用于基于网络应用而生成网络服务的方法,包括:
获取网络应用的用户输入信息;
获取网络应用基于所述用户输入信息在运行时产生的调用栈信息;
将所述用户输入信息与所述调用栈信息进行参数匹配;
根据所述参数匹配的结果以及所述调用栈信息,从所述调用栈信息中选取方法作为应用编程接口API;以及
利用所述应用编程接口API生成网络服务,其中将所述用户输入信息与所述调用栈信息进行参数匹配包括:
将所述用户输入信息中对特定输入域的输入值与所述调用栈信息中的方法的参数值进行比较,
如果所述输入值与所述参数值相同,则确定所述输入值所对应的用户输入信息的参数与所述调用栈信息中的方法相匹配,以及
如果所述输入值与所述参数值不同,则根据预定的相似度阈值确定所述输入值所对应的用户输入信息的参数是否与所述调用栈信息中的方法相匹配。
2.如权利要求1所述的方法,其中根据所述参数匹配的结果,从所述调用栈信息中选取方法作为应用编程接口API包括:
根据所述参数匹配的结果,从所述调用栈信息中选取覆盖了所述用户输入信息的所有参数的方法作为应用编程接口API。
3.如权利要求2所述的方法,如果所述调用栈信息中存在多个覆盖了所述用户输入信息的所有参数的方法,则根据所述参数匹配的结果,从所述调用栈信息中选取覆盖了所述用户输入信息的所有参数的方法作为应用编程接口API,是依据下列标准之一进行的:
从所述多个覆盖了所述用户输入信息的所有参数的方法中选取位于所述调用栈信息的最底层的方法;
从所述多个覆盖了所述用户输入信息的所有参数的方法中选取位于所述调用栈信息的最顶层的方法;或者
提供所述多个覆盖了所述用户输入信息的所有参数的方法作为候选方法。
4.如权利要求1-3任一所述的方法,如果调用栈信息中不存在覆盖了所述用户输入信息的所有参数的方法,则根据所述参数匹配的结果,从所述调用栈信息中选取方法作为应用编程接口API,是依据下列标准之一进行的:
从所述调用栈信息中选取覆盖率最高的方法作为应用编程接口API;或者
将所有覆盖了所述用户输入信息的部分参数的方法按照覆盖率高低排序作为候选方法。
5.如权利要求1-3任一所述的方法,其中所获取的网络应用的用户输入信息是指针对所述网络应用的特定功能的用户输入信息。
6.一种用于基于网络应用而生成网络服务的系统,包括:
输入信息获取装置,用于获取网络应用的用户输入信息;
调用栈信息获取装置,用于获取网络应用基于所述用户输入信息在运行时产生的调用栈信息;
参数匹配装置,用于将所述用户输入信息与所述调用栈信息进行参数匹配;
方法选取装置,用于根据所述参数匹配的结果以及所述调用栈信息,从所述调用栈信息中选取方法作为应用编程接口API;以及
网络服务生成装置,用于利用所述应用编程接口API生成网络服务,其中参数匹配装置被进一步配置为:
将所述用户输入信息中对特定输入域的输入值与所述调用栈信息中的方法的参数值进行比较,
如果所述输入值与所述参数值相同,则确定所述输入值所对应的用户输入信息的参数与所述调用栈信息中的方法相匹配,以及
如果所述输入值与所述参数值不同,则根据预定的相似度阈值确定所述输入值所对应的用户输入信息的参数是否与所述调用栈信息中的方法相匹配。
7.如权利要求6所述的系统,其中方法选取装置被进一步配置为:
根据所述参数匹配的结果,从所述调用栈信息中选取覆盖了所述用户输入信息的所有参数的方法作为应用编程接口API。
8.如权利要求7所述的系统,其中方法选取装置被进一步配置为:如果所述调用栈信息中存在多个覆盖了所述用户输入信息的所有参数的方法,则根据所述参数匹配的结果,从所述调用栈信息中选取覆盖了所述用户输入信息的所有参数的方法作为应用编程接口API,是依据下列标准之一进行的:
从所述多个覆盖了所述用户输入信息的所有参数的方法中选取位于所述调用栈信息的最底层的方法;
从所述多个覆盖了所述用户输入信息的所有参数的方法中选取位于所述调用栈信息的最顶层的方法;以及
提供所述多个覆盖了所述用户输入信息的所有参数的方法作为候选方法。
9.如权利要求6-8任一所述的系统,其中方法选取装置被进一步配置为:如果调用栈信息中不存在覆盖了所述用户输入信息的所有参数的方法,则根据所述参数匹配的结果,从所述调用栈信息中选取方法作为应用编程接口API,是依据下列标准之一进行的:
从所述调用栈信息中选取覆盖率最高的方法作为应用编程接口API;以及
将所有覆盖了所述用户输入信息的部分参数的方法按照覆盖率高低排序作为候选方法。
10.如权利要求6-8任一所述的系统,其中输入信息获取装置所获取的网络应用的用户输入信息是指针对所述网络应用的特定功能的用户输入信息。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010188585.6A CN102262527B (zh) | 2010-05-31 | 2010-05-31 | 生成网络服务的方法和系统 |
US13/114,237 US8973020B2 (en) | 2010-05-31 | 2011-05-24 | Generating a web service |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010188585.6A CN102262527B (zh) | 2010-05-31 | 2010-05-31 | 生成网络服务的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102262527A CN102262527A (zh) | 2011-11-30 |
CN102262527B true CN102262527B (zh) | 2015-12-09 |
Family
ID=45009165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010188585.6A Expired - Fee Related CN102262527B (zh) | 2010-05-31 | 2010-05-31 | 生成网络服务的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8973020B2 (zh) |
CN (1) | CN102262527B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102938763B (zh) * | 2012-11-09 | 2015-11-25 | 北京奇虎科技有限公司 | 网络应用接入网络运营平台的应用接入系统及方法 |
CN111913875B (zh) | 2014-10-24 | 2024-04-26 | 谷歌有限责任公司 | 用于基于软件执行跟踪自动加标签的方法和系统 |
US10091076B2 (en) | 2015-08-25 | 2018-10-02 | Google Llc | Systems and methods for configuring a resource for network traffic analysis |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582048A (zh) * | 2008-05-16 | 2009-11-18 | 国际商业机器公司 | 一种用于缺陷管理的方法和系统 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040044656A1 (en) * | 2002-08-29 | 2004-03-04 | Manoj Cheenath | System for web service generation and brokering |
US7590988B2 (en) | 2005-03-08 | 2009-09-15 | Microsoft Corporation | Dynamic service generation for legacy components |
US7593994B2 (en) | 2005-03-08 | 2009-09-22 | Microsoft Corporation | Generating a dynamic web service and dynamic service surrogate for legacy application components |
US20070038896A1 (en) * | 2005-08-12 | 2007-02-15 | International Business Machines Corporation | Call-stack pattern matching for problem resolution within software |
US7840946B2 (en) * | 2006-06-02 | 2010-11-23 | International Business Machines Corporation | System and method for matching a plurality of ordered sequences with applications to call stack analysis to identify known software problems |
US7590661B2 (en) | 2006-07-31 | 2009-09-15 | Ricoh Company, Ltd. | Advanced Web Services on a legacy platform |
KR100843701B1 (ko) | 2006-11-07 | 2008-07-04 | 소프트캠프(주) | 콜 스택에 기록된 정보를 이용한 에이피아이 확인방법 |
US7996401B2 (en) * | 2007-05-31 | 2011-08-09 | International Business Machines Corporation | Inserting new transactions into a transaction stream |
US9594670B2 (en) * | 2008-07-03 | 2017-03-14 | International Business Machines Corporation | Managing software dependencies during software testing and debugging |
US8566795B2 (en) * | 2008-07-15 | 2013-10-22 | International Business Machines Corporation | Selectively obtaining call stack information based on criteria |
-
2010
- 2010-05-31 CN CN201010188585.6A patent/CN102262527B/zh not_active Expired - Fee Related
-
2011
- 2011-05-24 US US13/114,237 patent/US8973020B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582048A (zh) * | 2008-05-16 | 2009-11-18 | 国际商业机器公司 | 一种用于缺陷管理的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102262527A (zh) | 2011-11-30 |
US20110296442A1 (en) | 2011-12-01 |
US8973020B2 (en) | 2015-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022160707A1 (zh) | 结合rpa和ai的人机互动方法、装置、存储介质及电子设备 | |
CN104133772B (zh) | 一种自动生成测试数据的方法 | |
Galindo et al. | Testing variability-intensive systems using automated analysis: an application to android | |
CN106294134A (zh) | 代码的崩溃定位方法及装置 | |
CN104298604A (zh) | 云服务健壮性测试系统及测试方法 | |
CN112148278A (zh) | 可视化的区块链智能合约框架及智能合约开发部署方法 | |
CN106874028A (zh) | 应用部署方法和装置 | |
CN107832059A (zh) | 一种基于Makefile的代码静态分析方法和装置 | |
CN111737697B (zh) | 一种基于原子化功能的安全扫描系统及扫描方法 | |
CN112363953A (zh) | 基于爬虫技术和规则引擎的接口测试用例生成方法及系统 | |
CN102262527B (zh) | 生成网络服务的方法和系统 | |
Singh et al. | Demand based test case generation for object oriented system | |
CN110705637A (zh) | 一种基于应用安装列表信息的用户分类的方法、装置和电子设备 | |
CN102541564B (zh) | 一种ui复用方法及装置 | |
CN114527993A (zh) | 应用程序部署方法、装置、设备及介质 | |
CN111427770B (zh) | 一种资源测试方法及相关设备 | |
US11061662B1 (en) | Maintenance of fast-changing software applications | |
CN114116471A (zh) | 一种自动化代码扫描方法、系统、电子设备与存储介质 | |
CN113032256A (zh) | 自动化测试方法、装置、计算机系统和可读存储介质 | |
CN113468446A (zh) | 一种支持识别第三方二维码数据的方法、系统及设备 | |
Philip et al. | Composite pattern to handle variation points in software architectural design of evolving application systems | |
Waseem et al. | Containerization in Multi-Cloud Environment: Roles, Strategies, Challenges, and Solutions for Effective Implementation | |
US11625317B2 (en) | Systems and methods for quality control of an enterprise IT environment | |
CN117435243B (zh) | 一种自动化合包及部署方法与系统 | |
US20200236000A1 (en) | System and Method for Automated Cross-Application and Infrastructure Dependency Mapping |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151209 |
|
CF01 | Termination of patent right due to non-payment of annual fee |