专利名称:用于从现有万维网站点创建万维网服务的系统和方法
技术领域:
本发明涉及万维网(web)服务技术,并尤其涉及从现有的万维网应用程序发布基于网页的交易作为万维网服务。
背景技术:
每年,越来越多地买卖在因特网上办理。在诸如因特网的网络上实施的买卖过程或交易通常是利用实现交易的称作万维网应用程序的软件组件通过网页实现的。一些具有拥有交易能力的因特网站点的企业提供商家到顾客(B2C)或商家到商家(B2B)的通信。
参考图1描述B2C通信。传统地,如图1中虚线箭头所示,用户16利用万维网应用程序18的万维网应用程序接口32在因特网12上实施交易。用户通常通过万维网应用程序的网页经由因特网12和万维网应用程序接口32而访问万维网应用程序18的交易22-24。网页通常以用于个人计算机上的浏览器的超文本标记语言(HTML)、用于移动电话上的浏览器的无线标记语言(WML)等写成。万维网应用程序18通过提供用户导航的网页而将接口呈现给用户,以执行交易22,24。
同样参考图1描述B2B通信。对于B2B通信,服务器侧的万维网应用程序必须为客户端应用程序提供编程接口。为此目的,开发了万维网服务。
万维网服务是本行业技术人员熟知的软件组件。万维网服务的长处在于提供了在不具有每个应用程序的特定实现的先验知识的条件下集成各种不同种类的应用程序的标准化方法。通过使用标准化描述语言诸如万维网服务描述语言(WSDL)、简单对象访问协议(SOAP)、和通用描述发现集成(universaldescription,discovery,and integration,UDDI),万维网服务允许以不同源语言实现的不同应用程序之间通信。WSDL文件是以可扩展标记语言(XML)书写的描述语言文件,其描述了可以由用户应用程序(也称作万维网服务客户端)调用的万维网服务提供的函数及其相关联的输入/输出参数。用户应用程序在访问万维网服务之前读取WSDL文件并且据此调整其调用。WSDL可以存储在与托管(host)万维网服务的服务器相同的服务器上或者存储在不同的服务器或目录中。万维网服务允许对分布在因特网上的交易进行程序访问(programmatic access)以提供数据或功能给另一应用程序。
但是,创建、部署、和发布万维网服务以实施万维网应用程序交易很复杂并且需要高级编程技术。所需的编程量是时间密集的并且所涉及的代价相当大,例如通常需要复杂组件诸如应用程序服务器。通常,企业不能够承担与万维网服务技术相关联的花销。
在图1的计算机网络系统10中示出了构建及部署万维网服务14的当前方案。这样的万维网服务通常由服务提供商或者万维网应用程序18的拥有者编程得到,并且在托管万维网应用程序的相同万维网服务器26上实现。万维网服务14由两个逻辑块构成,一个用作与用户应用程序20的接口,即万维网服务接口28,一个用作与万维网应用程序18的接口,即万维网服务实现30。有关万维网服务器和万维网应用程序语言代码的知识允许拥有者对万维网服务接口28和万维网服务实现30进行编程和部署,该万维网服务实现30直接与万维网应用程序的代码交互以实施交易22-24。万维网服务接口28通过诸如因特网12的网络与用户应用程序20交互,以执行来自用户应用程序的调用以及实施万维网应用程序18的交易22-24。万维网服务经由万维网服务实现30直接与交易交互。尽管实现万维网服务需要高级编程技术,但是其是本领域公知的实现万维网服务的公共技术。通过图1中的实线箭头示出了用户应用程序、万维网应用程序交易、和万维网服务之间的相互关系。
先前方案的主要问题在于,高级编程技术是必要的,并且为实现及部署万维网服务需要万维网应用程序的交易接口的知识。需要一种减轻与先前方案相关联的问题的生成万维网服务的系统和方法。
发明内容
本发明的目的是提供一种在无需具有有关万维网应用程序交易编程接口的知识的情况下开发万维网服务的系统和方法。
根据本发明,提供了一种用于生成在万维网应用程序与用户应用程序之间提供编程接口的万维网服务的方法,该方法包括下述步骤创建万维网应用程序的至少一个交易的导航流的脚本,该导航流代表在所述至少一个交易期间、用户与万维网应用程序的万维网应用程序接口之间的交互;创建下述文本文件,该文本文件描述用于执行该导航流所代表的至少一个交易的要由用户应用程序调用的函数及输入或输出参数;创建与文本文件中描述的函数的调用对应的万维网服务接口代码;以及创建万维网服务实现代码,用于执行与导航流所代表的至少一个交易对应的交互。
一个实施例通过记录实施万维网应用程序中的交易的人类用户的导航流而创建导航脚本。万维网服务实现代码的导航流的脚本可以由回归(regression)测试工具生成。导航流的脚本可以以脚本语言书写。以导航流脚本作为输入而创建文本文件。该文本文件可以是WSDL文件。
本发明的另一方面提供了一种用于生成在万维网应用程序与用户应用程序之间提供编程接口的万维网服务的系统,所述系统包括用于创建万维网应用程序的至少一个交易的导航流的脚本的装置,该导航流代表在所述至少一个交易期间、用户与万维网应用程序的万维网应用程序接口之间的交互;用于创建下述文本文件的装置,该文本文件描述用于执行该导航流所代表的至少一个交易的要由用户应用程序调用的函数及输入或输出参数;用于创建与文本文件中描述的函数的调用对应的万维网服务接口代码的装置;以及用于创建万维网服务实现代码的装置,用于执行与导航流所代表的至少一个交易对应的交互。
在一个实施例中,该文本文件可以通过处理记录实施万维网应用程序中的交易的人类用户的导航流的脚本而生成。系统万维网服务实现代码的导航流的脚本可以由回归测试工具生成。导航流可以以脚本语言书写,以及该文本文件可以是WSDL文件。万维网服务可以在托管万维网应用程序的万维网服务器中实现的。在另一实施例中,万维网应用程序可以被托管在万维网服务器上,而万维网服务可以由另一个服务器托管。
通过本发明实施例的解决方案,可以构建万维网服务而无需通常属于万维网应用程序拥有者的交易编程接口的知识。从而,可以根据本发明的实施例由客户端应用程序拥有者或因特网服务提供商来开发万维网服务。
本发明实施例的方法的另一优点在于,可以利用现有的测试工具和/或通过书写从导航流创建WSDL文件的程序、和/或通过书写将WSDL翻译成万维网服务接口代码的程序、和/或通过书写从导航流创建万维网服务实现代码的程序来自动执行这些步骤。所有这些程序都可以由本领域普通技术人员编写而没有大的开发难度。
最后,利用本发明实施例的解决方案,可以利用该方法扩充向用户提供B2C通信的万维网应用程序,以开发向用户应用程序提供B2B通信的万维网服务。
通过参考附图,现在将仅仅举例描述并入本发明的从万维网站点生成基于网页的处理或交易作为万维网服务的系统和方法,在附图中
图1示出了根据现有技术的具有万维网服务实现的计算机网络系统;
图2示出了实现本发明实施例的计算机网络系统;以及
图3示出了根据本发明实施例的方法。
具体实施例方式
本发明的一个实施例可以以图2中所示的计算机网络40实现。在诸如因特网12的网络中的万维网服务器26或外部万维网站点提供商上实现万维网应用程序。利用本领域公知的许多平台之一而在万维网服务器26上实现万维网应用程序。万维网服务器可以被配置为托管一个或多个万维网应用程序18。万维网应用程序可以用至少一个交易1-N22-24配置。当然,应该理解,交易22-24可以包括在最广泛的意义上定义的交易,诸如处理、信息检索、执行函数等等,而不应认为仅限于商务交易。用户应用程序20可以通过万维网服务42发送对实施万维网应用程序的交易的调用。万维网服务可以基于现有的万维网应用程序创建,而无需对现有应用程序接口做任何改变。万维网服务42可以在万维网应用程序18的万维网服务器26上或者在与万维网服务器26分离或外部的另一服务器上实现。优选实施例的万维网服务42的万维网服务实现46通过万维网应用程序的用户16可用的相同的万维网应用程序接口32与万维网应用程序18交互。
在图2中,在本发明实施例的万维网服务中,万维网服务42利用万维网应用程序18的万维网应用程序接口32经由因特网12与万维网应用程序18通过接口连接(interface)并交互。用户应用程序20经由万维网服务接口44调用万维网服务器的万维网应用程序18中的交易22-24。在向万维网服务接口44发送调用之前,最初由用户应用程序20从万维网服务42的万维网服务接口44读取WSDL文件48。万维网服务接口44接收来自用户应用程序20的调用,并且通过网络12经由万维网服务实现46将该调用传递到万维网应用程序18的万维网应用程序接口32以运行交易22-24。万维网服务实现调用万维网应用程序接口并且模拟由运行万维网应用程序交易的用户进行的网页交互。
在本发明的实施例中,用户应用程序20担任万维网服务客户端来远程执行诸如交易22-25的功能。应该理解,客户端或用户应用程序20可以经由因特网通过接口连接或调用一个或多个万维网服务42,但是为说明的目的仅示出了一个万维网服务42。如后面参考图3进一步详细讨论的,可以从现有万维网应用程序中手动或自动地生成万维网服务42或部分万维网服务,以便允许来自客户端应用程序的连接。在另一实施例中,万维网服务42可以由同一万维网服务器26托管(未示出),或者万维网服务可以由外部服务提供商托管。
本发明的实施例被示出为图3中的方法50。该方法用于从拥有交易的现有万维网应用程序生成万维网服务。万维网服务包括具有代表万维网服务接口的模块、和代表万维网服务实现的模块的代码。首先定义或创建52导航流以代表运行交易时用户激活的网页交互。可以经由图形用户界面生成脚本。可以使用形成导航流的网页交互的任何其它可能的表示。可以将该脚本存储在开发者工作站中的存储器(未示出)中。该脚本可以以任何格式定义,其捕捉并且详细定义客户端用户在万维网站点的网页中为完成交易而实施的一系列手动步骤或交互。由用户导航万维网站点以载入单个页面而生成的样本脚本如下
/*1.初始-设置环境*/ lr_rendezvous(“rendezvous_1”);/*设置rendezvous点*/ void lr_whoami(int FAR *vuser,LPCSTR FAR *vuser_group,int FAR *scid); LPCSTR my_host=lr_get_host_name(); LPCSTR my_controller=lr_get_master_host_name(); lr_save_datetime(“Tomorrow is%B%d%Y”,DATE_NOW+ONE_DAY,“next”); lr_output_message(lr_eval_string(“”));/*2.动作*/ int lr_start_transaction(LPCSTR transaction_name);/*开始交易*/ /*注意LPCSTR原型被自动定义为char**/ /*命令行解析*/<!-- SIPO <DP n="5"> --><dp n="d5"/>lr_get_attrib_double lr_get_attrib_long lr_get_attrib_string(char *parm 1); void lr_peek_events();/*暂停*/ void lr_think_time(int time);/*从0到32.767*/ /*对每个Vuser发送数据点到t_rep.eve6事件文件*/ cpu_val=cpu_check(); lr_user_data_point(“cpu”,cpu_val); lr_user_data point(“data_point_1”,1); /*开始否定测试情况*/ lr_continue_on_error(1);/*当出现错误时1=Continue*/ int lr_advance_param(LPCSTR param);/*下一个*/ /*检查实际结果是否是所预期的*/ /*关于HTTP请求的信息*/ { int HttpRetCode,HttpRetSize,HttpRetTime; web_url(“dogbert”,“URL=http//dogbert”,“TargetFrame=_TOP”,LAST); HttpRetCode= web_get_int_property(HTTP_INFO_RETURN_CODE); if(HttpRetCode==200) lr_log_message(“The Vuser successtully accessed the page”); else lr_log_message(“The Vuser failed to access the page”); } HttpRetSize= web_get_int_property(HTTP_INFO_DOWNLOAD_S1ZE); HttpRetTime= web_get_int_property(HTTP_INFO_DOWNLOAD_TIME); /*校验其它对象*/ int web_find(char *FindName,,,LAST);/*文本*/ int web image check(char* CheckName,,“alt=Alt”,“src=Src”,LAST); int web_java_check(char *Name,,“Classname=…”,,LAST);/*3.结束*/int lr_end_transaction(LPCSTR transaction name);/*结束交易*/
上述具有一个网页交互的脚本是出于说明的目的提供的。实际的脚本将可能包含几个交互。万维网应用程序的每个交易可以由这样的脚本来表示。
脚本可以手动创建,或者在另一实施例中,脚本可以由万维网站点测试工具生成,该万维网站点测试工具是例如可从纽约、Armonk的国际商业机器公司得到的IBM RATIONAL SUITE TESTSTUDIO(IBM、RATIONAL SUITE、和TESTSTUDIO是国际商业机器公司在某些国家的商标)、或者可从加利福尼亚的Sunnyvale的Mercury Interactive公司得到的LOADRUNNER(LOADRUNNER是Mercury Interactive公司在某些国家的商标)。然后在优选实施例中可以使用存储为脚本文件的导航流而从现有的万维网应用程序中生成万维网服务代码。万维网服务实现46和万维网服务接口44被生成。可以如图3所示并行地或者以任何其它的顺序生成万维网服务接口44和万维网服务实现46。
从导航流中生成56万维网服务实现代码。万维网服务实现代码模拟交易22-24的网页交互。万维网服务实现46与万维网应用程序接口32通过接口连接或者交互。
在另一实施例中,万维网服务实现代码可以由生成回归测试的万维网站点测试工具诸如IBM RATIONAL SUITE TESTSTUDIO自动生成。这些工具创建模拟网页间交互的模块的代码。万维网服务实现可以用Java代码、.net等编写。
为了生成用于与客户端或用户应用程序20交互和通过接口连接的万维网服务接口代码,从导航流中创建62 WSDL文件。由脚本翻译器将脚本翻译44成描述万维网服务的编程语言,诸如WSDL文件,用于描述每个交易的每个步骤的函数以及输入和输出参数。例如,在一个情景下,交易的函数可以是定购一本书,其中输入和输出参数可以包括书名、作者名字、国际标准图书编号(ISBN)等等。翻译的过程可以手动完成。本领域普通技术人员也可以开发将导航流的脚本翻译成WSDL的程序。
一旦导航脚本被翻译成诸如WSDL的语言以描述万维网服务函数及其输入/输出参数,则生成64万维网服务接口代码。万维网服务接口代码是从WSDL文件中生成的。该代码可以是与系统环境兼容的任何代码类型,例如Java、.net等等。如果开发了程序,则万维网服务接口代码生成的步骤也可以自动完成。本领域普通技术人员可以开发将WSDL翻译成Java代码等的程序。
万维网服务实现主要由万维网服务内的模块组成,例如,用于调用具有输入和输出参数的函数(该调用类似于所生成的脚本中注册的调用)的模块、以及用于在交易期间模拟网页内的交互的代码模块。
应该理解,上述从现有的万维网应用程序生成万维网服务的系统和方法提供了某些优点,诸如从基于网页的交易中生成万维网服务。另一优点在于,万维网服务是基于在万维网站点中的网页上实施的交易生成的,并且无需应用程序的明确的知识(express knowledge)。利用该配置,万维网服务的生成和后续维护没有先前可实现的复杂,并且基于网页的交易可以从现有万维网应用程序中部署为万维网服务。应该理解,本发明的特定实施例是出于说明的目的讨论的,并且在不背离所附权利要求定义的范围的条件下可以进行各种修改。
权利要求
1.一种用于生成在万维网应用程序与用户应用程序之间提供编程接口的万维网服务(42)的方法(50),所述方法包括下述步骤
创建(52)万维网应用程序(18)的至少一个交易的导航流的脚本,该导航流代表在所述至少一个交易(22,24)期间用户(16)与万维网应用程序的万维网应用程序接口(32)之间的交互;
创建(62)下述文本文件,该文本文件描述用于执行该导航流所代表的至少一个交易的要由用户应用程序(20)调用的函数及输入或输出参数;
创建与文本文件(48)中描述的函数的调用对应的万维网服务接口代码(64);以及
创建万维网服务实现代码(56),用于执行与导航流所代表的至少一个交易对应的交互。
2.如权利要求1所述的方法,其中,所述创建文本文件(62)是通过记录实施万维网应用程序(18)中的交易(22,24)的人类用户的导航流而生成的。
3.如权利要求1或2所述的方法,其中,所述从导航流创建万维网服务实现代码(56)是由回归测试工具生成的。
4.如权利要求1到3中任一个所述的方法,其中,所述导航流是以脚本语言编写的。
5.如权利要求1到4中任一个所述的方法,其中,所述文本文件是WSDL文件(48)。
6.一种用于生成在万维网应用程序(18)与用户应用程序(20)之间提供编程接口的万维网服务(42)的系统(40),所述系统包括
用于创建万维网应用程序(18)的至少一个交易的导航流的脚本的装置,该导航流代表在所述至少一个交易(22,24)期间用户(16)与万维网应用程序的万维网应用程序接口(32)之间的交互;
用于创建下述文本文件(48)的装置,该文本文件描述用于执行该导航流所代表的至少一个交易的要由用户应用程序调用的函数及输入或输出参数;
用于创建与文本文件(48)中描述的函数的调用对应的万维网服务接口代码(64)的装置;以及
用于创建万维网服务实现代码的装置,用于执行与导航流所代表的至少一个交易对应的交互。
7.如权利要求6所述的系统,其中,所述文本文件(48)是通过记录实施万维网应用程序(18)中的交易(22,24)的人类用户的导航流而生成的。
8.如权利要求6或7所述的系统,其中,所述服务实现代码的导航流是由回归测试工具生成的。
9.如权利要求6到8中任一个所述的系统,其中,所述导航流是以脚本语言编写的。
10.如权利要求6到9中任一个所述的系统,其中,所述文本文件是WSDL文件(48)。
11.如权利要求6到10中任一个所述的系统,其中,所述万维网服务(42)是在托管万维网应用程序(18)的万维网服务器(26)中实现的。
12.如权利要求6到10中任一个所述的系统,其中,所述万维网应用程序(18)被托管在万维网服务器(26)上,而所述万维网服务(42)由另一个服务器托管。
全文摘要
一种用于从具有基于网页的商业处理或交易的现有万维网站点(18)中生成万维网服务(42)的系统(40)和方法(50)。生成代表执行交易所涉及的用户导航序列的脚本。脚本元素包括万维网应用程序调用、输入/输出参数、以及交易的各元素之间的相互关系。从导航脚本生成WSDL文件、万维网服务接口代码、和万维网服务实现代码,并且可以将它们发布到本地的万维网站点或者远程站点上。
文档编号G06Q30/00GK1794296SQ20051012480
公开日2006年6月28日 申请日期2005年11月15日 优先权日2004年12月23日
发明者莱昂内尔·莫米贾, 戴维·洛皮亚 申请人:国际商业机器公司