专利名称:通过实现和绑定合约向客户机服务提供功能的制作方法
通过实现和绑定合约向客户机服务提供功能
背景技术:
通常,开发者编写软件应用程序以在其配置中允许许多自由度。作为示例,这些开发者能够通过建立在特定平台的具体约束内操作的软件应用程序来利用这些自由度,其中该特定平台用以支持该软件应用程序。因此,与软件应用程序相关联的这些自由使得软件应用程序能够与平台协作。在一个实例中,对软件应用程序的这种配置可由应用程序-服务提供者来采用, 应用程序-服务提供者开发软件应用程序以在可经由因特网远程访问的平台上操作。在该实例中,平台以用户可通过使用软件应用程序远程地操纵文件的方式执行软件程序。因此, 平台适于建立在其上运行的软件应用程序的底层元素以适应远程使用的当前负载。软件应用程序中的自由度允许放大或缩小这些底层元素并且允许管理这些底层元素之间的协调。 然而,因为无法公布这些底层元素的功能,所以向主题软件应用程序以外的软件程序提供利用该功能的能力是不切实际的。此外,即使其它软件程序知道当前运行的底层元素的功能,也无法将各软件应用程序自动地链接在一起或者自动地配置底层元素以允许远程地利用该功能。对软件应用程序的底层元素进行配置的当前解决方案依赖于平台的管理员手动地设置底层元素。这些自组织解决方案是劳动密集型的、易于出错的,并且不包括将底层元素链接至另一软件程序。此外,当平台在尺寸上扩展时(包括支持大量软件应用程序操作的大量互连的硬件组件),手动介入的这些缺点被放大。概述提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。本发明的实施例涉及用于经由在此被称为“合约”的媒介使目标服务(例如,在分布式计算环境中运行的服务应用程序)向客户机服务的功能方面的表达自动化的方法、系统以及其上具有当被执行时根据本发明的实施例执行上述方法的计算机可执行指令的计算机存储介质。通常,在被配置为支承服务应用程序的操作的分布式计算环境的上下文中执行这些方法。在各实施例中,一确定通过合约表达的功能方面满足客户机服务的依赖性就分配该合约。分配之后,本发明的方法可包括在分布式计算环境内实现合约并将所实现的合约绑定至服务应用程序的组件程序。通常,合约定义接口并且在安装期间维护配置接口的特性。在合约实现期间,根据与其相关联的特性建立并参数化接口之一。在所实现合约的绑定期间,组成目标服务的组件程序的输入端点经由通信信道链接到所建立的接口。因此,向可到达所建立的接口的其它服务应用程序提供对目标服务的功能方面的访问。绑定过程还可包括将构成客户机服务的组件程序的输出端点链接至所建立的接口,以及基于所建立的接口的参数化来配置目标服务的过程。另外,客户机服务可被配置成使从输出端点发出的调用格式化为目标服务的某些特性。因此,来自客户机服务的调用可在通信信道上路由以允许到达目标程序,并且可与目标服务的配置兼容以允许正确地使用目标服务的功能方面。在各实施例中,目标服务可以一接收到调用就确定客户机服务的身份以及追加至其上的声明。目标服务通常能够对客户机服务的身份动态地作出反应。如此,在理解客户机服务的身份之后,目标服务因此就可以在回复调用时修改其服务等级(例如,操纵其功能方面)以适应特定的客户机服务。提供本发明内容以便以简化形式介绍将在以下的具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。附图简述以下参考所附附图详细描述本发明的各实施例,附图中
图1是适用于实现本发明的各实施例的示例性计算环境的框图;图2是示出适用于实现本发明的各实施例的、被配置成将所实现的合约绑定至目标服务的示例性分布式计算环境的框图;图3是示出适用于实现本发明的各实施例的、被配置成将绑定至目标服务的合约绑定至客户机服务的示例性分布式计算环境的框图;图4是根据本发明的一实施例的用于利用负载平衡(LB)信道来路由服务应用程序之间的通信的示例性结构控制器(fabric controller)的图形表示;图5是根据本发明的一实施例的用于利用无状态交换机(SLQ信道来路由服务应用程序之间的通信的示例性结构控制器的图形表示;图6是根据本发明的一实施例的示出用于自动地实现合约并将所实现的合约绑定至目标服务的总体方法的流程图;以及图7是根据本发明的一实施例的示出用于基于客户机服务的依赖性自动地分配所实现的合约并将所分配的合约绑定至其上的总体方法的流程图。详细描述此处用具体细节描述本发明的各实施例的主题以满足法定要求。然而,该描述本身并非旨在限制本专利的范围。相反,发明人设想所要求保护的主题还可结合其他当前或未来技术按照其他方式来具体化,以包括不同的步骤或类似于本文中所描述的步骤的步骤组合。本发明的各实施例涉及用于自动地适应客户机服务的方法、系统、以及其上包含当被执行时执行根据本发明的各实施例的方法的计算机可执行指令的计算机存储介质,其中所编写的客户机服务预期某些功能可用于支持客户机服务的操作。客户机服务所依赖的这些功能可由合约来展示,其中合约用作允许客户机服务到达并使用在分布式计算环境内运行的目标服务处的功能的媒介。可基于合约是否展示满足客户机服务预期履行的依赖性的功能来分配适当的合约。然后可实现分配合约(例如,在分布式计算环境内建立接口)并将其绑定至目标和客户机服务(例如,经由所建立的接口链接目标和客户机服务的组件程序)。如此,使客户机服务能够执行所需的预期功能被自动地发现并被链接到客户机服务。因此,在一个方面,本发明的各实施例涉及其上包含计算机可执行指令的一个或多个计算机可读介质。在执行计算机可执行指令之后,提供一种用于在分布式计算环境内将所实现的合约绑定至目标服务的方法。最初,该方法包括标识定义接口聚集的合约并实现所标识的合约以在分布式计算环境内建立接口聚集的接口。通常,合约维护用于安装每个接口的特性集,并且所实现的合约用作使客户机服务到达目标服务的一部分的媒介。另外,该方法可包括通过利用从与所建立的接口相关联的特性集所得的值使所建立的接口参数化将所实现的合约绑定至目标服务。在各实施例中,绑定过程包括自动地链接所建立的接口和一个或多个角色实例,并且经由负责管理目标服务的执行的结构控制器映射这些链接。一般地,角色实例包含对表示一种组件程序的至少一个角色的复制,其中该组件程序一经执行就将功能赋予目标服务。在另一方面,本发明的各实施例涉及用于在分布式计算环境内将先前绑定至目标服务的所实现的合约绑定至客户机服务的计算机化方法。在各实施例中,该方法包括从客户机服务接收履行其依赖性的指示以及分配展示满足客户机服务的组件程序的依赖性的功能抽象的合约。通常,合约在分布式计算环境中先行实现,并且被绑定至执行该功能的目标服务。该方法还可包括部署客户机服务以启动其操作。在示例性实施例中,部署涉及将一个或多个组件程序自动链接至由所分配的绑定合约所定义的接口,以及将对这些链接的描述写入负责管理目标服务的执行的结构控制器,其中在实现所分配的绑定合约之后在分布式计算环境内建立接口。在各实施例中,该方法最初包括但不限于接收增加服务应用程序的角色的实例的数量的指示。如上所述,角色表示特定类的组件,这类组件与服务应用程序的其它角色协作以实现其分布式功能。作为示例,指示由包括服务应用程序的远程使用工作负载的变化或者数据中心的一个或多个节点掉线两者中的至少一个的事件所产生。因此,这些事件以及本发明所预期的其它事件可驱动在分布式数据中心内安装服务应用程序的附加角色的期望。在又一方面中,本发明的各实施例涉及能够通过实现和绑定可由分布式计算环境使用的合约将客户机服务自动链接至目标服务的计算机系统。一般地,数据中心包括分布式计算设备。计算机系统可包括其上包含多个计算机软件组件的计算机存储介质。最初, 计算机软件组件包括服务应用程序(例如客户机服务和目标服务)、合约、以及被配置成管理分布式计算环境的结构控制器。一般地,客户机服务包括一个或多个组件程序,而目标服务包括一个或多个角色实例,其中角色实例包含对表示一种组件程序的至少一个角色的复制,该组件程序一经执行就将功能赋予目标服务。在操作中,客户机服务被配置成提交履行其依赖性的指示。合约可展示目标服务的功能的抽象,其满足客户机服务的组件程序的依赖性。合约被进一步配置成用于定义至少一个接口。结构控制器被配置成不按特定次序执行以下过程中的一个或多个通过实现合约在分布式计算平台上建立接口 ;将合约绑定至目标服务以及绑定至客户机服务;以及经由所建立的接口将客户机服务的程序组件自动链接至目标服务的角色实例。一般地,目标服务的角色实例的实例化和协调管理由服务模型来促进(参见图2 的附图标记250)。如此处所使用的,短语“服务模型”不旨在限制,其一般指包括与建立和管理分布式计算环境内的目标服务的实例有关的信息的任何通信。在一个实例中,服务模型包括对要建立目标服务的哪些角色以及如何在数据中心内安装和启动每个角色的实例的描述。即,服务模型用作对应为目标服务运行哪些角色的接合以及应在何处安装角色实例的条件。
另外,服务模型可分配分布式计算中心(参见图2和图3的附图标记200)内的一个或多个节点(例如图2和图3中的节点I 221、II 222、III 223、IV 2 以及V 225)用以支持角色实例。这可由结构控制器来执行。因此,在特定实施例中,服务模型用作接口蓝图,接口蓝图提供用于管理目标服务以及客户机服务的组件程序(诸如角色实例)的指令。 即,在服务模型被部署到遍及分布式计算环境的分布式位置后,服务模型帮助在协调组件程序之间的活动时引导结构控制器。这些位置通常由服务模型内的部署规范来描述。一般地,短语“部署规范”不旨在限制,并且用于指代管理节点上的角色实例的实例化、标识哪些通信信道用作角色实例之间的通信路径、和/或提供描述将执行目标服务的特定方式的信息的机制。目标服务的角色实例(例如图2的目标服务205的角色A 261和角色B 262) 一般指至少一个角色的复制品。一般地,如此处所使用的,术语“角色”宽泛地表示与目标服务的其它角色协作以实现满足客户机服务的预期依赖性的功能的任何种类的组件。为了启动目标服务的操作及其功能方面,服务模型结合部署规范将角色实例实例化于分布式计算环境的节点上。实例化最初包括分配被确定为可用于主存角色实例的节点,将角色实例放置在所分配的节点上,配置所放置的角色实例,以及构造设置在角色实例上的输入端点和输出端点之间的互连。如以下更详细讨论的,实现合约之后,可将接口链接至角色实例的输入端点以促进对目标服务的功能的一部分的访问。一般地,分布式计算环境内的节点用于适应角色实例的操作。如此处所使用的,术语“节点”不旨在限制,而是涵盖所有形式的计算设备,例如个人计算机、台式计算机、膝上型计算机、手持式设备、移动手机、消费电子设备等。在一个方面中,节点表示经由网络云互连的多个分布式计算设备中的计算设备。一般地,这些分布式计算设备能够主存服务应用程序的各种角色的多个实例。作为示例,特定节点可能能够适应两个或更多个主机环境,其中每个主机环境支持角色实例。这些角色实例可完全隔离地(即对服务应用程序施加高级别的安全性)、与其它角色部分通信地、或者与服务应用程序的一个或多个其它角色处于交互状态地在节点上运行。一旦操作,可将正在运行的目标服务绑定至客户机服务以履行被写入客户机服务的期望依赖性。合约通常是本发明所采用的用于推进绑定过程的媒介。在一个实施例中, 合约展示对正在运行的目标服务期望的事物(即目标服务的功能)的抽象定义。在另一实施例中,合约定义接口聚集并且维护与每个接口相关联的特性集。一般地,接口在一个或多个方面相关。在各实施例中,特性用于在接口安装至分布式计算环境后定制或参数化接口。 作为示例,特性可部分依赖于节点协议。当利用适当的信息创建目标服务时填充这些特性, 使得结构控制器能找到目标服务并且能配置客户机服务的组件程序以成功地到达目标服务。如下所述,可实现合约(例如,建立所定义接口的一个聚集)并将其绑定至目标服务。结构控制器可部分地基于一个或多个目标服务的功能选择将目标服务绑定至该一个或多个目标服务。因此,可将合约绑定至不止一个服务应用程序。然而,可根据节点特性、所选目标服务的角色实例等对在实施合约期间建立的接口进行不同的配置。在简要描述了本发明的各实施例的概览后,以下描述适于实现本发明的各实施例的示例性操作环境。
概括地参考附图,并首先具体参考图1,示出了用于实现本发明的各实施例的示例性操作环境,并将其概括地指定为计算设备100。计算设备100只是合适的计算环境的一个示例,并且不旨在对本发明的各实施例的使用范围或功能提出任何限制。也不应该把计算环境100解释为对所示出的任一组件或其组合有任何依赖性或要求。本发明的各实施方式可以在由计算机或诸如个人数据助理或其他手持式设备之类的其他机器执行的计算机代码或机器可使用指令的一般上下文中描述,该机器可使用指令包括诸如组件程序之类的计算机可执行指令。一般而言,包括例程、程序、对象、组件、数据结构等的组件程序指的是执行特定任务或实现特定抽象数据类型的代码。本发明的各实施方式可以在各种系统配置中实施,这些系统配置包括手持式设备、消费电子产品、通用计算机、专用计算设备等等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实施。继续参考图1,计算设备100包括直接或间接耦合以下设备的总线110 存储器 112、一个或多个处理器114、一个或多个呈现组件116、输入/输出(I/O)端口 118、I/O组件120、和说明性电源122。总线110表示一个或多个总线(诸如地址总线、数据总线或其组合)。虽然为了清楚起见利用线条示出了图1的各框,但是实际上,各组件的轮廓并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的和模糊的。例如,可以将诸如显示设备之类的呈现组件视为I/O组件。同样,处理器具有存储器。发明人认识到,这是本领域的特性,并且重申,图1的图示只是例示可结合本发明的一个或多个实施例来使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等分类之间没有区别,它们全部都被认为是在图1的范围之内并且被称为“计算机”或“计算设备”。计算设备100通常包括各种计算机可读介质。作为示例而非限制,计算机可读介质可以包括随机存取存储器(RAM);只读存储器(ROM);电可擦除可编程只读存储器 (EEPROM);闪存或其它存储器技术;CDR0M、数字多功能盘(DVD)或其它光或全息介质;磁带盒、磁带、磁盘存储或其它磁存储设备;或可用于对所需信息进行编码并且可由计算设备 100访问的任何其它介质。存储器112包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移动的,不可移动的,或两者的组合。示例性硬件设备包括固态存储器、硬盘驱动器、 光盘驱动器等。计算设备100包括从诸如存储器112或I/O组件120等各种实体读取数据的一个或多个处理器。呈现组件116向用户或其他设备呈现数据指示。示例性呈现组件包括显示设备、扬声器、打印组件、振荡组件等。I/O端口 118允许计算设备100在逻辑上耦合至包括I/O组件120在内的其他设备,其中某些设备可以是内置的。说明性组件包括话筒、 操纵杆、游戏板、圆盘式卫星天线、扫描仪、打印机、无线设备等等。现在转向图2,示出了显示适用于实现本发明的各实施例时的分布式计算环境 200的框图。一般地,分布式计算环境200被配置成将所实现的合约235绑定至目标服务 205并将绑定至目标服务205的合约绑定至客户机服务,如图3所示。分布式计算环境200 包括数据中心210,数据中心210被配置成根据服务模型250容纳和支持目标服务205的组件程序或角色A 261与角色B 262的实例的操作。本领域普通技术人员将理解和明白,图 2所示的数据中心210仅仅是用于容纳一个或多个服务应用程序(例如目标服务205)的一个合适示例,并且不旨在对本发明的各实施方式的使用范围或功能提出任何限制。也不应将数据中心210解释为对任何单个节点、节点组合(例如,节点I 221、II 222以及III 223)、资源(未示出)、或用于访问资源的API集(未示出)有任何依赖和要求。此外,尽管为了清楚起见用线条示出了图2的各个框,但是在实际上,各组件的轮廓并不是那样清楚, 并且比喻性地来说,线条更精确地将是灰色的和模糊的。数据中心210包括各种节点(例如节点I 221、II 222以及III 223)、在每个节点上运行的操作系统、角色实例A 261和B沈2、接口(例如接口 220)、以及常常包括的结构控制器215,结构控制器215可包括本地安装在节点I 221、11 222和III 223上的结构代理(未示出)。结构代理用作结构控制器215的扩展,并且协作用于安装和管理目标服务 205等。另外,角色实例A 261和B 262可经由发出调用的输入端点(例如输入端点255) 和接收调用的输出端点彼此互连。在一个实例中,这些互连中的一个或多个可经由网络云 (未示出)来建立。网络云将以上所列出的实体互连,使得角色实例A 261与B 262和跨各种物理资源可分布地设置的接口 220可识别彼此的位置以在它们之间建立通信。另外,网络云便于通信信道290上的这种通信,其中通信信道290将接口 220可操作地耦合至角色 A的实例的输入端点255。作为示例,网络云可包括但不限于一个或多个局域网(LAN) 和/或广域网(WAN)。这样的联网环境常见于办公室、企业范围计算机网络、内联网和因特网中。因此,网络不在此进一步描述。此外,应当注意,本发明的各实施例不限于在图2中示出的这些物理资源上实现, 而是可在处于其各实施例的范围内的各种不同类型的计算设备、装备和组件程序中的任一种上实现。换言之,所示出的数据中心210的节点I 221、11 222以及III 223描绘仅仅旨在用于讨论目的的示例性配置;因此,计算行业中已知的任何合适的节点布局以及其上驻留的角色实例都可以使用并且已被本发明构想到。数据中心210的这些示例性节点I 221、II 222以及III 223和角色实例A 261 与B262用于引入实现服务合约以及将所实现的合约235绑定至目标服务205的概念,现在将对此进行讨论。最初,服务合约是进行标识。在一个实例中,合约被标识用于展示履行被写入客户机服务(参见图3的附图标记305)的预期依赖性的角色A的实例261的功能260 的抽象。所标识的合约通常定义接口聚集并且维护特性集M0,其中特性集240各自与一个或多个接口相关联。在操作中,特性集240有助于安装和定制每个接口的配置。可实现所标识的服务合约以建立分布式计算环境200的计算设备(例如节点I 221)内的接口聚集的接口 220。如以上所详细讨论的,所实现的合约用作客户机服务到达目标服务205的功能260的媒介。实现过程可包括利用从与所建立的接口 220相关联的特性集240所得的值230参数化所建立的接口 220。在一个实例中,参数化可包括将值230赋予接口 200内隐含的参数270。实现过程还可包括将约束295安装到接口 220。最初,与接口 220相关联的特性集 240可指定约束四5,约束295部分地控制所建立的接口 220的操作。此外,利用从特性集 240所得的值230参数化所建立的接口 220实施分布式计算环境200内的约束四5。如此, 约束295用作确定如何钩住接口 220 (例如,定义服务器的哪些外部端口可从远程web服务器应用程序接收调用225)以及部分地如何配置接口 220的准则。作为示例,当特性240指定诸如具体的端口数之类的特定约束四5时,结构控制器215在数据中心210内分配它们并且当调用225被发出时将它们设置为目标。因此,当尝试到达目标服务210的功能260时,接口 220被限制为使用这些分配的端口数。约束295可助于配置接口 220。在一个示例中,约束295可促使接口 220过滤这些访问功能260的尝试,从而限制进入目标服务205的业务流量。在另一示例中,约束295可促使接口 220允许由特定身份机构所认证的客户机服务到达功能沈0。在又一示例中,在预定的时间帧期满后,约束295可促使接口 220或经由接口 220促使目标服务205关闭与功能沈0的连接,从而防止盗取处理。在实现之后,所实现的合约235可经由结构控制器215绑定至目标服务205。将所实现的合约235绑定至目标服务205的过程可包括经由通信信道四0自动地链接所建立的接口 220和角色A的实例沈1。如以下参考图4和图5所详细讨论的,通信信道290可采用多种形式中的任何一种。通常,通信信道290将接口 220经由输入端点255可操作地耦合至目标服务205的功能沈0。输入端点255和/或通信信道290可被映射以供将来引用。作为示例,结构控制器215可负责分配数据储存210中的适当的通信信道四0以供接口 220使用。在各实施例中,在将所实现的合约235绑定至目标服务205之后,将接口 220链接至角色A的实例的输入端点225。链接促进对提供功能沈0的目标服务205的多个位置的访问。换言之,接口 220产生对提供合乎需要的功能沈0的角色A的所有相关实例沈1 的认识。绑定过程进一步包括基于由所建立的接口 220所实施的指定约束四5自动地配置角色A的实例沈1。配置过程由附图标记275示出。在各实施例中,在接口 220处所体现的约束295指示结构控制器215如何在目标服务205内设置限制。在一个示例中,约束295可指示存在关于谁可访问角色A的实例的限制,比如仅仅是位于北美的客户机服务。在另一示例中,将接口 220配置成启用安全性的接口的约束295又可配置目标服务205以审阅进入的调用225的真实性证书。通常,当增大数据中心210内的目标服务205的实例数时,服务模型250设置有或者可以指代约束四5以正确地配置新的角色实例上的输入端点 255。绑定过程还包括标识并链接至适应功能沈0的角色A的实例261的适当的输入端点255。一般地,“输入端点”宽泛地指代角色A期望调用225进入的端口,从而允许其它实体接触角色A。另外,端口可用于响应于嵌入在调用225内的请求。可在同一通信信道四5 上将该响应或“回复”发回提供对功能260的请求的客户机服务。因为目标服务205和客户机服务被配置成在协商(例如,应用来自所实现的合约235的约束四5)期间兼容,所以调用225和回复对于目标服务205和客户机服务两者而言都是可理解的(例如,类似的协议或语言)O此外,在链接至输入端点255之后,数据中心210内的输入端点255的网络地址沈5 (例如IP地址)可传播至结构控制器215用于定位链接至接口 220的、角色A的实例 2610这些网络地址265表示由所实现的合约235展示的功能沈0的位置,并且使得依赖于功能260的客户机服务能够访问适当的位置或角色实例沈1。另外,网络地址265帮助数据中心210外部的实体接触接口 220。一般地,在绑定期间将接口 220链接至输入端点255 之后,结构控制器215负责获取和维护输入端点255的网络地址沈5的清单。在一个实例中,该网络地址265可对客户机服务隐藏。因此,结构控制器215自动地建立将调用225从服务应用程序路由至适当的输入端点255的静态路径。在另一实例中, 该网络地址265可对客户机服务可见。在该实例中,客户机服务可以是需要接触地址的知识以发送调用225的传统应用程序。因此,结构控制器215可向客户机服务公布网络地址 265.在又一实例中,该网络地址265可由客户机服务访问。因此,在通信信道290动态更新之后,客户机服务可检索网络地址沈5以访问输入端点。在目标服务205处接收到调用255之后,提供调用225的客户机服务的身份可被请求以验证调用225的真实性。在一个实例中,客户机服务的身份由结构控制器215记录。 记录可在部署客户机服务之后、将客户机服务绑定至所实现的合约235之后或者其后的任何时间发生。在将所发出的调用225中继至角色A的实例261之后,声明281可追加至所发出的调用225上。通过访问客户机服务的身份以验证发出调用225的客户机服务的组件程序以及将所确定的身份和客户机服务的其它特性集成到声明281中来产生声明观1。这样,结构控制器215本质上保证调用225的来源并且代表客户机服务提供认证。 如此,声明281允许目标服务205验证调用者,从而确保目标服务205处的特定的安全级别。在各实施例中,验证可包括检查声明观1以确定是否履行调用225的请求。检查可包括检查声明的内容(例如客户机服务的特性和/或能力)。内容的细节级别通常依赖于声明281的粒度、发送调用225的客户机服务的类型、和/或由客户机服务的输出端点所支持的协议。在一个实施例中,声明内的客户机服务的特性可包括结构控制器215可关于客户机设备推断的任何信息。在一个实例中,可在声明281的内容中提供客户机服务的地理位置。作为响应,目标服务205可履行调用225或将其重新定向到更近的节点。或者,目标服务205可基于地理位置调制对调用225的回复。例如,如果地理位置指示调用225源于法国,则目标服务205可准备用法语回复。在另一实例中,对功能沈0的权限的列表可并入声明281的内容中。作为响应,目标服务205可根据客户机服务所拥有的权限来限制客户机服务对它所控制的资源的访问。在另一实施例中,目标服务205可通过查询验证应用程序编程接口(API)201来验证客户机服务的身份和权限。验证API 201可提供关于所接收的调用225的数据,因为结构控制器215知道调用225的来源。因此,如果声明281是不完整的或是不可用的,则目标服务205可先行确定是否履行调用225 (例如提供功能沈0)。现在转向图3,所示框图示出适用于实现本发明的各实施例的、被配置成将绑定至目标服务的合约绑定至客户机服务的示例性分布式计算环境200。最初,分布式计算环境 200包括如上所述的客户机服务305用于访问目标服务。客户机服务305可表示被配置成在数据中心210内运行的、在数据中心210外部运行但与其远程连接的、或者部分地驻留在数据中心210上的任何服务应用程序。客户机服务305可包括可在数据中心210的分开节点上(例如,节点IV 2M和V 225)分布的组件程序(例如,组件程序A 361和B 362)。在客户机服务305由数据中心210容纳的实施例中,根据服务模型350处维护的且用于管理客户机服务305的执行的部署规范,结构控制器215可负责部署组件程序A 361和B 362。在示例性实施例中,组件程序A 361和B 362中的一个或多个由开发者利用依赖性360编写。一般地,客户机服务305的正确执行依赖于利用适当的功能(例如,图2的目标服务205的功能沈0)来履行依赖性360。在操作中,客户机服务305可传播履行其依赖性360的指示。作为响应,结构控制器215可检查依赖性360并且分配合约,其中合约展示满足依赖性360的功能的抽象。如上所述,满足依赖性360的合约可在分布式计算环境200 内预先实现。另外,所实现的合约可预先绑定至执行由合约所展示的功能的目标服务。在分配满足的合约之后,结构控制器215可将该已分配的且预先绑定的合约335 绑定至客户机服务305。在各实施例中,绑定客户机服务305的过程可在客户机服务305的组件程序A 361和B 362的初始部署期间进行以启动其操作。一般地,部署过程包括将组件程序A 361和B 362自动地链接至由所分配的已绑定合约335所定义的接口 220。已绑定合约335的所在位置利用从特性集240得到的约束295来配置接口 220。在一个实施例中,在实现所分配的已绑定合约335之后,在分布式计算环境200内建立接口 220。另外,对链接的描述可写入结构控制器215。替换地,可将链接至少临时地存储在可由结构控制器 215访问以供将来引用的任何数据储存处。在示例性实施例中,将组件程序A 361和B 362自动地链接至接口 220的过程可包括标识设置在组件程序B 362上的输出端点375,其中组件程序B 362展示依赖性360。 一般地,输出端点375可表示组件程序B 362用以启动从他者请求事物的端口。自动链接的过程可继续分配分布式计算环境200内的通信信道390以将所建立的接口 220可操作地耦合至输出端点375。通信信道390通常用于传达从客户机服务305的输出端点375发出的调用225。通常,调用225包括由组件程序B 362作出的、履行写入其中的依赖性360的请求。在各实施例中,依赖性360可包括不在客户机服务305处执行但已由通过接口 220 链接的功能所完成的数据的外部处理或检索。在完成绑定过程之后,将已绑定合约335绑定至客户机服务305和互补目标服务两者。在各实施例中,客户机服务305可查询接口 220的约束四5以确定接口 220是否能够适应由客户机服务305的服务模型350所指定的功能方面。如果不能,则客户机服务305 可由结构控制器215重新绑定至替代已绑定接口和目标服务但保留履行依赖性360的功能的另一合约。当已绑定目标服务掉线时也可进行重新绑定。出于将目标服务关联至客户机服务305的依赖性360的目的,可使用各种类型的合约。在一个实施例中,使用自绑定合约。一般地,自绑定合约由可由结构控制器215操作的插入机制自动地绑定。因此,结构控制器215选择将处理经由接口 220作出的调用225 的目标服务或伪服务。在另一实施例中,使用了标准合约。一般地,可用两种不同的方式来绑定标准合约。在一个示例性方式中,向每个目标服务提供唯一的名称。然后结构控制器215可通过验证已绑定的目标服务确实实现了已绑定合约335来检查使用唯一名称的客户机服务305 与目标服务的关联的有效性。随后从目标服务的输入端点获得网络地址(例如网络地址沈5)。在另一方式中,将关于未由数据中心210所主存的外部客户机服务305的输出端点 375和/或目标服务的输入端点的信息(例如,IP地址/DNS名称端口)传递到结构控制器215。针对接口 220检测IP:端口规范。因此,结构控制器215配置链接至接口 220的组件程序B 362的输出端点375。然而,不执行所命名的目标服务满足已绑定的合约335的验证。在又一示例性实施例中,通常在客户机服务305驻留在数据中心210外部时使用外部合约。一般地,外部合约包括低级别抽象,其允许客户机服务305接触由客户机服务305的部署所划分的范围内的任何公共IP地址。实际上不执行绑定,并且假定客户机服务 305提供目标服务的网络地址沈5以访问其功能。如此,所链接的输入端点的网络地址沈5 用于配置和路由通信信道390。如上所述,已绑定合约335可维护与所建立的接口 220相关联的特性集M0。在操作中,约束295可通过利用从关联的特性集240所得的值使所建立的接口 220参数化来应用于所建立的接口 220。这些应用的约束295可向客户机服务305公布用以配置组件程序A 361和B 362。配置客户机服务305的过程由附图标记388示出。一般地,配置组件程序A 361和B 362以及输出端点375的过程388包括从应用于接口 220的约束295提取指示。这些指示可用于对客户机服务305的各方面的任何数量的配置以及据此提供的通信。 例如,这些指示可用于格式化从输出端点375发出的调用225。除其它以外,通过利用指示来配置调用225的格式化,调用225可与处于实现期望功能的目标程序的角色实例的底层的协议兼容。一旦被配置,当依赖性360要被履行时客户机服务305可发出调用225。在各实施例中,可从实现依赖性360的组件程序B 362的输出端点375发出调用225。然后通过分布式计算环境200的所分配的通信信道390将调用225路由至所建立的接口 220。如以上所详细讨论的,可使所建立的接口 220参数化用以将所发出的调用225中继至目标服务或者用以过滤所发出的调用225。接口 220的这种判定可基于结合客户机服务305的身份应用于其上的约束四5。此示例性分布式计算环境200只是可以被实现以实现本发明的各方面的合适的环境的一个示例,而非旨在对本发明的使用范围或功能提出任何限制。所示的分布式计算环境220的示例性系统体系结构也不应该被解释为具有涉及如图所示的组件215、220、 221、225、305、335、350、360、361以及362中的任何一个或组合的依赖性或需求。在某些实施例中,组件215、220、221、2M、225、305、335、350、360、361以及362中的一个或多个可被实现为独立设备。在其他实施例中,组件215、220、221、225、305、335、350、360、361或362 中的一个或多个可以被直接地集成到数据中心210或者结构控制器215中。本领域普通技术人员将理解,图3中所示出的组件215、220、221、225、305、335、350、360、361或362本质上和数量上是示例性的,不应该被理解为限制性的。因此,在本发明的各实施例的范围内,可以使用任意数量的组件以实现所需功能。 虽然为了清楚起见利用线条示出了图3的各组件,但是实际上,各组件的轮廓并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的和模糊的。此外,虽然将图3的某些组件示为单个框,但是这些描述在本质和数量上是示例性的且不应被解释为限制(例如,虽然仅示出一个客户机服务305,但多得多的客户机服务可通信耦合到接口 220)。现在转向图4,其示出根据本发明一实施例的用于利用负载平衡(LB)信道410路由服务应用程序(例如,客户机服务305和目标服务20 之间的通信(例如,调用225和回复)的示例性结构控制器215的图形表示。最初,提供可由结构控制器215访问的连接定义450。这些连接定义450帮助指示LB机制420将通信路由至目标服务205的多个角色实例411、412和413中的所选择的一个。被选择用于接收调用的角色实例可基于包括与发出调用225的客户机服务305的角色(例如,角色421、422和423)的可比性、与角色(例如,角色421、422和42 的邻近度、可用性等的任何数量的因素来选择。
一旦选定,经由承载(LB)信道410将调用传送至目标服务205的所选角色,其中承载信道410将所建立的接口 220链接至目标服务205的角色(例如,角色411、412和413) 的输入端点。在一个实例中,传送可包括在所建立的接口 220处接收来自客户机服务305 的调用225,以及调用LB机制420将调用225分发到LB信道410的可用通信信道。如此, 仅向客户机服务305提供一个网络地址用于向其发送调用225。根据连接定义450,结构控制器215负责实施负载平衡方案,其确保调用225对接口 220的分发在目标服务205的角色(例如,角色411、412和413)之间分布。在示例性实施例中,网络地址是到接口 220和/ 或LB机制420的虚拟IP。LB机制420然后可将虚拟IP转换成具体IP,其中每个具体IP 与不同的角色相关联。参考图5,其示出根据本发明一实施例的用于利用无状态交换机(SLQ信道(例如,信道510、511和512)路由服务应用程序(例如,客户机服务305和目标服务205)之间的通信(例如,调用521、522和523以及作为其响应的回复)的示例性结构控制器的图形表示。一般地,所分配的通信信道(参见图2的附图标记四0)可包括将所建立的接口 220 链接至目标服务205的角色(例如,角色411、412和413)的输入端点的SLS信道510、511 和512。这些SLS信道510、511和512可由连接定义450存储并由结构控制器215维护。在操作中,在接收到调用(例如,调用521、522和523)之后,结构控制器215标识与该调用相关联的网络地址。网络地址可由提供调用(例如调用521)的客户机服务305 的角色(例如角色421)提供,或者基于调用来源由连接定义450提供。基于网络地址,在 SLS信道的被指定用于将所建立的接口 220链接至目标服务205的适当的角色实例(例如角色411)的输入端点的通信信道(例如510)上路由调用225。因此,结构控制器215确保可到达的外部可寻址的输入端点的数量与链接至接口 220的目标服务的组件程序或角色一样多。这样,每个输出端点对应于单个输入端点,从而指定单个SLS信道和单个网络地址用于路由调用。参考图6,其示出根据本发明一实施例的示出用于自动地实现合约并将所实现的合约绑定至目标服务的总体方法600的流程图。此外,尽管术语“步骤”和/或“框”可在此处用于指示所采用的方法的不同元素,但除非而且仅当明确描述了各个步骤的顺序,否则该术语不应被解释为意味着此处公开的各个步骤之中或之间的任何特定顺序。最初,如框605所示,标识定义接口聚集的合约。另外,合约维护用于安装每个接口的特性集。如框 610所示,实现所标识的合约以在分布式计算环境内建立接口聚集的接口。通常,所实现的合约引入用于使客户机服务到达目标服务的一部分的媒介。如框615所示,通过利用从与所建立的接口相关联的特性集所得的值使所建立的接口参数化,将所实现的合约绑定至目标服务。在各实施例中,参数化过程包括自动地链接所建立的接口和其一个或多个角色实例(参见框620),并且经由负责管理目标服务的执行的结构控制器映射这些链接(参见框 625)。作为说明,角色实例包含对表示一种组件程序的至少一个角色的复制,其中该组件程序一经执行就将功能赋予目标服务。现在转向图7,其示出根据本发明一实施例的示出用于基于客户机服务的依赖性自动地分配所实现的合约并将所分配的合约绑定至其上的总体方法700的流程图。最初, 如框705所示,从客户机服务接收履行依赖性的指示。如上所述,客户机服务包括一个或多个组件程序。如框710所示,分配展示满足客户机服务的组件程序的依赖性的功能的抽象的合约。通常,合约在分布式计算环境中实现,并且被绑定至执行该功能的目标服务。如框 715所示,部署客户机服务以启动其操作。在各实施例中,部署涉及将组件程序自动链接至由所分配的已绑定合约定义的接口(参见框720),并且将这些链接的描述写入负责管理目标服务的执行的结构控制器(参见框725)。一般地,在实现所分配的已绑定合约之后,在分布式计算环境内建立接口。本领域普通技术人员将认识到,在图6和图7所示的实施例的范围内可采用任何数量的步骤来实现期望功能。此外,尽管为了清楚起见用线条示出了图6和图7的各个步骤,但是在实际上,各组件的轮廓并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的或模糊的。此外,虽然图6和图7的某些步骤被描述成单个过程,但是该描绘在本质上和数量上是示例性的,不应该解释为限制。参考各具体实施例描述了本发明的各实施例,各具体实施例在所有方面都旨在是说明性的而非限制性的。在不背离本发明范围的情况下各替换实施例对本发明的各实施例的所属领域的普通技术人员将变得显而易见。从前面的描述可以看出,本发明很好地适用于实现上文所阐述的所有目的和目标,并且具有对于该系统和方法是显而易见且固有的其他优点。可以理解,某些特征和子组合是有用的,并且可以在不参考其他特征和子组合的情况下使用。这由权利要求所构想的, 并在权利要求的范围内。
权利要求
1.一种或多种其上包含计算机可执行指令的计算机可读介质,所述指令在被执行时执行一种用于在分布式计算环境内将所实现的合约绑定至目标服务的方法,所述方法包括标识(605)定义接口聚集的合约,其中所述合约维护用于安装所述接口中的每一个接口的特性集;实现(610)所标识的合约以在所述分布式计算环境内建立所述接口聚集的接口,其中所实现的合约引入用于使客户机服务到达目标服务的一部分的媒介;通过利用从与所建立的接口相关联的特性集得到的值使所建立的接口参数化将所实现的合约绑定(61 至所述目标服务;其中绑定过程包括(a)自动链接(620)所建立的接口和一个或多个角色实例,其中所述一个或多个角色实例包含对表示一种组件程序的至少一个角色的复制,所述组件程序一经执行就将功能赋予所述目标服务;以及(b)经由负责管理所述目标服务的执行的结构控制器来映射(62 链接。
2.如权利要求1所述的计算机可读介质,其特征在于,所述方法包括提供服务模型,所述服务模型维护用于将所述目标服务的所述一个或多个角色实例部署到所述分布式计算环境内的节点上的规范,所述部署规范在设置在所述一个或多个角色实例上的输入端点和输出端点之间构造互连。
3.如权利要求2所述的计算机可读介质,其特征在于,在绑定所实现的合约之后,将所述接口链接至所述一个或多个角色实例的所述输入端点以促进对所述目标服务的功能的一部分的访问。
4.如权利要求3所述的计算机可读介质,其特征在于,链接所建立的接口和一个或多个角色实例包括分配遍历所述分布式计算环境的通信信道以将所建立的接口可操作地耦合至所链接的输入端点。
5.如权利要求4所述的计算机可读介质,其特征在于,所分配的通信信道包括将所建立的接口链接至所述一个或多个角色的所述输入端点的承载(LB)信道,并且所述方法还包括在所建立的接口处接收来自所述客户机服务的调用;以及调用LB机制将所述调用分发至所述LB信道中的可用通信信道。
6.如权利要求4所述的计算机可读介质,其特征在于,所述方法还包括向所述结构控制器传播网络地址,其中所述网络地址用于定位链接至所建立的接口的所述一个或多个角色实例的所述输入端点。
7.如权利要求6所述的计算机可读介质,其特征在于,所述方法还包括使所述网络地址对所述客户机服务可见,并且所述客户机服务的组件程序被配置成利用所述网络地址将调用路由至所述一个或多个角色实例。
8.如权利要求7所述的计算机可读介质,其特征在于,所分配的通信信道包括将所建立的接口链接至所述一个或多个角色的所述输入端点的无状态交换机(SLQ信道,其中所述方法还包括在所建立的接口处接收来自所述客户机服务的所述调用和所选择的网络地址;以及在所述SLS信道中的被指定用于将所建立的接口链接至所述输入端点的通信信道上路由所述调用。
9.如权利要求1所述的计算机可读介质,其特征在于,所述特性集指定部分地控制相关联的所建立的接口的操作的约束,并且利用从所述特性集得到的值使所建立的接口参数化包括将所述值赋予所建立的接口内隐含的参数,从而实施约束。
10.如权利要求9所述的计算机可读介质,其特征在于,绑定过程还包括基于由所建立的接口实施的所指定约束自动地重新配置所述一个或多个角色实例。
11.一种用于在分布式计算环境内将已绑定合约绑定至客户机服务的计算机化的方法,所述方法包括从所述客户机服务接收(70 用于履行其依赖性的指示,其中所述客户机服务包括一个或多个组件程序;分配(710)展示满足所述客户机服务的所述一个或多个组件程序的所述依赖性的功能的抽象的合约,其中所述合约在所述分布式计算环境内实现且被绑定至执行所述功能的目标服务;部署(71 所述客户机服务以启动其操作,其中部署包括(a)将所述一个或多个组件程序自动链接(720)至由所分配的已绑定合约定义的接口,其中在实现所分配的已绑定合约之后在所述分布式计算环境内建立所述接口 ;以及(b)将对所述链接的描述写入(725)负责管理所述目标服务的执行的结构控制器。
12.如权利要求11所述的计算机化的方法,其特征在于,将所述一个或多个组件程序自动链接至接口包括分别地标识设置在所述一个或多个组件程序上的输出端点;以及分配所述分布式计算环境内的通信信道以将所建立的接口可操作地耦合至所述输出端点。
13.如权利要求12所述的计算机化的方法,其特征在于,所述目标服务包括至少一个角色的一个或多个实例,并且所述至少一个角色表示与所述目标服务的其它角色协作以实现满足所述客户机服务的所述依赖性的功能的特定种类的组件。
14.如权利要求13所述的计算机化的方法,其特征在于,已绑定合约维护与所建立的接口相关联的特性集,并且所述方法还包括通过利用从相关联的特性集得到的值使所建立的接口参数化,将约束应用于所建立的接口 ;以及向所述客户机服务公布所应用的约束用以配置所述一个或多个组件程序。
15.如权利要求14所述的计算机化的方法,其特征在于,配置所述一个或多个组件程序包括从所应用的约束提取指示用以格式化从所述一个或多个组件程序的输出端点发出的调用,使得所述调用与所述一个或多个角色实例的底层协议兼容。
16.如权利要求15所述的计算机化的方法,其特征在于,将从所述一个或多个组件程序的所述输出端点发出的所述调用通过所述分布式计算环境的所分配的通信信道路由至所建立的接口。
17.如权利要求15所述的计算机化的方法,其特征在于,使所建立的接口参数化以将所发出的调用中继至所述一个或多个角色实例或者结合所述客户机服务的身份基于所应用的约束过滤所发出的调用。
18.如权利要求17所述的计算机化的方法,其特征在于,所述客户机服务的所述身份由所述结构控制器记录,并且在将所发出的调用中继至所述一个或多个角色实例之后,检查追加至所发出的调用的声明以确定是否履行所述调用的请求。
19.如权利要求18所述的计算机化的方法,其特征在于,将所述声明追加至所发出的调用包括访问所述客户机服务的所述身份以验证所述一个或多个组件程序发出所述调用;以及将所确定的身份以及所述客户机服务的其它特性集成到所述声明中,从而在所述目标服务处确保特定的安全级别。
20.一种用于执行一种方法的计算机系统,所述方法通过对通过分布式计算环境变得可用的合约进行实现和绑定来将客户机服务自动链接至目标服务,所述计算机系统包括其上包含多个计算机软件组件的计算机存储介质,所述计算机软件组件包括提交用于履行其依赖性的指示的客户机服务(305),其中所述客户机服务包括一个或多个组件程序;包括一个或多个角色实例的目标服务005),其中所述一个或多个角色实例包含对表示一种组件程序的至少一个角色的复制,所述组件程序一经执行就将功能赋予所述目标服务;展示所述目标服务的所述功能的抽象的合约035),它满足所述客户机服务的所述一个或多个组件程序的所述依赖性,所述合约定义至少一个接口 ;以及结构控制器015),其用于通过实现所述合约在所述分布式计算平台上建立所述至少一个接口,用于将所述合约绑定至所述目标服务和客户机服务,并且用于经由所建立的接口将所述客户机服务的所述一个或多个程序组件自动链接至所述目标服务的所述一个或多个角色实例。
全文摘要
提供用于经由在此被称为合约的媒介使目标服务向客户机服务的功能方面的表达自动化的方法、系统和计算机可读介质。通常,在被配置为支承服务应用程序的操作的分布式计算环境的上下文中执行这些方法。在各实施例中,在确定所表达的功能方面满足客户机服务的依赖性之后实现和绑定合约。通常,合约定义接口并且在安装期间维持配置接口的特性。在实现期间,根据与其相关联的特性建立并参数化接口之一。在绑定期间,经由通过所建立的接口路由的通信信道链接目标服务和客户机服务。因此,通信信道上的来自客户机服务的调用允许到达和使用目标服务的功能方面。
文档编号G06F15/16GK102197390SQ200980142642
公开日2011年9月21日 申请日期2009年10月24日 优先权日2008年10月24日
发明者J·贝尔纳伯-奥邦, Y·A·哈利迪 申请人:微软公司