web服务中的安全互操作性的制作方法

文档序号:7873624阅读:200来源:国知局
专利名称:web服务中的安全互操作性的制作方法
技术领域
本发明主要涉及web服务,尤其涉及web服务中的互操作性。
背景技术
web服务是与因特网上的分布式计算的 流并进的基本构件块。开放标准和对软件应用程序中通信和协作的注重已经创建了这样的环境,即web服务正变成选择应用程序集成的平台。应用程序是通过使用来自各种来源的多个web服务而构造的,这些来源共同作用,而不管它们驻留于何处,也不管它们是如何被实现的。web服务代表这样的箱功能,其可被使用或被重复使用,而不必了web服务的内部工作方式。web服务体系结构的其中一个主要优点是该体系结构允许在不同平台上用不同语言写的web服务通过消息简易地相互通信。而且,大 的企业和公司已经拥有web基础设施以及对维护这样的基础设施有专业知识和丰经验的人员,从而这就允许对作为将来应用程序平台的web服务的更可改变的采用。
web服务的示例包括可容易地合并到应用程序中的信息源,诸如股价、天气预报、体育比赛得分等等。除信息源之外,我们可象整个这样的应用程序类,其可从web服务中构建,用于分析并聚集兴趣的人所需要的信息,并将该信息提供给该兴趣的人。例如,考虑概括某人整个财政描述的电子表格股、401K、银行帐户、贷款等等。若这一信息通过web服务是可用的,则电子表格应用程序可连续更新该信息。虽然现在绝大多数的信息现在是以不调和且偶然元素的混合在web上可用的,但是web服务可使对所有信息的程序设计访问变得更简单和更可靠。
web服务是多样的,但是几乎所有的web服务都有以下三个共同点(1)web服务通过标准协议经由一组接口而将有用的功能展示给用户,该协议如简单对象访问协议(SOAP);(2)web服务使用web服务描述语言(WSDL)描述文档中的接口集,被称作web服务合约,它在写的时候是足够详细的,以允许用户构建与web服务进行交谈的客户端应用程序;以及(3)web服务被注册,这样以使潜在用户可使用通用发现描述和集成(UDDI)而简单找到web服务。换言之,web服务是通过特定协议展示在web上、以特定的WSDL合约描述、并在UDDI的特定位置处注册的一段软件。
如上所述,WSDL合约足够详细的描述了web服务接口,以允许用户构建客户端应用程序。更具体的说,WSDL合约是描述以特定协议写的一组消息以及这些消息将如何被交换的文档。换言之,WSDL合约根据web服务可生成并接受的消息而描述web服务接口。WSDL合约是可读且可编辑的,但在绝大多数的情况下,WSDL合约要由软件产生并消耗。
为了WSDL合约的价值,考虑需要调用由用户的商务伙伴之一提供的web服务中的方法的用户。用户可从商务伙伴获取由该方法生成并接受的样本消息。然后,用户可继续写应用程序,以产生并消耗那些看起来像给定样本消息的消息。然而,这个技术却是充满错误的。例如,用户可能在消息中看到客户标识“2837”,并假定该标识是整数,而它事实上却是串。WSDL合约以不含糊的表示法指定请求消息必须包含什么以及响应消息看起来像什么。
WSDL合约用来描述消息格式的表示法是基于XML模式标准的,它不依靠任何特定的编程语言,且其适用于描述可从多种平台和编程语言访问的web服务接口。除描述消息内容之外,WSDL合约定义服务在何处是可用的,以及可使用何种通信协议来与服务交谈。这样,WSDL合约应定义写应用程序以同web服务一起工作所需的所有东西。
令人遗的是,WSDL合约缺乏精确定义应用程序如何与web服务交互的表达能力。尽管术语“合约”意指两个软件实体间的绑定协定,但是与web服务交互的应用程序完全可以忽略WSDL合约的条款。这样,WSDL合约只像个纸老虎。

图1所示的系统100更详细地阐明了这个问题。
系统100包括客户机102,它是访问由局域网或诸如因特网等广域网上的另一台计算机,如服务器106提供的共享网络资源的计算机。许多web服务108、110被静态地储存在客户机102和服务器106中。web服务108、110是由程序108A、110A和WSDL合约108B-110B组成的。
每个WSDL合约可被划分为两个主要部分。第一部分包含抽象定义,而第二部分包含具体描述。抽象定义以平台相关和语言相关的方式定义了合约元素。抽象定义不包含机器专用或语言专用的元素。这就帮助定义了几个不同网站可实现的一组服务。站点专用的元素,如数据串行化,被归入具体描述中。抽象定义包括类型、消息和端口类型的定义。具体描述指定绑定和服务。类型部分声明了用在WSDL合约中的数据类型。消息部分定义了操作(即方法的参数)。端口类型部分定义了可由对WSDL合约描述的web服务外部的应用程序(和其它web服务)调用的一个或多个操作。绑定部分可具有一个或多个绑定元素,其目的是指定对操作的每个调用和响应是如何依照协议而通过网络104被发送和接收的。服务部分具有一个或多个服务元素,每个元素包含端口元素,而且每个元素进而指该绑定部分中的绑定元素。
结构112阐明合约108B的合约元素之间的关系,且以框图的形式示出。端口类型112D声明许多操作元素。端口类型内的操作元素定义了用于调用端口类型内声明的诸如准备操作112E、“做工作”操作112F,以及“清理”操作112G等所有方法的句法。这样,端口类型内的每个操作元素定义了方法名称、参数(使用消息),以及每个参数的类型。WSDL合约中可能有几种端口类型。每个端口类型将许多相关的操作组合在一起。
绑定元素112C指定要用于端口类型112D的每个操作112E-112G的协议、串行化和编码。端口元素112B通过使用统一资源定位器(URL)将因特网位置与一对一对应关系的绑定112C相关联。服务元素112A包含一组端口元素,像端口112B。WSDL合约中可以有不止一个服务元素。每个服务元素可用来根据URL目的地而将端口组合在一起。例如,开发者可简单地通过使用另一个服务元素而重定向所有服务请求,而且外部web服务可仍旧与web服务交互。服务元素的另一个用途是根据底层协议而对端口进行分类。例如,开发者可将所有的HTTP端口置于一个服务元素中,而将所有的SMTP端口置于另一个服务元素中。然后,外部web服务可搜索关于匹配其可处理的协议的服务的WSDL合约108B。
如上面所指出的,WSDL合约108B包括几个操作,如“准备”操作112E、“做工作”操作112F,以及“清理”操作112G,它们可被调用以访问由web服务108提供的服务。然而,“准备”操作112E应在“做工作”操作112F之前被调用,而“做工作”操作112F应在“清理”操作112G的调用之前被调用。现有WSDL合约缺少表达能力来将该排序信息传达给期望web服务108的服务的其它web服务,如web服务110。例如,web服务110可选择最初调用“清理”操作112G,而不是首先调用准备操作112E。这对web服务108的工作而言可能是灾难性的,原因是其可能破坏web服务108的内部执行状态。而且,假设web服务110是有恶意的。在这种情况下,web服务110可通过将操作112E-112G调用到序列外而恶意利用web服务108的这个弱点,来简单对web服务108的正确操作造成严重损坏。若web服务能以这种方式被不恰当地恶意利用,则web服务的可信赖度将会被置疑,且它们的用途将减少并最终从市场上消失。
这样,需要更好的方法和系统,允许web服务与其它web服务安全地交互,而同时避免或减少与现有web服务相关的前述以及其它问题。
发明概述依照本发明,本发明的方法形式是用于核查第一web服务的第一端口类型和第二web服务的第二端口类型的兼容性的计算机可实现方法。该方法包含从第一web服务的第一端口类型中提取第一安全性,从第二web服务的第二端口类型中提取第二安全性。该方法还包含通过将第一安全性与第二安全性绑定起来,以确定绑定的结果是否产生web服务之间的互操作性,来测试第一安全性与第二安全性的兼容性。
依照本发明,提供用于改善web服务的安全互操作性的系统、方法和计算机可读介质。本发明的系统形式包含用于提供计算服务的第一web服务以及需要由第一web服务提供的计算服务的第二web服务。第一web服务包括用于发送并接收消息的第一端口,第二web服务包括用于发送并接收消息的第二端口。第一端口包括第一端口类型,而第二端口包括第二端口类型。若第二端口类型与第一端口类型兼容的话,则第二端口可与第一端口结合起来,便于对由第一web服务提供的服务进行安全访问。
依照本发明的另一方面,本发明的另一种系统形式包含提供第一组服务的第一web服务,提供第二组服务的第二web服务。第一web服务包括第一安全性(其编程上表达了对第一组服务的安全访问),第二web服务包括第二安全性(其编程上表达了对第二组服务的安全访问)。若第二安全性能编程与第一安全性编程上对齐的话,第二web服务访问第一组服务,而第一web服务访问第二组服务。
依照本发明的又一方面,本发明的另一种系统形式包含提供服务的第一web服务。第一web服务包括编程上描述访问提供的服务的次序的安全性。该系统还包含第二web服务,其需要使用由第一web服务提供的服务。第二web服务接受第一web服务的安全性,以形成与第一web服务的虚拟合约,这样以使第二web服务可访问所提供的服务。
依照本发明的再一方面,本发明的计算机可读形式储存可定制的、基于标签的数据结构,其适合由web服务来使用,以评估与另一个web服务的安全互操作性。更具体地说,该数据结构包含表示能由web服务调用的操作的端口类型标签,以及表示编程上指定web服务调用操作的次序的安全性的安全性标签。
依照本发明的还有一个方面,本发明的方法形式可在计算机系统中实现。该方法包含创建能由web服务调用的一组操作,并创建指定该组操作的可允许调用排列的安全性。
附图的简要描述通过参考下面的详细说明,并结合附图,前述方面以及本发明的许多伴随优点将被更容易认识到并能被更好地理解,附图中图1是示出传统web服务系统的框图;图2是示出示例性计算装置的框图;图3A-3C是示出创建web服务规范的框图,该web服务包含定义调用web服务操作的次序的安全性;图4是示出示例性编程语言的句法的文本图,其是可用于定义指令序列的人工语言,该指令序列最终被处理并执行,用于表达用在web服务间互操作性协定中的安全性;图5A-5C是示出当两个web服务的端口已经依照它们之间的虚拟合约形式结合时,这两个web服务的安全互操作性的框图;图6A-6I是示出创建三个web服务间的安全互操作性的虚拟合约的框图,每个web服务向虚拟合约中另一个web服务提供服务或资源;图7A-7B是示出另一个示例性编程语言的句法的框图,其用于形成用于web服务间的互操作性协议的安全性;以及图8A-8O是示出依照本发明形成的示例性方法的方法图,其用于验证web服务间端口类型的兼容性,以形成web服务间的安全互操作性。
较佳实施例的详细描述图2示出了适合实现本发明某些方面的计算系统环境200的示例,比如执行web服务的程序并验证web服务的规范以确认安全互操作性。计算系统环境200仅是合适计算环境的一个示例,且其不对本发明的使用范围或功能做任何限制。计算环境200也不应被释为对举例说明并描述的组件的任一个或其组合有任何依存关系或需求。
本发明可用于多个其它通用或专用计算系统环境或配置中。众所周知的可适用于本发明的计算系统、环境和/或配置的示例包括,但不局限于,个人计算机、服务器计算机、手持式或膝上型设备、微处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、网络PC、小型机、大型机、包括任何上述系统或设备的分布计算环境,等等。
本发明是用诸如可由计算机执行的程序模块这样的计算机可执行指令的通用上下文来说明的。通常,程序模块包括例程、程序、对象、组件、数据结构,等等,其执行特定的任务或实现特定的抽象数据类型。
本发明也可在分布计算环境中实现,其中任务由通过通信网络连接的远程处理装置来执行。在分布式计算环境中,程序模块可位于本地或远程计算机存储介质中,这包括存储器存储设备。
图2中示出的计算系统环境包括形式为计算机210的通用计算装置。计算机210的组件可包括,但不局限于,处理单元220、系统存储器230、以及将包括系统存储器在内的各个系统组件合到处理单元220的系统总线221。系统总线221可以是几种类型总线结构的任一种,这包括存储器总线或存储器控制器、外围总线,以及使用任何多种总线体系结构的局部总线。作为例子,但并非限制,这样的总线体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线,以及外围组件互连(PCI)总线,也称为Mazzanine总线。
计算机210通常包括多种计算机可读介质。计算机可读介质可以是可由计算机210访问的任何可用介质,其包括易失性和非易失性介质、可移动和不可移动介质。作为例子,但并非限制,计算机可读介质可包含计算机存储介质和通信介质。计算存储介质包括易失性和非易失性、可移动和不可移动介质,其以诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息存储的任何方法和技术来实现。计算机存储介质包括,但不局限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、盒式磁带、磁带、磁盘存储或其它磁存储设备,或者任何其它计算机存储介质。通信介质通常包含已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,该已调制数据信号如包括任何信息递送介质的载波或其它传送机制。术语“已调制数据信号”意指其一个或多个特征以对信号中的信息进行码的方式来设为或改变的信号。作为例子,但并非限制,通信介质包括有线介质,如有线网络或单线连接,以及无线介质,如声学、RF、红外和其它无线介质。任何上述组合也应被包括在计算机可读介质的范围内。
系统存储器230包括计算机存储介质,其形式为易失性和/或非易失性存储器,如只读存储器(ROM)231和随机存取存储器(RAM)232。基本输入/输出系统233(BIOS)包含基本例程,该例程如在启动间帮助在计算机210内的元件之间传递信息,该基本输入/输出系统233(BIOS)通常储存在ROM 231中。RAM 232通常包含可由处理单元220立即存取和/或当前正由处理单元220操作的数据和/或程序模块。作为例子,但并非限制,图2示出了操作系统234、应用程序235、其它程序模块236以及程序数据237。
计算机210也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为例子,图2示出对不可移动、非易失性磁介质进行读写的硬盘驱动器241、对可移动、非易失性磁盘252进行读写的磁盘驱动器251、以及对诸如CD-ROM或其它光介质这样的可移动、非易失性光盘256进行读写的光盘驱动器255。可用于示例性操作环境中的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不局限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器241通常通过诸如接口240这样的不可移动存储器接口与系统总线221相连,而磁盘驱动器251和光盘驱动器255通常通过诸如接口250这样的可移动存储器接口与系统总线221相连。
上述在图2中示出的驱动器及其相关联的计算机存储介质为计算机210提供计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图2中,硬盘驱动器241被示出为储存操作系统244、应用程序245、其它程序模块246以及程序数据247。注意,这些组件或者与操作系统234、应用程序235、其它程序模块236以及程序数据237相同,或者与其相异。操作系统244、应用程序245、其它程序模块246,以及程序数据247在这里被赋予不同的标号,用以阐明它们至少是不同的本。用户可通过诸如盘262和定点设备261这样的输入设备将命令和信息输入到计算机210中,定点设备261一般指鼠标、跟踪球或触摸垫。其它的输入设备(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星电视天线、扫描仪等等。这些和其它的输入设备通常通过合到系统总线的用户输入接口260与处理单元220相连,但是其也可用其它接口和总线结构连接,如并行端口、游戏端口或者通用串行总线(USB)。监视器291或其它类型的显示设备也通过诸如视频接口290这样的接口与系统总线221相连。除监视器之外,计算机也可包括其它外围输出设备,如扬声器297和打印机296,其可通过输入/输出外围接口295连接。
计算机210可在使用到诸如远程计算机280这样的一个或多个远程计算机的逻辑连接的网络化环境中工作。该远程计算机280可以是个人计算机、服务器、路由器、网络PC、对等设备或者其它公用网络节点,其通常包括许多或所有上述相对计算机210描述的元件,尽管在图2中仅示出了存储器存储设备281。图2中描述的逻辑连接包括局域网(LAN)271和广域网(WAN)273,但是其也可包括其它网络。这样的网络环境常见于办公室、企业范围计算机网络、内联网和因特网。
当在LAN网络化环境中使用时,计算机210通过网络接口或适配器270与LAN 271相连。当在WAN网络化环境中使用时,计算机210通常包括调制调器272或用于通过诸如因特网这样的WAN 273建立通信的其它装置。调制调器270可以是内置或外置的,它可通过输入/输出外围接口295或者其它适当的机制与系统总线221相连。在网络化环境中,相对计算机210描述的程序模块或其部分可储存在远程存储器存储装置中。作为例子,但并非限制,图2示出远程应用程序285驻留在存储器设备281中。应当认识到,所示网络连接仅是说明性的,也可使用在计算机之间建立通信链路的其它装置。
图3B示出web服务300,它包括程序300A,其是可由计算装置执行的web服务300的指令序列,并包括规范300B(在图中以“规范”示出),其是web服务300的接口描述。规范300B与WSDL合约不同,其包含描述外部web服务可调用web服务300操作的次序的安全规则(以下称“安全性”)。换言之,每个安全性描述了web服务300操作的容许或准许调用排列,使用该调用排列,外部web服务可调用以对由web服务300提供的服务进行访问。若这些安全性对渴望使用web服务300的服务的外部web服务是不可接受的,则将不形成任何虚拟合约。否则,若安全性对外部web服务是可接受的,则将形成虚拟合约,且外部web服务和web服务300之间的安全互操作性是可能的。
阐明web服务300的结构302的框图在图3A中示出。服务元素302A通过将一组端口(未示出)组合在一起而分类地区分由规范300B所描述的其它服务。每个端口与端口类型相关联。结构302具有端口类型302B。端口类型302B声明许多操作,如准备操作302D、做工作操作302E,以及清理操作302F。为清楚起见,在下面的讨论中使用下述术语术语“操作”可与术语“消息”互换使用(相反,WSDL合约中的术语“消息”仅指操作的自变量);术语“参数”用于表示操作的自变量;术语“绑定”用于指两个安全性之间的编程关系,其在下面释(相反,WDSL合约中的术语“绑定”指端口类型与特定传送协议的关联)。
操作302D-302F被调用的次序是由安全性302C指定的,其具有下面的形式(1)S=prepare.SW;以及(2)SW=(dowork).SW+(cleanup)。安全性302C由规范300B的部分304来文本地表达。见图3C。行304A包含关字端口类型,其声明有关端口类型定义的开始;标志符“start_work_stop”,其是端口类型的名称;以及打开花括号“{”,其具有与之匹配的关闭花括号“}”,以限定编程上定义端口类型的文本块。行304B声明准备(prepare)操作302D,其采用串作为参数。行304C声明做工作(dowork)操作302E及其参数—串。行304C声明具有串参数的清理(cleanup)操作302F。
行304B-304D上声明的这些操作是对外部web服务可用的操作,以使它们能够访问web服务300的服务。对某些web服务而言,为了与这些web服务的正确互操作性,操作应被以特定的次序被调用。例如,在web服务300中,准备操作302D应在做工作操作302E之前被调用,而做工作操作302E应在清除操作302F调用之前被调用。为允许传达这个排序信息,可依本发明形成一个或多个安全性。见行304E、304F。安全性的排列细微差别可使用图4中所示的人类可读句法400(下文描述)或图7A中所示的模型句法702(下文描述)来表达。
行304E、304F上的安全性是用两条语句表达的(1)S=prepare.SW;以及(2)SW=(dowork).SW+(cleanup)。字母S是第一安全性的名称,字母W是第二安全性的名称。每个等号“=”表示安全性等同于等号“=”右边的规则。在安全性S的句点“.”之前是准备操作302D,其表示准备操作302D要首先被调用,之后安全性SW生效。在做工作操作302E之后但在安全性SW之前的句点“.”表示做工作操作302E是在安全性SW的递归可能出现之后调用的。换言之,做工作操作302E之后的短语“.SW”表示没有或有几个做工作操作302E的调用是可能的。加号“+”表示做工作操作302E或者清理操作302F可在准备操作302D的调用之后被调用。放置在安全性SW语句最后的清理操作302F表示清理操作302F应被最后调用或由使用web服务300的服务的外部web服务调用。安全性S和SW之后的每个分号“;”表示行304E、304F上的安全性的语句终止。
端口类型和安全性可使用人类可读的句法400来表达,其在图4中示出(之后,它们可较佳地被放置在像规范300B这样的web服务规范中)。行400A包含有关端口的定义端口类型标志符{签名*;安全性;},其中端口类型是声明端口类型定义开始的关键字;标志符是端口类型的标识符;打开和关闭花括号对限定定义端口类型的表达式;安全性表示定义调用由签名所描述操作次序的规则。每个签名(可能有不止一个,其用星号“*”表示)具有句法表达式“标志符([标志符线性类型,标志符线性类型])”,如行400B所示,其中,第一标志符是特定操作的标识符;由圆括号对界定的第二和第三标志符表示操作参数标识符;且两个线性类型定义了每个参数的数据类型(为简单起见,对于行400B上的签名仅定义两个参数槽(parameter slot),但是可能有不止两个);冒号“”表示位于冒号左边的参数标志符具有冒号右边声明的数据类型;逗号“,”将一个参数与另一个参数划分开来;圆括号对“()”限定由操作使用的参数及其类型。
行400C-400I定义了不同的安全性类型。停止安全性在行400C处声明。停止安全性表示安全性的静止或停止。行400D上声明的顺序安全性定义调用web服务的操作或消息的次序。行400E上声明的选择安全性表示可在安全性中选择的备选方案。在行400G中,并行安全性被定义,以表示两个安全性的并发、分布式处理。递归安全性定义其用途是安全性递归的变量,其在行400H上声明。在行400I上声明的参考安全性表示安全性可被赋予要与其它安全性组合使用的名称。行400J示出停止安全性是由符号零“0”组成的。顺序安全性是由函数签名及其后的句点“.”组成的,该句点后面是另一个安全性。见行400K。选择安全性是由两个安全性组成的,其由加号“+”分隔(见行400L)。在行400N上定义的并行安全性是由两个安全性组成的,其由垂直线符号“|”分隔开来。递归安全性是由关键字“rec”及其后界定标志符的一对圆括号组成的,而且其后面是句点和另一个安全性规则。见行400O。使用递归安全性,安全性(S=prepare.SW;SW=(dowork).SW+(cleanup))可被等同地写为安全性(prepare.rec(SW).((dowork).SW+(cleanup)))。行400P表示参考安全性仅仅是标志符,它是名称或标识符。
使用人类可读句法400,安全性的表达细微差别可被指定,以增强web服务中的安全互操作性。每个安全性较佳地被放置在web服务规范的端口类型定义中。为便于讨论图4以后的附图,在这里示出人类可读句法400。更受限制的但同等具有表达性的是图7A中所示的模型句法702(下文描述)。人类可读句法和模型句法702均可使用合适的可定制、基于标签的语言而形成。可使用任何合适的可定制、基于标签的语言。一个合适的语言包括XML模式语言。通过使用可定制、基于标签的语言,依本发明形成的安全性可适合WSDL合约的现有端口类型定义。
文件服务器web服务502在图5A中以框图形式示出。文件服务器web服务提供有关网络上其它web服务的文件存储服务。不像磁盘服务器,文件服务器web服务502不仅储存文件,而且对它们进行管理,并当其它web服务请求文件并对其进行改变时维持顺序。为处理操作有关文件的多个(有时是同时的)请求的任务,web服务502与处理器和控制软件以及用于存储的磁盘驱动器交互。
文件服务器web服务502包括服务元素502A、端口类型502B以及其它元素(未示出)。端口类型502B定义多个操作,如打开操作502D、读操作502E、写操作502F以及关闭操作502G。这些操作502D-502G在文件服务器web服务规范的部分504中进一步定义。见图5B。端口类型502B也定义安全性502C,其指定外部web服务通过操作502D-502G来访问由文件服务器web服务502D提供的服务的次序。安全性502C在部分504中进一步定义。见行504F、504G。文件服务器web服务502的部分502H允许其它web服务结合(下面将详细描述),以通过调用操作502D-502G而对文件服务器web服务502B的服务进行访问。
部分504注重文件服务器web服务规范的许多端口类型中的一个端口类型定义。行504A包含关字porttype(端口类型),其后是标志符“fileserver(文件服务器)”,以及用于限定文件服务器端口类型502B的定义的一对打开和关闭花括号。行504B声明了将文件名(filename)作为参数的打开(open)操作502D的签名。在所有的情况下,为使用文件服务器web服务502的服务,外部服务指定要通过打开操作502D而打开的文件名。这样,打开操作502D应当是由外部web服务对每个特定的文件服务器会话调用的第一操作。读(read)操作502E在行504C中声明。读操作将客户机的端口(clientport)作为参数。当读操作502E被外部web服务调用时,文件服务器web服务502从打开的文件中读取一大块数据,并将该读取的数据发送到给定客户机的端口。外部web服务也可通过写(write)操作502F将信息写到打开的文件中,其在行504D中声明。写操作将数据(date)作为参数。该数据由写操作写到打开的文件中。当所有需要的操作都已经在打开的文件上实现时,打开的文件可通过关闭(close)操作502G而被关闭,其在行504E中声明。关闭操作502G将文件名(filename)作为自变量,以使关闭操作502G知道该关闭哪个文件。
行504F-504G包含文件服务器端口类型502B的安全性。行504F包含安全性语句S=open.Srw,其中S是安全性规则;open表示打开(open)操作502D是要在文件服务器会话中调用的第一操作;句点“.”表示附加安全性要跟随在打开操作502D的调用之后;Srw指在行504G上进一步定义的第二安全性。行504G包含以下安全性语句Srw=read.Srw+write.Srw+close,其中,Srw表示第二安全性;read.Srw表示读(read)操作502E的调用,其后面再次是第二安全性(递归);write.Srw表示写(write)操作502F的调用;其后面递归跟着第二安全性;close表示关闭(close)操作502G的调用;加号“+”表示外部web服务可作出的选择,以在读操作502E、写操作502F或关闭操作502G中作出调用。
系统500示出在创建了虚拟合约之后,web服务502、508的互操作性。见图5C。当web服务502、508之间的端口502H、508A的端口类型兼容的时,创建虚拟合约。更具体的说,当端口502H、508A的端口类型的安全性对web服务502和508两者均可接受时,创建虚拟合约。虚拟合约并非物理退出的,而是当端口类型的安全性以确保web服务502、508之间的安全互操作性的方式彼此对齐时出现的。为清楚起见,文件服务器web服务502的许多元素未在图5C中示出。文件服务器web服务502可在诸如蜂窝电话等计算装置上执行;客户机web服务508可在诸如个人数字助理510等计算装置上执行;储存web服务512可在诸如台式机514等计算装置上执行。
客户机web服务508的端口508A被示出为与文件服务器web服务502的端口502H结合的。客户机web服务508和文件服务器web服务502之间的这一结合在客户web服务508示出其愿意遵从文件服务器端口类型502B的安全性之后是可能的。随着端口508A-502H的结合,客户机web服务508可依照并以由文件服务器端口类型的安全性所指定方式来访问并调用文件服务器web服务502的操作502D-502G。
假定客户机web服务508已经被调用了打开操作502D,以打开文件。客户机web服务508可调用读操作502E,以获取读取的数据。在读操作502E的调用中,客户机web服务508提供端口508B,以在读操作502E的调用之后接收读取的数据。文件服务器web服务502包括端口502I,用于将读取的数据发送到端口508B。然而,端口508B不必为客户机web服务508处的实际端口。端口508B可由另一个web服务,如储存web服务512虚拟地提供。虚拟合约可在客户web服务508和储存web服务512之间形成,以用客户机web服务508所需要的特定方式储存信息。客户机web服务并非将端口508B作为参数提供给读操作502E,而是可提供储存web服务512的端口512A,以使由读操作502E所读取的数据自动被转发到储存web服务512中。这可出现,而不为文件服务器web服务502所知。这样,每个端口就是可转移的量,其可被给予web服务,以扩展web服务的通信概率。在这个例子中,文件服务器web服务502的现有范围局限于与客户机web服务508的交互,但是当端口512A通过客户机web服务508被传递到文件服务器web服务502时,它随后可被扩展以包括储存web服务512。
web服务的连接,如文件服务器web服务502与储存web服务512的连接,是通过使用依照本发明形成的安全性经由虚拟合约完成的。web服务的这种连接提高了web服务的安全互操作性,以创建比每个web服务可单独提供的更大的功能。此外,由于web服务的连接是编程上形成的,所以若遵从web服务安全性的话,web服务更可信、更可靠,且更有效。依照本发明形成的编程连接在面对web服务的互操作性中的无效请求或者被破坏的持久保存的数据时,减少或消除了错误、丢失请求、故障,。
上述结合图3A到3C的讨论将安全性的概念引入到web服务的规范中。由于端口类型包含外部web服务可调用来访问由所需web服务提供的服务的操作的声明,因此安全性较佳地被放置在端口类型内部。如同上面也已经讨论过的,安全性描述了外部web服务必须调用所需web服务的操作以获取所需服务的次序。若外部web服务最初不能遵从另一个web服务的安全性,则在两个web服务之间就没有绑定协定(虚拟合约),且不遵从的web服务不能调用另一个web服务的服务。在两个web服务之间创建虚拟合约的一个例子已在上面结合图5A-5C讨论。由于客户机web服务508愿意遵从文件服务器web服务502的安全性,所以客户机web服务508的端口508A可与文件服务器web服务502的端口502H结合。这样的结合允许客户机web服务器508在端口502H处调用文件服务器web服务502的服务。更具体的说,虚拟合约可在客户机web服务508端口508A的端口类型编程上与文件服务器web服务502端口502H的端口类型兼容(或遵从其安全性)时创建。结合图6A-6I的讨论不是形成两个web服务之间的虚拟合约,而是注重依照本发明形成的三个web服务(购买者web服务602、供应商web服务606,以及发货者web服务610)之间的绑定协定。然而,可形成虚拟合约而不考虑参与的web服务的数,只要每个web服务意从其它参与web服务安全性。
购买者web服务602包括服务元素602A和端口类型元素602B,以及其它元素中(未示出)。端口类型602B包括启动购买(initiatepurchase)操作602D、确认购买(confirmpurchase)操作602E,以及指定操作602D-602E的调用的安全性602C。购买者web服务602也可包括端口602F,其数据类型是端口类型602B。见图6A。购买者web服务规范的一部分604在图6B中示出。行604A包含关字porttype(端口类型);端口类型的标志符“purchaser(购买者)”;以及打开花括号“{”,其具有成对的关闭花括号,以限定购买者端口类型602B的定义。行604B包含初始购买操作602D的签名,其具有两个参数。一个参数是购买次序参数,表示为“PO”。另一个参数是提前发货通知“~ASN”,那里代字号“~”表示购买者web服务602消耗由参数ASN所代表的数据。行604C包含确认购买者操作602E的签名,其采用“invoice(发)”参数和“goods(货物)”参数。发参数被代字号“~”限定,以表示购买者web服务602消费由invoice参数所表示的数据。PO参数和goods参数均没有被代字号限定,因此,这表明购买者web服务602是生产者或由这些参数所表示的数据源。行604D包含有关购买者端口类型602B的安全性。简言之,启动购买操作602D的调用必须在确认购买操作602E的调用之前出现,其后面跟随操作602D、602E的调用递归。
供应商web服务606以框图的形式在图6C中示出。供应商web服务606包括服务元素606A和端口类型元素606B,以及其它元素(未示出)。端口类型606B是有关供应商web服务606的端口606F的数据类型。端口类型606B包含接收po(receivepo)操作606D、发送发(sendinvoice)操作606E、以及指定操作606D、606E的调用次序的安全性606C。供应商web服务606也包括端口606F,其数据类型是端口类型606B。供应商web服务规范的一部分608在图6D中示出。行608A包含供应商端口类型606B的声明(porttype supplier),并包括打开花括号“{”,其具有成对的关闭花括号,以限定供应商端口类型606B的定义。行608B包含接收po操作的签名,其采用购买次序“~PO”作为参数。代字号表明供应商web服务606消耗由购买者次序~PO参数所表示的数据。行608C包含发送发操作606E的签名,其采用invoice(发)作为参数。行608D包含有关供应商端口类型606B的安全性。简言之,接收po操作606D要在发送发操作606E调用之前被调用,其后可跟随操作606D、606E的递归调用。
如图6E所示,发货者web服务610包括服务元素610A和端口类型元素610B,以及其它元素(未示出)中。端口类型610B描述发货者web服务610的端口610F的数据类型。端口类型610B包括发货通知(notifyofshipment)操作610D、确认接收(confirmreceipt)操作610E,以及指定操作610D、610E的调用次序的安全性610C。发货者web服务规范的一部分612以文本形式在图6F中示出。行612A包含发货者端口类型610B的声明(porttype shipper)和打开花括号“{”,其具有成对的关闭花括号“}”,以限定发货者端口类型610B的定义。行612B包含发货通知操作610D的签名,其采用提前发货通知“ASN”作为参数。因为提前发货通知ASN不由代字号限定,所以发货者web服务610是生产者或由ASN参数表示的数据源。行612C包含确认接收操作610E的签名,其采用“~goods(货物)”作为自变量。标志符“goods”前的代字号表示发货者web服务610是由“goods”参数表示的数据的消费者。行612D包含有关发货者端口类型610B的安全性。简言之,发货通知操作610D的调用发生在确认接收操作610E的调用之前,而且之后,可发生操作610E递归调用。
图6G中示出用于表达购买者web服务602、供应商web服务606以及发货者web服务610的组合的程序的一部分614。行614A包含购买者web服务602的签名,其具有标明为具有购买者端口类型602B的“PC”的端口。行614B包含供应商web服务606的签名,其具有标明为具有供应商端口类型606B的“PS”的端口。行614C包含发货者web服务610的签名,其具有标明为具有运货者端口类型610B的“PH”的端口。
行614I包含关字服务,其宣布web服务或web服务组合的定义的开始;标志符“scm_purchaser_supplier_shipper”表示web服务602、606和610的组合的名称;打开花括号“{”具有成对的关闭花括号“}”,以限定web服务的组合的定义。行614J包含关字new,其定义端口的唯一名称并将这些端口与特定的端口类型相关联购买者端口类型6002b的新端口“PC”;供应商端口类型606B的新端口“PS”;发货者端口类型610B的新端口“PH”;以及打开花括号“{”,其具有成对的关闭花括号“}”,以限定这些新端口PC、PS、PH的操作范围。行614K包含关字parallel,其表示在打开花括号“{”和成对的关闭花括号“}”之间表达的服务和处理是要并行执行的。
行614L包含对另一个web服务组合的调用,其被称作“scm_purchaser_supplier”,采用端口PC、PS作为参数。另外,web服务组合的定义“scm_purchaser_supplier”开始于行614D。行614D包含关字服务,其表明web服务或web服务组合的定义即将开始;标志符scm_purchaser_supplier表示web服务组合的名称;参数PC,它是购买者端口类型602B的端口602F;参数PS,它是供应商端口类型610B的端口610F;打开花括号“{”,它具有成对的关闭花括号“}”,以限定web服务组合scm_purchaser_supplier的定义。行614E包含关字parallel,以表示在打开花括号“{”和关闭花括号“}”之间定义的web服务和处理要并行执行。行614F调用购买者web服务602,其具有被指定为PC的端口602F。行614G调用供应商web服务606,其具有被指定为PS的端口606F。行614H调用依本发明形成的结合机制,以将端口602F(指定为PC)和端口606F(指定为PS)结合起来。端口602F、606F是否可结合取决于购买者web服务602的端口类型602B是否与供应商web服务606的端口类型606B兼容。更具体的说,若购买者web服务602的安全性602C可与供应商web服务606的安全性606C对齐,以产生输入防护过程,则端口602F、606F的结合是可能的。换言之,若安全性602C、606C可被对齐,则将购买者web服务602和供应商web服务606之间的端口602F、606F结合在编程上是安全的。可为购买者web服务602和供应商web服务606之间的安全互操作性创建虚拟合约。这将在下面结合图8A-8O来详细描述。
返回到web服务组合scm_purchaser_supplier的定义,行614M包含发货者web服务610的调用,其将指定为PH的端口610F作为参数。行614N包含依本发明在端口602F(PC)和端口610F(PH)之间形成的结合机制的调用。若由于安全性或端口类型之间的不兼容而不能完成端口之间的结合,则端口将不会被结合。
图6H是包括购买者web服务602、供应商web服务606,以及发货者web服务610的系统600中操作调用的动态可视化示。系统600通过调用启动购买操作602D并产生购买次序(PO)来开始执行。然后,购买者web服务602调用供应商web服务606的接收po操作606D、提供产生的购买次序(PO),然后购买次序(~PO)被供应商web服务606消耗。随后,发送发票操作606E被调用,产生发票。然后,供应商web服务606调用确认购买操作602E或购买者web服务602、提供产生的发票(invoice),且产生的发票(~invoice)由购买者web服务602消耗。接下来,供应商web服务606调用发货者web服务610的发货通知操作610D,并提供提前发货通知(ASN)。发货者web服务610随后将提前发货通知(ASN)提供给购买者web服务602,并且购买者web服务602消耗该提前发货通知(~ASN)。购买者web服务602接下来调用发货者web服务610的确认接收操作610E,并提供货物(goods)的接收。运货者web服务610进而提供货物(goods)的接收,并且货物的接收(~goods)由购买者web服务602消耗。
前述图6中的讨论示出了由安全性602C、606C和610C指定的调用次序。然而,通过研究消息的产生和消耗,web服务602-610之间的互操作性可被更好地认识到。见图6I,当购买次序(PO)在购买者web服务602的端口602F处产生并被发送到供应商web服务606的端口606F时,系统600开始,其中购买次序(PO)被消耗。购买次序(PO)的产生是由没有启动购买操作602D的参数列表中的代字号“~”的标志符PO表示的。购买次序(PO)的消耗是由具有参数~PO的接收po操作606D表示的。由启动购买操作602D广泛表示的第一过程变成不活动(由于安全性602C),这是因为端口602F已经发送了购买者次序(PO),但是没有接收到提前发货通知(~ASN)。由接收po操作606D广泛表示的第二过程继续到发送发票操作606E广泛表示的第三过程(由于安全性606C),这是因为端口606F已经接收到购买次序(~PO)。当第三过程变为活动时,发票在端口606F处产生,并被发送到购买者web服务602的端口602F,在那里发票被消耗。现在满足了安全性606C。发票的产生是由发送发票操作606E表示的,而发票的消耗是由确认购买操作602E表示的。由确认购买操作602E广泛表示的第四过程变成不活动(由于安全性602C),这是因为端口602F没有接收到提前发货通知(~ASN)。一旦供应商web服务606在端口606F处接收到了购买者次序(PO),则在供应商web服务606和发货者web服务602之间发生小型计算机通信(mini communication)。提前发货通知(ASN)是由端口610F处的发货者web服务610产生的,并被发送到购买者web服务602的端口602F,在那里它被消耗。由发货通知操作610D广泛表示的第五过程继续到由确认接收操作610E广泛表示的第六过程(由于安全性610C),这是因为端口610F已经发送了提前发货通知(ASN),但是第六过程由于端口610F没有接收到货物(~goods)的接收而变成不活动。由启动购买操作602D广泛表示的第一过程变成活动,并且继续到由确认购买操作602E广泛表示的第四过程(由于安全性602C),这是因为端口602F已经接收到提前发货通知(~ASN)。提前发货通知(ASN)的产生是由发货通知操作610D表示的,且提前发货通知(ASN)的消耗是由启动购买操作602D表示的。由确认购买操作602E广泛表示的第四过程变成活动(由于安全性602C),这是因为端口602F已经接收到提前发货通知(~ASN)。随着第四过程的激活,货物(goods)的接收在购买者web服务602的端口602F处产生,并且其被发送到发货者web服务610的端口610F,那里它被消耗。货物(goods)的接收的产生是由确认购买操作602E表示的,且货物(goods)的接收的消耗是由确认接收操作610E表示的。货物(goods)的接收的产生满足安全性602C。由确认接收操作610E广泛表示的第六过程变成活动,这是因为端口610F已经接收到货物(~goods)的接收,且然后满足了安全性610C。上文的讨论示出当消息和操作的处理细微差别是使用依照本发明形成的安全性来表达时,消息和操作的内在同步(活动性和不活动性)。
端口类型的模型句法702在图7A中示出。模型句法702的不同元素类似于人类可读句法400的元素(在行400C-400P中描述的安全性句法类别)。字母PT 702E包含端口类型的定义porttype name{(M;)*S;},其中porttype是声明端口类型定义的开始的关字;name是端口类型的标识符;打开和关闭花括号对限定定义端口类型的表达式;字母M包含消息(下文描述);字母S(下文描述)表明一个或多个安全性。字符S 702A表示要由模型句法702的各个元素定义的已命名安全性的集合。符号“0”702B表示不活动或停止的安全性。短语“M.S”702C表示顺序安全性,其中字母M表示消息类型702I,其后是另一个安全性702A。短语“S0+S1”702D表示要在安全性S0或安全性S1的执行之间做出的选择。短语“S0|S1”702F表示安全性S0和S1的并行执行。短语“rec(K).S”702G表示安全性S中名称K 702J的递归。短语“K”702H表示可向安全性702A给予一名称。
图7B示出系统700,它示出了第一web服务706和第二web服务710之间的互操作性,第一web服务706具有安全性S1 706A;消息1操作706B;消息2操作706C;以及端口706D。第二web服务710包括安全性S2 710A;消息3操作710B;消息4操作710C;以及端口710D。所示第一web服务706和第二web服务710被结合行703结合。
图8A-8O示出用于形成诸如第一web服务706和第二web服务710等web服务中的互操作性的方法800。为清楚起见,方法800的以下描述对结合图7A-7B中所示的模型句法702和系统700示出的不同元素做出参考。从起始框开始,方法800前进到一组方法步802,其在延续终端(“终端A”)和退出终端(“终端B”)之间定义。该组方法步802描述了对应于第一和第二web服务706和710的web服务程序的web服务规范的创建。
从终端A(图8B)开始,方法800前进到框808,在那里开发者创建第一web服务706的规范的抽象定义。规范的抽象定义包括数据类型、消息以及端口类型的定义。接下来,开发者创建规范的具体描述。见框810。具体描述包括绑定(不要与下述依照本发明形成的绑定机制混淆),即指定数据传送的协议、串行化和编码之处。具体描述包括服务元素,它指定每个绑定的端口地址。然后,开发者为第一web服务706的规范创建安全性S1 706A,它支配诸如消息1操作706B和消息2操作706C等操作的调用。见框812。然后,开发者较佳地将安全性S1 706A(以下称“S1”)放置到端口606D的端口类型的定义中。见框814。步骤808-814可被重复,以创建第二web服务710的规范,这包括安全性S2 710A(以下称“S2”)。接下来,方法800前进到退出终端B。
从退出终端B(图8A),方法800前进到一组方法步骤804,其在延续终端(“终端C”)和退出终端(“终端D”)之间定义。该组方法步骤804描述了第一web服务706对第二web服务710的发现,以及第二web服务710与第一web服务706安全交互能力的验证。
从终端C(图8C),方法800前进到框816,在那里第一web服务707通过合适的发现服务,使用第二web服务710的规范而发现端口710D的端口类型。一个合适的发现服务包括UDDI服务,但是其它也是可能的。第一web服务706随后选择端口706D的端口类型,它将与来自第一web服务706的规范的端口710D结合。见框818。然后,第一web服务706提取端口706D的端口类型的安全性S1和端口710D的端口类型的安全性S2。见框820。接下来,过程800进入另一个延续终端(“终端C18”)。从终端C18,过程800进入框822,在那里第一web服务706通过试图将安全性S1、S2放置到绑定关系(S1:=:S2)中而核查端口706D和710D之间的互操作性。在判别框824,第一web服务706核查安全性S1是否是形式“0”,这表示不活动或停止安全性。若对判别框824处的测试回答是“是”,则方法800前进到另一个延续终端(“终端C1”)。否则,若回答是“否”,则方法800前进到另一个终端(“终端C2”)。
从终端C1(图8D),方法800前进到另一个判别框826,在那里第一web服务706判断安全性S2是否为“S”702A的形式。若回答是“否”,则进入另一个延续终端(“终端C19”)。否则,若对判别框826处的测试的回答是“是”,则安全性S1和安全性S2之间的绑定关系(0:=:S)等同于S2。见框828。从这里,方法800前进到另一个延续终端(“终端C20”)。
从终端C2(图8D),方法800前进到另一个判别框830,在那里第一web服务706判断安全性S1是否为“M.S.”702C的形式。若回答是“是”,则进入另一个延续终端(“终端C3”)。否则,若回答是“否”,则方法800前进到另一个延续终端(“终端C4”)。
从终端C3(图8E),方法800前进到另一个判别框832,那里第一web服务706判断安全性S2是否是表示并行安全性的形式“S0|S1”706F。若回答是“否”,则过程800进入终端C19。否则,若对判别框832处的测试回答是“是”,则进入框834,在那里与安全性S2绑定的安全性S1(M.S:=S0|S1)等同于两个选择(((S0/M)|S1):=:S)+((S0|S1/M)):=:S)。然后选择两个选择中的其中一个。见框836。接下来,方法800进入延续终端18,以循环回到框822,并重复上述步骤。
从终端C4(图8E),方法800前进到另一个判别框838,在那里第一web服务706判断安全性S1是否是表明选择安全性702D的“S0+S1”的形式。若回答是“是”,则进入另一个延续终端(“终端C5”)。否则,方法800前进到另一个延续终端(“终端C6”)。
从终端C5(图8F),方法800前进到另一个判别框840,在那里第一web服务706判断安全性S2是否为“S”702A的形式。若回答是“否”,则方法800进入延续终端C19。否则,若回答是“是”,则与安全性S2绑定的安全性S1((S0+S1):=:S))就等同于两个选择((S0:=:S)+(S1:=:S))。见框842。然后选择这两个选择中的其中一个。见框844。接下来,方法800进入延续终端C18,以循环回到822,在那里重复上述的步骤。
从终端C6(图8F),方法800进入另一个判别框846,在那里第一web服务706判断安全性S1的形式是否为“M0.S0”,它是顺序安全性702C。若对判别框826处的测试回答是“否”,则进入另一个延续终端(“终端C8”)。若相反,回答是“是”,则方法800前进到另一个延续终端(“终端C7”)。
从终端C7(图8G),方法800前进到另一个判别框898,在那里第一web服务706判断安全性S2的形式是否为“M1.S1”702C。若回答是“否”,则方法800前进到终端C19。否则,若回答是“是”,则进入框848,在那里第一web服务706判断是否定义了采用M0和M1作为自变量的匹配函数。见框848。匹配函数的一种简单实现包括,若M0是M1的补集,则返回“真”布尔结果。否则,匹配函数将返回“假”布尔结果。若对判别框848处的测试回答是“否”,则与安全性S2绑定的安全性S1(M0.S0:=:M1.S1)是未定义的。见框894。然后,方法800前进到终端C20。若对判别框848处的测试回答是“是”,则选项“cut(M0,M1).(S0:=:S1)”被选择,其中,cut(切除)是将M0和M1作为自变量的函数。切除函数的一个较佳实现在图6A-6I中示出,其示出了购买者、供应商、发货者web服务中的互操作性。若匹配函数被定义成将类型与消息的对应类型相匹配,且切除函数被定义成移除这些对(类型和对应类型),则购买者web服务的动作是联合。换言之,购买者web服务在安全性中前进之前等待购买次序(PO)被消耗以及提前发货通知(ASN)被供给。接下来,方法800前进到终端C18,以循环回到框822,在那里重复上述方法步。
从终端C8(图8L),方法800前进到另一个判别框822,在那里第一web服务706判断安全性S1706A的形式是否为表示并行安全性702F的“S0|S1”。若回答是“否”,则方法800前进到另一个延续终端(“终端C11”)。否则,若回答是“是”,则进入另一个延续终端(“终端C9”)。
从终端C9(图8H),方法800前进到另一个判别框854,在那里第一web服务706判断第二web服务710的安全性S2的形式是否为“S2|S3”,它是并行安全性702F的形式。若对判别框854处的测试回答是“否”,则方法800前进到终端C19。否则,若回答是“是”,则方法800进入框856。在这个框处,与安全性S2绑定的安全性S1((S0|S1):=:(S2|S3))等同于一组四个选择(S0,2,3,1)+(S1,2,3,0)+(S2,0,1,3)+(S3,0,1,2)。对这四个选择中的每一个选择而言,做出测试,以判断是否对特定的选择定义了关系(Si:=:(Sm|Sn)):=:Sj。见判别框860。若对判别框860处的测试回答是“是”,则该特定选择等同于关系(Si:=:(Sm|Sn)):=:Sj。见框862。接下来,方法800前进到另一个延续终端(“终端C10”)。若相反,回答是“否”,则进入框864,在那里特定选择等同于关系(Si:=:(Sm|Sn)):=:S。方法800随后也前进到终端C10。
从终端C10(图8I),方法800前进到框866,那里选择四个选择(S0,2,3,1)+(S1,2,3,0)+(S2,0,1,3)+(S3,0,1,2)中的一个。然后,过程800前进到终端C18,以循环回到框822,在那里重复上述方法步。
从终端C11(图8I),方法800前进到另一个判别框868,在那里第一web服务706判断安全性S1是否采用了表示递归安全性702G的rec(K).S0的形式。若对判别框868处的测试回答是“否”,则进入另一个延续终端(“终端C12”)。否则,若回答是“是”,则进入另一个判别框870,在那里第一web服务706核查安全性S2是否采用形式“S”702A。若对判别框870的测试回答是“否”,则方法800进入终端C19。若相反,回答是“是”,则方法800前进到框872,在那里与安全性S2绑定的安全性S1(rec(K).S0:=:S)等同于(S0{rec(K).S0/K}:=:S)。句法短语S0{rec(K).S0/K}意味着无论在安全性S0何处提及到K这是由模型句法702定义的名称K都由rec(K).S0替换。考虑到下面的例子若短语“S0{rec(K).S0/K}”要被应用到安全性句子“S0=open.close.S0”中,则将产生下面的结果“S0=open.close.rec(S0).open.close.S0”。这样,示例中的“S0”是递归安全性“rec(K)”中的K。接下来,方法800前进到终端C18,以循环回到框822,在那里重复上述方法步。若对判别框870的测试回答是“否”,则方法800前进到终端C19。
从终端C12(图8J),方法800前进到另一个判别框874,在那里第一web服务706核查安全性S1的形式是否为“S”702A。若回答是“否”,则方法800前进到终端C19。否则,若回答是“是”,则就进入另一个判别框876。在这个判别框处,第一web服务706判断安全性S2的形式是否为“0/S0”。如回答是“否”,则方法800前进到另一个延续终端(“终端C13”)。否则,若对判别框876的测试回答是“是”,则与安全性S2绑定的安全性S1(S:=:0/S0)就是未被定义的。见框878。然后,方法800前进到终端C20。
从终端C13(图8K),方法800前进到另一个判别框880,在那里第一web服务706验证安全性S2的形式是否为“M0.S/M1”。若回答是“否”,则方法800前进到另一个延续终端(“终端C14”)。若回答是“是”,则第一web服务706判断是否定义了采用M0、M1作为自变量的匹配函数。见框882。匹配函数的一种简单实现包括,若M0是M1的补集,则返回“真”布尔结果。否则,匹配函数将返回“假”布尔结果。若对判别框882处的测试回答是“否”,则与安全性S2绑定的安全性S1(S:=M0.S/M1)是未定义的。见框886。方法800随后前进到终端C20。若对判别框882处的测试回答是“是”,则安全性S2就等同于“cut(M0,M1).S”,其中cut(切除)是采用M0、M1作为自变量的函数。切除函数的一个较佳实现在图6A-6I中示出,其示出购买者、供应商、发货者web服务中的互操作性。若匹配函数被定义成将类型与对消息的对应类型进行匹配,且切除函数被定义成移除这些对(类型和对应类型),则购买者web服务的动作是联合。换言之,购买者web服务在安全性中前进之前,等待购买次序(PO)被消耗以及提前发货通知(ASN)被供给。接下来,过程800前进到终端C18,以循环回到框822,在那里重复上述方法步。
从终端C14(图8L),方法800前进到另一个判别框888,在那里第一web服务706判断安全性S2的形式是否是“(S0+S1)/M”。若回答是“是”,则安全性S2等同于两个选择(S0/M)+(S1/M)。见框890。选择这两个选择中的一个。见框892。接下来,方法800前进到终端C18,以循环回到框822,在那里重复上述方法步。若对判别框888的测试回答是“否”,则方法800前进到另一个延续终端(“终端C16”)。
从终端C16(图8M),方法800前进到另一个判别框899,在那里第一web服务706核查安全性S2,以决定其是否具有形式(S0|S1)/M。若回答是“否”,则方法800前进到另一个延续终端(“终端C17”)。否则,若回答是“是”,则安全性S2就等同于两个选择(S0/M)&(S1/M)。见框897。接下来,过程800前进到框895,在那里随后选择两个选择中的一个。然后,方法800前进到终端C18,以循环回到框822,在那里重复上述方法步。
从终端C17(图8N),方法800前进到另一个判别框893,在那里第一web服务706判断安全性S2的形式是否为rec(K).S/M。若回答是“是”,则安全性S2就等同于(S{rec(K).(S/K)}/M)。见框891。然后方法800前进到终端C18,以循环回到框822,在那里重复上述方法步。否则,若对判别框893处测试的回答是“否”,则进入终端C19。
从终端C19(图8N),第一web服务706判断是否由于安全性S1或安全性S2没有循模型句法702而出现了句法错误。见框889。端口706、710D之间的结合是不可能的,这是因为安全性S1、S2并不是可计算的形式。然后,方法800终止处理。从终端C20(图8N),方法800前进到框887,在那里临时安全性S3被设置为等同于安全性S1和安全性(S3=S1:=:S2)之间的绑定关系的结果。方法800随后进入退出终端D。
从退出终端D,方法800前进到一组方法步806,其在延续终端(“终端E”)和退出终端(“终端F”)之间定义。若安全性S1和安全性S2能以允许第一web服务706和第二web服务710之间安全互操作性的合适方式对齐,则该组方法步806创建第一web服务706和第二web服务710之间的虚拟合约,它是一种绑定协定。
从终端E(图8O),方法800前进到另一个判别框855,在那里第一web服务706判断安全性S3(它是安全性S1和安全性S2之间绑定关系的结果)是否等于零。若对判别框885处的测试回答是“是”,则第一web服务706的端口706D可与第二web服务710的端口710结合。见框881。当两个端口能以这种方式结合时,第一web服务706和第二web服务710之间的互操作性就是安全的。术语“安全”意味着存在一输入防护过程;每个输出都满足一输入;或者没有死锁,这是因为第一web服务706或第二web服务710的输入总是可用于接收消息以进行处理。一旦端口706D、710D被结合,第二web服务710就可开始与第一web服务706进行通信,以提供或获取所需服务。见框879。然后,方法800前进到退出终端F,在那里它终止处理。
若对判别框855的测试回答是“否”,则进入另一个判别框883,在那里第一web服务706判断它是否可容许端口706D和710D的某一程度的不安全结合。若回答是“是”,则重复方法步881、879。否则,对判别框883处的测试回答是“否”,则端口706D、710D不被结合;而且方法800前进到退出终端F,在那里它终止处理。
虽然已经示出并描述了本发明的较佳实施例,但是应当认识到,在不背离本发明主旨和范围的前提下可对其作出各种改变。
附录A1.服务、端口和端口类型1.1作为过程的服务。提供给这篇论文的空间未提供对移动过程理论的真实介绍。好奇的读者可发现有关该主题的丰富文献资料,而且也鼓励读者对其进行调查。特别地,Milner所著的The Polyadic Pi CalculusA Tutorial仍旧是作者已经读到的最好介绍。
说由web服务所采纳的简单本体论是对移动过程的代数处理而采纳的相同基础本体论就足够了。即,∏积分(及其相关物)是根据端口的抽象化而构建的,其通常被称作该设置内的名称。过程是根据端口集合处的输入/输出请求上的同步约束而构建的。
例如,∏积分的对称版本提供下面的过程类。
P::=0| x[u].P| x[u].P| (new x)P| P|P| rec(k).P| k| <x=y>
例1.1.1下面的范例提供期望被初始化的,然后愿意接受重复工作请求或最终请求的服务的本质实现。
(new init s)x[init s].(rec(k).(new work wr fin fr)(x[work wr].k+x[fin fr])))web服务和世界的过程代数视角之间的这个对应关系不是偶然的。涉及一个开发的人是涉及另一个开发的。例如,本论文的第一作者也是WDSL规范的合著者。
2.具有安全性的端口类型2.1安全性表达式。计划用端口上期望的协议的规范来扩展端口类型。特别地,提出小的与上下文无关的语言,其包含下列作为基本的语言组合器顺序、选择、并行和递归。这个语言的终端是从与端口类型相关联的消息类型中提取的。
具体的说,若M是期望到达类型P端口的消息类型集,而K是可数名称集,则给定K时M上的合法安全性表达式的集合(表示为Lk(M))如下被递归定义。
0∈LK(M)S∈LK(M),m∈M  m.S∈LK(M)S0∈LK(M),S1∈LK(M)  S0+S1∈LK(M)S0∈LK(M),S1∈LK(M)  S0|S1∈LK(M)k∈K,S∈LK(M)  rec(k).S∈LK(M)k∈K  k∈LK(M)注解2.1.1注意,这个定义是消息类型集的参变量。因此,它与用于定义消息类型的系统是相当无关的。任何良好形成的模式定义,如XSD会起作用。
注解2.1.2同样的,根据XSD模式对安全性表达式集合进行编码是非常直接的,其不提供附加洞察力,但是其在相当程度上弄乱了页并模糊了主题。相反,引入更多起作用的人类可读句法是方便的。
注解2.1.3熟悉过程代数的读者会注意到,因为语言既不包含重贴标签和限制,又不包含新的名称构造函数,所以从严格意义上说,它比完全的CCS或∏积分表达力更弱。
2.1.1模型句法PT ::= porttype name{(M;)*S;}S ::= 0| M.S| S0+S1| S0|S1| rec(k).S| kM ::= messagetypeK ::= name2.2示例例2.1.1例证的示例是服务必须被初始化,然后愿意接收重复的工作请求或最终请求的示例。
端口类型
porttype StartWorkStop{//字母表initialize(string);do Work(string);finalize(string);//安全性initialize(string).
(rec(k).(doWork(string).k+finalize(string)));}这个例子要与上述实现相比较。一致问题—实现是否符合类型描述—没有在这篇论文中解决,但是有希望的是,具有代码的安全性的简短比较将提供关于其如何被完成的至少某些建议。
例2.2.2这个例子示出购买者、供应商和发货者之间非常简单的三方合约。已经包括了足够的服务水平组成信息,以提供有关端口在何处被结合以及什么对核查有意义的上下文。然而,这篇论文的主要焦点是端口安全性。因此,服务水平组成句法未被解释。
购买者将启动购买,从而提供购买次序,并期望提前发货通知。它想要接收发票并提供货物接收确认。供应商等待购买次序,然后提供发票。发货者提供ASN并等待货物接收确认。
<pre listing-type="program-listing"><![CDATA[portType Purchaser{ initiatePurchase(PO,~ASN); confirmPurchase(~Invoice,Goods); //安全性 rec(k).(initiatePurchase.confirmPurchase.k);}portType Supplier{ receivePO(~PO); sendInvoice(Invoice); rec(k).(receivePO.sendInvoice.k);}portType Shipper{ notifyOfShipment(ASN); confirmReceipt(~Goods); rec(k).(notifyOfShipment.confirmReceipt.k);}Service SCM_Purchaser_Supplier_Shipper{ new(pCPurchaser,pSSupplier,pHShipper){parallel{ SCM_PurchaserSupplier(pC,pS) SCM_Shipper(pH); fuse(pC,pH);}}}Service SCM_Purchaser_Supplier(pCPurchaser,pSSupplier){ parallel{ SCM_Purchaser(pC); SCM_Supplier(pS); fuse(pC,pS); }}Service SCM_Purchaser(pCPurchaser);Service SCM_Supplier(pSSupplier);Service SCM_Shipper(pHShipper);]]></pre>2.3类型核查算法。有两种形式的类型核查要做。一种核查给定服务实现与被广告(或需要)的端口类型集合的依从性。这不能在这里被指定,这是由于缺乏实现语言的选择。另一种核查,给定两个端口类型,将一个端口“绑定”到另一个端口是安全的。
注2.3.1这个算法是消息类型中的参变量。切除或匹配的概念必须可在类型系统中定义。
该算法可被以方程形式给出。递归地定义S1:=:S2,如下
(O:=:S)=S(M0.S0:=:M1.S1)=]]> (M.S:=:S0|S1)=(((S0/M)|S1):=:S)+((S0|(S1/M)):=:S)((S0+S1):=:S)=(S0:=:S)+(S1:=:S)((S0|S1):=:(S2|S3))=S0,2,3,1&amp;S1,2,3,0&amp;S2,0,1,3&amp;S3,0,1,2(rec(k).S0:=:S)=S0{rec(k).S0/k}:=:S其中 以及(0/M)=未定义 ((S0+S1)/M)=(S0/M)+(S1/M)((S0|S1)/M)=((S0/M)|S1)+(S0|S1/M))(rec(k).S/M)=S(rec(k).S/k}/M注2.3.2在假定消息类型是原子的情况下,可给出match和cut的简单释。因此,将会得到 cut(M0,M1)=ε然而,若在购买者—供应商—发货者示例中,match被定义为将消息元素与共同类型的元素进行匹配,而cut移除这些对,则可以看到,购买者安全性的动作是实际的联合。即,购买者在安全性中前进之前实际等待PO被消耗以及ASN被供给。
定义2.3.3设端口p0具有安全性S0类型,同样的,p1具有安全性S1类型,且S=(S0:=:S1)。若S=0,则认为将p0和p1结合是安全的。否则,S就是将p0和p1结合不安全的原因。
关于这个定义的论证就是这样的。
定理2.3.4若(S0:=:S1)≠0,则S0提供不与S1匹配的输入/输出动作。
权利要求
1.一种计算机实现的方法,用于核查第一web服务的第一端口类型和第二web服务的第二端口类型的兼容性,所述方法包含从所述第一web服务的第一端口类型中提取第一安全性(S1),并从所述第二web服务的第二端口类型中提取第二安全性(S2);以及通过将所述第一安全性与所述第二安全性绑定(S:=:S2),以确定所述绑定的结果是否产生web服务之间的互操作性,来测试所述第一安全性与所述第二安全性的兼容性。
2.如权利要求1所述的方法,其特征在于,所述第一web服务包括所述第一端口类型的第一端口,并且所述第二web服务包括所述第二端口类型的第二端口,若所述绑定的结果产生web服务之间的安全互操作性,则所述第一端口可与所述第二端口结合。
3.如权利要求1所述的方法,其特征在于,所述第一web服务包括所述第一端口类型的第一端口,并且所述第二web服务包括所述第二端口类型的第二端口,若所述绑定的结果产生可疑的互操作性,并且所述第一web服务和所述第二web服务容许所述第一端口和所述第二端口的结合,则所述第一端口可与所述第二端口结合。
4.如权利要求1所述的方法,其特征在于,若所述第一安全性是停止安全性(0),并且所述第二安全性的形式是(S),则所述绑定的结果是所述第二安全性。
5.如权利要求1所述的方法,其特征在于,若所述第一安全性是顺序安全性(M.S),并且所述第二安全性是并行安全性(S0|S1),则所述绑定的结果是选择安全性(((S0/M)|S1):=:S)+((S0|(S1/M)):=:S)。
6.如权利要求1所述的方法,其特征在于,若所述第一安全性是选择安全性(S0+S1),并且所述第二安全性的形式是(S),则所述绑定的结果是选择安全性((S0:=:S)+(S1:=:S))。
7.如权利要求1所述的方法,其特征在于,若所述第一安全性的形式是(M0.S0),并且所述第二安全性的形式是(M1.S1),而且匹配函数(match(M0,M1))是已定义的,则所述绑定结果等同于具有关系(cut(M0,M1).(S0:=:S1))的安全性,否则,所述绑定的结果是未定义的。
8.如权利要求1所述的方法,其特征在于,若所述第一安全性是并行安全性(S0|S1),并且所述第二安全性是另一个并行安全性(S2|S3),则所述绑定的结果是选择安全性((S0,2,3,1)+(S1,2,3,0)+(S2,0,1,3)+(S3,0,1,2))。
9.如权利要求8所述的方法,其特征在于,所述选择安全性((S0,2,3,1)+(S1,2,3,0)+(S2,0,1,3)+(S3,0,1,2))中的每个选择的放置形式可以是(Si,m,n,j),其中,若关系((Si:=:(Sm|Sn)):=:Sj)是对一特定选择定义的,则所述绑定的结果是关系((Si:=:(Sm|Sn)):=:Sj),否则,所述绑定的结果是另一关系((Si:=:(Sm|Sn))|Sj)。
10.如权利要求1所述的方法,其特征在于,若所述第一安全性是递归安全性(rec(K).S0),并且所述第二安全性的形式是(S),则所述绑定的结果是关系(S0{rec(K).S0/K}:=:S)。
11.如权利要求1所述的方法,其特征在于,若所述第一安全性的形式是(S),并且所述第二安全性的形式是(0/S0),则所述绑定的结果是未定义的。
12.如权利要求1所述的方法,其特征在于,所述第一安全性的形式是(S),并且所述第二安全性的形式是(M0.S/M1),而且匹配函数(match(M0,M1))是已定义的,则所述绑定的结果等同于切除函数(cut(M0,M1))。
13.如权利要求1所述的方法,其特征在于,若所述第一安全性的形式是(S),并且所述第二安全性的形式是(M0.S/M1),而且匹配函数(match(M0,M1))未定义,则所述绑定的结果是未定义的。
14.如权利要求1所述的方法,其特征在于,若所述第一安全性的形式是(S),并且所述第二安全性的形式是((S0+S1)/M),则所述绑定的结果等同于选择安全性((S0/M)+(S1/M))。
15.如权利要求1所述的方法,其特征在于,若所述第一安全性的形式是(S),并且所述第二安全性的形式是((S0|S1)/M),则所述绑定的结果等同于菜单安全性(((S0/M)|S1)+(S0|(S1/M))。
16.如权利要求1所述的方法,其特征在于,若所述第一安全性的形式是(S),并且所述第二安全性的形式是(rec(K).S/M),则所述绑定的结果就等同于递归安全性S{rec(K).(S/K)}/M。
17.一种具有计算机可执行指令的计算机可读介质,所述指令用于执行核查第一web服务的第一端口类型和第二web服务的第二端口类型的兼容性的方法,所述方法包含所述第一web服务的第一端口类型中提取第一安全性(S1),并从所述第二web服务的第二端口类型中提取第二安全性(S2);以及通过将所述第一安全性与第二安全性绑定(S1:=:S2),以确定所述绑定的结果是否产生web服务之间的互操作性,来测试所述第一安全性与所述第二安全性的兼容性。
18.如权利要求17所述的方法,其特征在于,所述第一web服务包括所述第一端口类型的第一端口,并且所述第二web服务包括所述第二端口类型的第二端口,若所述绑定的结果产生web服务之间的安全互操作性,则所述第一端口可与所述第二端口结合。
19.如权利要求17所述的方法,其特征在于,所述第一web服务包括所述第一端口类型的第一端口,并且所述第二web服务包括所述第二端口类型的第二端口,若所述绑定的结果产生可疑互操作性,并且所述第一web服务和所述第二web服务容许所述第一端口与所述第二端口的结合,则所述第一端口可与所述第二端口结合。
20.如权利要求17所述的方法,其特征在于,若所述第一安全性是停止安全性(0),并且所述第二安全性的形式是(S),则所述绑定的结果是第二安全性。
21.如权利要求17所述的方法,其特征在于,若所述第一安全性是顺序安全性(M.S),并且所述第二安全性是并行安全性(S0|S1),则所述绑定的结果是选择安全性(((S0/M)|S1):=:S)+((S0|(S1/M)):=:S)。
22.如权利要求17所述的方法,其特征在于,若所述第一安全性是选择安全性(S0+S1),并且所述第二安全性的形式是(S),则所述绑定的结果是选择安全性((S0:=:S)+(S1:=:S))。
23.如权利要求17所述的方法,其特征在于,若所述第一安全性的形式是(M0.S0),并且所述第二安全性的形式是(M1.S1),而且匹配函数(match(M0,M1))是已定义的,则所述绑定结果等同于具有关系(cut(M0,M1).(S0:=:S1))的安全性,否则,所述绑定的结果是未定义的。
24.如权利要求17所述的方法,其特征在于,若所述第一安全性是并行安全性(S0|S1),并且所述第二安全性是另一并行安全性(S2|S3),则所述绑定的结果是选择安全性((S0,2,3,1)+(S1,2,3,0)+(S2,0,1,3)+(S3,0,1,2))。
25.如权利要求24所述的方法,其特征在于,所述选择安全性((S0,2,3,1)+(S1,2,3,0)+(S2,0,1,3)+(S3,0,1,2))中的每个选择的放置形式可以是(Si,m,n,j),其中,若关系((Si:=:(Sm|Sn)):=:Sj)是对一特定选择定义的,则所述绑定的结果是关系((Si:=:(Sm|Sn)):=:Sj),否则,所述绑定的结果是另一关系((Si:=:(Sm|Sn))|Sj)。
26.如权利要求17所述的方法,其特征在于,若所述第一安全性是递归安全性(rec(K).S0),并且所述第二安全性的形式是(S),则所述绑定的结果是关系(S0{rec(K).S0/K}:=:S)。
27.如权利要求17所述的方法,其特征在于,若所述第一安全性的形式是(S),并且所述第二安全性的形式是(0/S0),则所述绑定的结果是未定义的。
28.如权利要求17所述的方法,其特征在于,若所述第一安全性的形式是(S),并且所述第二安全性的形式是(M0.S/M1),而且匹配函数(match(M0,M1))是已定义的,则所述绑定的结果等同于切除函数(cut(M0,M1))。
29.如权利要求17所述的方法,其特征在于,若所述第一安全性的形式是(S),并且所述第二安全性的形式是(M0.S/M1),而且匹配函数(match(M0,M1))是未定义的,则所述绑定的结果是未定义的。
30.如权利要求17所述的方法,其特征在于,若所述第一安全性的形式是(S),并且所述第二安全性的形式是((S0+S1)/M),则所述绑定的结果等同于选择安全性((S0/M)+(S1/M))。
31.如权利要求17所述的方法,其特征在于,若所述第一安全性的形式是(S),并且所述第二安全性的形式是((S0|S1)/M),则所述绑定的结果等同于菜单安全性(((S0/M)|S1)+(S0|(S1/M))。
32.如权利要求17所述的方法,其特征在于,若所述第一安全性的形式是(S),并且所述第二安全性的形式是(rec(K).S/M),则所述绑定的结果等同于递归安全性S{rec(K).(S/K)}/M。
33.一种允许web服务通信的网络化系统,包含第一web服务,用于提供计算服务,所述第一web服务包括用于发送和接收消息的第一端口,所述第一端口包括第一端口类型;以及第二web服务,它需要由所述第一web服务提供的计算服务,所述第二web服务包括用于发送和接收消息的第二端口,所述第二端口包括第二端口类型,若所述第二端口类型与所述第一端口类型兼容,则所述第二端口可与所述第一端口结合,用于对由所述第一web服务提供服务的安全访问。
34.如权利要求33所述的网络化系统,其特征在于,所述第一web服务包括用于发送消息的第三端口,并且所述第二web服务提供用于从所述第三端口接收消息的第四端口。
35.如权利要求34所述的网络化系统,其特征在于,所述第四端口位于第三web服务上,所述第四端口由所述第三web服务提供给所述第二web服务。
36.如权利要求33所述的网络化系统,其特征在于,所述第一web服务是在第一计算装置上执行的。
37.如权利要求34所述的网络化系统,其特征在于,所述第二web服务是在第二计算装置上执行的。
38.一种允许web服务通信的网络化系统,包含提供第一组服务的第一web服务,所述第一web服务包括编程上表达对所述第一组服务的安全访问的第一安全性;以及提供第二组服务的第二web服务,所述第二web服务包括编程上表达对所述第二组服务的安全访问的第二安全性,若所述第二安全性能够在编程与所述第一安全性对齐,则所述第二web服务访问所述第一组服务,且所述第一web服务访问所述第二组服务。
39.如权利要求38所述的网络化系统,其特征在于,所述第一web服务的第一组服务是可通过第一组操作来访问的,所述第一安全性在编程上指定所述第一组操作的可允许的调用排列。
40.如权利要求39所述的网络化系统,其特征在于,所述第二web服务的第二组服务是可通过第二组操作来访问的,所述第二安全性在编程上指定所述第二组操作的可允许的调用排列。
41.如权利要求40所述的网络化系统,其特征在于,所述第一web服务包括第一端口类型,所述第一端口类型包括所述第一组操作和所述第一安全性。
42.如权利要求41所述的网络化系统,其特征在于,所述第二web服务包括第二端口类型,所述第二端口类型包括所述第二组操作和所述第二安全性。
43.一种允许web服务通信的网络化系统,包含提供服务的第一web服务,所述第一web服务包括编程上描述访问所提供的服务的次序的安全性;以及第二web服务,它需要由所述第一web服务提供的服务,所述第二web服务接收所述第一web服务的安全性,以形成与所述第一web服务的虚拟合约,以使所述第二web服务可访问所提供的服务。
44.如权利要求43所述的网络化系统,其特征在于,所述第一web服务包括第一端口类型,并且所述第二web服务包括第二端口类型,其中,所述虚拟合约是在当所述第一端口类型与所述第二端口类型兼容时形成的。
45.如权利要求43所述的网络化系统,其特征在于,所述第二web服务包括另一安全性,其中,所述虚拟合约是在所述安全性可被所述第一web服务和所述第二web服务接受时形成的。
46.如权利要求43所述的网络化系统,其特征在于,所述所述第一web服务包括第一端口,并且所述第二web服务包括第二端口,其中,当所述虚拟合约形成时,所述第一端口与所述第二端口结合。
47.如权利要求43所述的网络化系统,其特征在于,当创建所述虚拟合约以形成包含所述第一web服务和所述第二web服务两者的组合web服务时,所述第一web服务在程上联合所述第二web服务。
48.一种计算机可读介质,具有保存于其上的可定制、基于标签的数据结构,以供web服务使用,以评估与另一web服务的安全互操作性,所述数据结构包含一端口类型标签,它表示能够由web服务调用的操作;以及一安全性标签,它表示程上指定web服务调用所述操作的次序的安全性。
49.如权利要求48所述的计算机可读介质,其特征在于,所述安全性标签是嵌套在所述端口类型标签内的。
50.如权利要求49所述的计算机可读介质,其特征在于,嵌套在所述端口类型标签内的是表示所述操作的签名的一个或多个签名标签。
51.如权利要求49所述的计算机可读介质,其特征在于,嵌套在所述安全性标签内的是一表示所述安全性的不活动或终止的停止安全性标签。
52.如权利要求49所述的计算机可读介质,其特征在于,嵌套在所述安全标签内的是一表示两个安全性之间的选择的选择安全性标签。
53.如权利要求49所述的计算机可读介质,其特征在于,嵌套在所述安全性标签内的是一表示两个安全性之间的选择的菜单安全性标签。
54.如权利要求49所述的计算机可读介质,其特征在于,嵌套在所述安全性标签内的是一表示两个安全性的并行执行的并行安全性标签。
55.如权利要求49所述的计算机可读介质,其特征在于,嵌套在所述安全性标签内的是一其表示所述安全性的递归的递归安全性标签。
56.如权利要求49所述的计算机可读介质,其特征在于,嵌套在所述安全性标签内的是一表示所述安全性的名称的参考安全性标签。
57.一种用于创建对应于web服务程序的web服务规范的计算机可实现方法,所述方法包含创建能够由web服务调用的操作集;以及创建指定所述操作集的可准许的调用排列的安全性。
58.如权利要求57所述的方法,其特征在于,所述方法还包含创建一端口类型,并将所述操作集和安全性放置在所述端口类型中。
59.如权利要求58所述的方法,其特征在于,所述方法还包含创建所述web服务的抽象定义,并将所述端口类型放置到所述web服务的抽象定义中。
60.如权利要求59所述的方法,其特征在于,所述方法还包含创建所述web服务的具体描述。
61.一种具有计算机可执行指令的计算机可读介质,所述指令用于执行创建对应于web服务程序的web服务的规范的方法,所述方法包含创建能够由web服务调用的操作集;以及创建指定所述操作集的可准许的调用排列的安全性。
62.如权利要求61所述的计算机可读介质,其特征在于,所述方法还包含创建一端口类型,并将所述操作集和安全性放置在所述端口类型中。
63.如权利要求62所述的计算机可读介质,其特征在于,所述方法还包含创建所述web服务的抽象定义,并将所述端口类型放置在所述web服务的抽象定义中。
64.如权利要求63所述的计算机可读介质,其特征在于,所述方法还包含创建所述web服务的具体描述。
全文摘要
web服务的联合是通过使用安全性经由虚拟合约完成的(802)。web服务的联合提高了web服务的安全互操作性,以创建比每个web服务可单独提供的更大的功能(804)。当一个web服务的端口类型与另一个web服务的另一端口类型兼容时,为互操作性而联合web服务(806)。
文档编号H04L29/12GK1701318SQ03825279
公开日2005年11月23日 申请日期2003年5月13日 优先权日2002年9月30日
发明者L·G·梅瑞迪斯, S·比约戈, D·瑞齐特 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1