专利名称:基于面向服务流水线的体系结构的制作方法
基于面向服务流水线的体系结构背景主存服务正变得日益常见,其中各种应用程序在共享硬件上服务大量消费者(称 为多承租人系统)。主存服务可以向多个客户机提供同一类型的服务或向单个客户机提供 多个服务。如此,主存服务能是相当复杂的系统。复杂主存服务系统的代表性示例是基于 web的客户关系管理(CRM)服务。CRM解决方案通常在主存计算机应用程序环境中提供创建和维护客户的从第一次 接触到购买和售后的清晰形象所需的工具和能力。对复杂承租人而言,CRM系统可提供帮助 改善销售和营销组织瞄准新客户的方式、管理营销活动、以及推动销售活动的特征和能力。 CRM系统可包括由承租人内部或外部的用户单独地或以共享方式利用的许多硬件和软件组 件。诸如主存CRM服务等复杂系统需要响应于客户机请求来执行一系列操作。这些操 作可以是同步的或异步的,可具有次序依赖性,并可由不同的各方来实现。在实现这样的系 统时的一个挑战是管理该系统的复杂性,尤其是在第三方提供者添加操作时。这一挑战在 其中服务提供者不完全信任第三方扩展的软件即服务(SaaS)应用程序中恶化。概述提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概 念。该概述并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确 定所要求保护的主题的范围。各实施例针对提供采用流水线体系结构的主存服务。用于扩展现有功能或提供附 加功能的第三方扩展通过元数据来注册并在流水线中与平台操作串行地执行,其中操作的 次序和每一操作的阶段通过元数据来交换,以便均衡地对待系统功能和自定义功能。还可 以使用循环检测机制来阻止通过偶然或恶意创建无限循环而对系统资源的滥用。通过阅读以下详细描述并查阅相关联的附图,这些和其他特征和优点将是显而易 见的。可以理解,前述一般描述和以下详细描述均仅是说明性的,且不限制所要求保护的各 方面。附图简述
图1是示出示例多承租人服务系统体系结构的示图;图2示出具有流水线体系结构的面向服务系统中的各主要组件;图3示出具有流水线体系结构的示例面向服务系统(CRM);图4是其中可以实现各实施例的示例联网环境的示图;图5是其中可以实现各实施例的示例计算操作环境的框图;图6示出用于管理具有流水线体系结构的面向服务系统中的操作的过程的逻辑流程图;以及图7示出用于具有流水线体系结构的面向服务系统中的循环检测过程的逻辑流程图。详细描述
如以上简要描述的,可以在用于管理第三方插件功能的面向服务系统中实现流水线体系结构。在以下详细描述中,参考了构成其一部分并作为说明示出了各具体实施例或 示例的附图。可组合这些方面,可利用其他方面,并且可以做出结构上的改变而不背离本发 明的精神或范围。因此,以下详细描述并不旨在限制,本发明的范围由所附权利要求及其等 效方案来定义。虽然在结合在个人计算机上的操作系统上运行的应用程序执行的程序模块的一 般上下文中描述了各实施例,但是本领域技术人员会认识到各方面也可以结合其他程序模 块实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组 件、数据结构和其他类型的结构。此外,如本领域技术人员理解的,各实施例可以用其他计 算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费者电子 产品、小型计算机、大型计算机等等。各实施例还能在其中任务由通过通信网络链接的远程 处理设备来执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于本地 和远程存储器存储设备中。各实施例可被实现为计算机进程(方法)、计算系统、或者如计算机程序产品或计 算机可读介质等制品。计算机程序产品可以是计算机系统可读并编码了用于执行计算机进 程的指令的计算机程序的计算机存储介质。计算机程序产品还可以是计算系统可读并编码 了用于执行计算机进程的指令的计算机程序的载波上的传播信号。参考图1,示出了示例多承租人服务系统体系结构的示图100。在一典型的多承租 人系统中,与不同的承租人相关联的用户可以从服务请求操作,该服务可执行涉及承租人 专用信息的同步和异步操作。如上所述,主存服务使用多方面的默认和定制功能来便于各种应用程序与大量客 户之间在共享硬件上的交互。例如,客户关系管理(CRM)服务可使与多个承租人相关联的 用户能够记录、跟踪、分析、以及处理联系人、销售线索(sales lead)等,同时向每一承租人 提供安全和自定义功能。这些所谓的软件即服务(SaaS)的某些自定义(或默认)功能能 以与内核平台操作一起注册和执行的第三方扩展或插件的形式提供。在一典型的主存服务环境中,可伸缩和冗余的一组web服务服务器112与承租人 数据存储114 一起工作来存储和处理与该服务的各个承租人相关联的数据。还可以通过另 一组服务器和/或数据存储来提供补充服务116。例如,不同的服务器组能以优化系统性能 的分布式方式来执行同步和异步处理。通过使用同步和异步进程的独立分发以及服务器和数据库之间的交互,能够使主 存服务组的任何部分都可以伸缩。因此,可以提供服务器(和/或数据库)的多个实例来 解决增加的工作负载、附加承租人、数据容量等等。在一操作中,主存服务接收输入数据(例如,CRM服务中的新联系人信息)并从用 户102请求处理。用户102可以与用于定制主存服务的用户应用程序、工具、和/或插件 104的独立系统相关联。与该独立系统相关联的数据可以存储在用户数据存储106中。用 户102可以向主存服务提供扩展(插件)以用于附加或定制功能,其中这些插件连同内核 平台操作一起注册和执行。根据一些实施例,这些插件不仅提供附加功能,而且还扩展服务 的现有默认功能。
用户102可以自己提供插件或从第三方(未示出)请求插件来由主存服务注册。 在这样的场景中,主存服务可以与该第三方提供者直接交互以在平台中注册该插件。此外, 第三方提供者可以在用户(承租人)请求注册他们的扩展中的一个或多个时联系主存服 务,并提供使主存服务确保所提供的插件确实是用户所请求的插件的证书。当然,该复杂的交互可对服务造成控制其操作完整性和用户数据安全性的挑战。 不是所有的第三方提供者都是可信的源,可能存在与服务平台和插件相关联的兼容性问 题,并且将插件集成到服务的操作结构中可能不是简单的。根据一些实施例,可响应于客户机请求来串行地执行具有基于流水线体系结构的 插件功能的灵活且可伸缩的平台。请求对象可以作为参数传递到流水线中的每一插件,并 且每一插件可以创建或操纵响应对象。可以沿该流水线传递任意状态以在插件之间传递数 据。图2示出具有流水线体系结构的面向服务系统中的各主要组件。一种根据各实施 例的系统可以采用通过响应于客户机请求插入功能来定义灵活且可伸缩平台的流水线体 系结构。请求对象作为参数传递到流水线中的每一插件,该插件可以创建或操纵响应对象。 如果两个客户机请求操作同一流水线,则它们的行为应当相同。如此,这样的系统中的测试 案例矩阵与硬编码行为的系统相比减小了。在根据一个实施例的系统中,由流水线配置来表示要响应于客户机请求执行的动 作序列。流水线中动作的次序可以通过依赖图分析来确定。可以在不重新编译系统的情况 下通过在流水线配置中注册“插件”来配置新动作。这样,可以添加新功能或修改现有功能, 从而形成动态和可伸缩的执行模型。更重要地,流水线配置包括定义要执行的动作序列的 依赖信息以及实际插件代码模块。面向服务流水线体系结构中的动作也可以是异步的,在这种情况下,可以保存并 恢复流水线的状态以进行处理。因此,异步动作不能影响响应。根据一些实施例,插件配置 (包括插件代码)可以集中地存储,从而允许具有当前流水线配置的相干视图的基于群集 的系统。根据一个实施例,面向服务体系结构可以被实现为前端以供调用流水线体系结构 系统。流水线配置(包括插件代码)随后可通过该面向服务系统的应用编程接口(API)来 配置(例如,通过web服务)。插件执行可以使用受管执行环境以取决于它们的作者(例 如,通过代码签名确定的)来实施对插件的有限信任。为了对根据各实施例的面向服务系统构建插件,实现者可以设计调用该插件代码 的接口。在调用插件时,系统可将上下文对象与流水线的当前状态一起传递。从该上下文 对象,插件可获取可通过其执行附加系统功能的接口。如该附图所示,web服务212与应用程序222、工具224、以及工作流(业务流 程)226进行交互以处理用户请求。另外,web服务212接收用户插件(例如,231、232、235、 236)来执行用户定义的动作。用户通过插件定义的动作可包括通过现有功能的扩展或与现 有功能并行的新功能的客户化。插件通过元数据在API中注册,该元数据可包括插件的次 序和阶段(例如,在激活另一插件之前使操作取消、完成等)。插件随后可与平台操作234 一起(由执行流水线230)执行,取决于元数据所定义的注册次序,有些在前(例如,231、 232)而有些在后(例如,235、236)。
在一示例场景中,一个插件可被配置成在添加新信息或修改(删除)现有信息时 更新联系人信息,同时使用与该第一插件串行执行的另一插件以基于该第一插件所执行的 更新来审计用户的联系人记录。在根据各实施例的系统中,给予插件定义它们自己的事务 边界的能力,从而允许灵活且可伸缩的系统。插件可以串行或并行执行。各实施例不限于 一种特定执行方法。如上所述,根据各实施例的系统可包括单独的服务器和处理主机(例如,异步处 理主机)的许多实例。通过实现其中各单独的服务器将长期运行请求排入队列以供稍后处 理的可靠进程队列,可以独立地伸缩这些服务器集群中的每一个。调用来自这些插件的系统行为的能力,甚至是在受管执行环境中,打开了无限循 环的可能性。这可导致系统性能降级,尤其是对于多承租人系统中的其他承租人而言。这些 循环可包括偶然或恶意生成无限数据量的退化循环或无限但不是退化的非退化循环(例 如,要在不确定的时间段内一年处理一次的生日提醒)。为终止(或控制)这些循环,可以 在接收到客户机请求时设置默认“预算”和互相关id。在调用插件内的系统方法时,可以传 递互相关标识符和预算的一部分。如果子调用具有不足的预算,则这导致错误,从而终止循 环。一种根据各实施例的系统针对所设预算来为每一操作分配成本,所设预算分布在 各个子操作中。因此,调用者独立地发起的且不具有相关联的先前上下文的动作和作为另 一动作的结果(例如,子动作)的具有继承上下文的动作可以使用与调用者相关联的操作 帐户来跟踪。例如,用户可以经由web服务来要求创建新帐户,并且创建新帐户可以使插件 调用创建任务的调用。创建任务的调用具有从对帐户的原始创建所继承的上下文。如果正 在创建新帐户,则可在这时设置预算,并且对该帐户每次执行操作时,可以递减预算。根据 另一实施例,可以利用深度参数来终止无限循环。可以在一开始设置操作(子操作)次数 的计数,并在执行附加操作(创建子操作)时递增。在达到最初设置的深度限制时,终止循 环。根据其他实施例,可以采用基于时间的预算复位以允许作为非退化的无限循环, 诸如定时成在唤醒进行生日提醒之前休眠一年的异步事件。在操作序列中存在预定义延迟 的情况下,系统可复位预算或深度。又一实施例采用在无限循环检测和终止中的有限树结 构化操作(子操作)例外。例如,区域帐户创建可能是非统一的(每一州具有可变数量的 销售区域),从而导致有限树结构。在预算(或深度)以固定方式分布在所有子操作中的情 况下,基于预算的循环检测算法可能尝试终止操作。该系统可被配置成考虑这样的有限树 结构,并且当在执行循环检测时豁免它们。图3示出具有流水线体系结构的示例面向服务系统(CRM)。CRM系统是其中客户 能够向他们的组织(承租人)签到的多承租人系统的示例,该组织逻辑上是他们自己的CRM 数据的数据库。客户可请求诸如创建帐户、发送电子邮件、或删除联系人。这些请求在服务 器集群上处理。在图3的示例系统300中,CRM web服务312通过执行平台内核操作334(默认功 能)连同提供扩展或替换功能的插件331、332、335、336来处理这样的用户请求,从而允许 为用户定制该服务。这些插件在CRM执行流水线330中串行执行并且它们的顺序可由用户 来定义(331、332、335、336)。根据一个实现,这些插件可被分组成用于预处理或后处理内核功能所处理的数据的预事件(pre-event)和后事件(post-event)操作,但这一分组不是限 制。在根据各实施例的系统中,这些插件和内核操作可以用任何方式来分组或根本不分组。CRM web服务312可以与特定CRM应用程序322交互,利用CRM工具324,以及将 业务流程存储为CRM工作流326。根据一示例实现,利用CRM web服务312可用作对用户 请求的传输。诸如结构化查询语言(SQL)数据库等关系数据库可用作该流水线配置的储存 库,并且另一数据库可用作插件代码模块的储存库。图2和图3中描述的面向服务的系统和操作是用于说明目的的示例。可以使用更 多或更少组件或使用此处描述的原理的其他方案来实现用于在多承租人服务中采用流水 线体系结构的系统。图4是其中可以实现各实施例的示例联网环境。采用流水线体系结构的面向服务 系统可以用分布式方式在多个物理和虚拟的客户机和服务器上实现。它们还可以在非群集 系统或利用通过一个或多个网络(例如,网络450)通信的多个节点的群集系统中实现。这种系统可以包括服务器、客户机、因特网服务提供者、以及通信介质的任何拓扑 结构。同样,该系统可以具有静态或动态拓扑结构。术语“客户机”可以表示客户机应用程 序或客户机设备。尽管实现多承租人服务中的流水线体系结构的联网系统可以涉及更多组 件,但结合此附图来讨论相关组件。此外,根据各实施例的系统还可以是用于服务与单承租 人相关联的用户的单承租人系统。处理请求可通过各个客户机设备441-443来自各个用户。用户自己或第三方提供 者(通过服务器444)可向一个或多个服务器(例如,服务器452)所管理的流水线体系结 构提供用于扩展或附加功能的插件。该服务还可以在一个或多个服务器中实现。承租人数 据库可被包括在数据存储458中。可使用专用数据库服务器(例如,数据库服务器456)来 协调一个或多个此类数据存储中的数据检索和存储。网络450可以包括诸如企业网络等安全网络、诸如无线开放网络等非安全网络、 或因特网。网络450提供此处描述的节点之间的通信。作为示例而非局限,网络450可以 包括诸如有线网络或直接线连接等有线介质,以及诸如声学、RF、红外线和其它无线介质等 无线介质。可以利用计算设备、应用程序、数据源、数据分布系统的许多其它配置来实现面向 服务系统中的流水线体系结构。此外,图4中所讨论的联网环境仅用于说明目的。各实施 例不限于示例应用程序、模块、或过程。图5及相关联的讨论旨在提供对适于在其中实现各实施例的计算环境的简要概 括描述。参考图5,示出了诸如计算设备500等示例计算操作环境的框图。在一基本配置 中,计算设备500可以是提供与采用流水线体系结构的面向服务系统相关联的服务的服务 器,并通常包括至少一个处理单元502和系统存储器504。计算设备500还可包括协作执行 程序的多个处理单元。取决于计算设备的确切配置和类型,系统存储器504可以是易失性 的(诸如RAM)、非易失性的(诸如ROM、闪存等)或是两者的某种组合。系统存储器504通 常包括适于控制联网个人计算机的操作的操作系统505,诸如来自华盛顿州雷德蒙市的微 软公司的WINDOWS 操作系统。系统存储器504还可以包括一个或多个软件应用程序, 诸如程序模块606、web服务522、以及插件524。web服务522可以是分开的应用程序或是向与计算设备500相关联的客户机应用程序提供数据和处理服务的主存服务应用程序的整合模块。如上所述,插件524可以提供 为特定用户和/或操作定制web服务522的操作的附加功能。该基本配置在图5中由虚线 508内的组件示出。计算设备500可具有附加特征或功能。例如,计算设备500还可包括附加数据存 储设备(可移动和/或不可移动),诸如例如磁盘、光盘或磁带。这些其它存储在图5中由 可移动存储509和不可移动存储510示出。计算机存储介质可包括以用于存储诸如计算机 可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易 失性、可移动和不可移动介质。系统存储器504、可移动存储509和不可移动存储510都是 计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、R0M、EEPR0M、闪存或其它存 储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁 性存储设备、或能用于存储所需信息且可以由计算设备500访问的任何其它介质。任何这 样的计算机存储介质都可以是设备500的一部分。计算设备500还可具有诸如键盘、鼠标、 笔、语音输入设备、触摸输入设备等输入设备512。还可包括诸如显示器、扬声器、打印机等 输出设备514。这些设备在本领域中公知且无需在此处详细讨论。计算设备500还可以包含允许该设备诸如在分布式计算环境中,例如在内联网或 互联网中通过无线网络与其它计算设备518通信的通信连接516。其他计算设备518可包 括执行与提供插件的另一服务或第三方提供者相关联的应用程序的服务器。通信连接516 是通信介质的一个示例。通信介质通常由诸如载波或其他传输机制等已调制数据信号中的 计算机可读指令、数据结构、程序模块或其他数据来体现,并包括任何信息传递介质。术语 “已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被设定或更改的 信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线 介质,诸如声学、RF、红外线和其它无线介质。如此处所使用的术语“计算机可读介质”包括 存储介质和通信介质两者。所要求保护的主题还包括各方法。这些方法可以用任何数量的方式,包括本文中 所描述的结构来实现。一种此类方式是通过本文中描述的类型的设备的机器操作。另一可任选方式是结合一个或多个人类操作者执行该方法的各个操作中的某一 些来执行该方法的一个或多个操作。这些人类操作者无需彼此同在一处,而是其每一个可 以仅与执行程序的一部分的机器同在一处。图6示出用于管理具有流水线体系结构的面向服务系统中的操作的过程600的逻 辑流程图。过程600可作为例如主存CRM服务的一部分来实现。过程600在操作602开始,在此流水线体系结构服务接收用户构造的方案(和/ 或操作)。该方案(和/或操作)与可由该用户或由该用户授权的第三方提供的一个或多 个插件相关联。处理从操作602前进至操作604。在操作604,自动地配置该方案。例如,在利用SQL数据库的CRM系统中,可以基于 该方案、相关联的元数据、以及操作本身来生成SQL数据(查询)。系统至今不执行任何操 作,因为与用户数据相关联的用户没有请求任何动作。处理从操作604移至操作606。在操作606,接收用户插件。这些插件执行用户请求的动作,从而以均衡方式向该 服务的内核功能提供扩展或替换功能。处理从操作606移至操作608。在操作608,通过元数据在系统API中注册用户动作,元数据还包括在流水线中执行用户动作时每一插件的次序和阶段。处理从操作608移至操作610,其中在来自用户的请 求时,服务以指定次序执行注册插件来处理用户数据。该系统可以执行附加操作,诸如用于 对流水线操作进行排序的依赖性分析(在上传插件时),从而使多方都能够扩展该系统并 可预测地工作。处理从操作610移至调用过程以供进一步操作。如上所述,通过允许用户注册并以任何次序(以及在进行中)执行他们自己的扩 展,该系统因为偶然或恶意生成的无限循环而易受性能降级的损害。因此,可以使用循环检 测机制来检测并终止无限循环,同时允许特定准无限(无限但非退化)循环免于终止。这 些机制在下面将更详细地描述。图7示出用于具有流水线体系结构的面向服务系统中的循环检测过程700的逻辑 流程图。过程700可以在图6的操作管理过程600内实现。过程700在操作702开始,在这里接收调用。该调用可以针对最初动作或针对现 有帐户上的动作。这由系统通过检查与该调用一起传递的上下文来确定。处理从操作702 前进至判定操作704。在判定操作704,作出所传递的上下文是否包括现有预算(深度)的判定。如果对 所请求的动作没有找到现有预算(深度),则在操作706创建一个预算(深度)。如果找到 与该调用相关联的现有预算(深度),则在操作708基于与该调用相关联的操作的数量或 类型来递减该预算(深度)。每一操作都具有相对于预算的成本,预算分布于各子操作中。 如上所述,还可以使用基于子操作或操作的计数的深度来代替预算。暂时跳过可任选操作710和712,在判定操作714,作出所分配的预算是否耗尽的 判定。如果预算耗尽,则终止操作。如果仍然存在可用预算,则在后续操作716执行与该调 用相关联的操作。尽管阻止退化循环,但根据各实施例的系统还可便于看似无限循环的例外,这些 例外不应作为标准操作过程的一部分来终止。例如,设定在不确定时间内的、对联系人的生 日提醒操作就是一个例外。因此,系统可能感觉它是无限循环并尝试终止它。跟在708之 后的可任选操作710旨在进行这一豁免。如果操作包括预定义延迟(如生日提醒之间的一 年延迟),则复位预算(深度)。另一示例例外是涉及有限树结构的操作。例如,CRM服务的销售区域可能是非统 一地分布的。尽管可能向一个州分配了一个销售区域,但可能向另一人口更多的州分配多 个销售区域。如果在子操作之间采用固定深度或预算分配,则该系统同样感觉这一动作是 无限的并尝试终止它。在可任选操作712,如果调用涉及有限树结构,则可以复位预算或深 度,从而阻止过早终止这些操作。包括在过程600和700内的各操作仅出于说明目的。提供采用流水线体系结构的 主存服务可以使用此处所述的各原理通过具有更少或更多步骤的相似过程、以及不同的操 作次序来实现。以上说明书、示例和数据提供了对各实施例组成的制造和使用的全面描述。尽管 用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定 义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求 和各实施例的示例形式而公开的。
1权利要求
一种至少部分地在计算设备(500)中执行以用于在面向服务系统中实现流水线体系结构的方法(600),所述方法包括自动地配置用户构造的方案(604)接收与所述方案相关联的插件(231、232、234、235、236、331、332、335、336)(606)通过元数据注册所述插件(231、232、234、235、236、331、332、335、336)(608),其中所述元数据包括以下至少一个所述插件的次序和阶段;以及响应于从所述用户接收到对动作的调用,在执行流水线中根据接收到的次序连同一个或多个内核平台操作一起执行所述插件(231、232、234、235、236、331、332、335、336)(610)。
2.如权利要求1所述的方法(600),其特征在于,还包括在执行期间向所述插件(231、232、234、235、236、331、332、335、336)传递请求对象,以 使得所述插件能够操纵响应对象。
3.如权利要求1所述的方法(600),其特征在于,还包括向所述插件(231、232、234、235、236、331、332、335、336)传递与所述执行相关联的任 意状态。
4.如权利要求1所述的方法(600),其特征在于,所述插件(231、232、234、235、236、`331、332、335、336)和所述内核平台操作按以下方式中的一种来执行顺序方式和并行方式。
5.如权利要求1所述的方法(600),其特征在于,还包括 接收另一插件(231、232、234、235、236、331、332、335、336)通过注册所述另一插件(231、232、234、235、236、331、332、335、336)在不编译的情况 下配置所述方案。
6.如权利要求5所述的方法(600),其特征在于,还包括分析所述元数据所提供的依赖性信息来确定所述插件(231、232、234、235、236、331、`332、335、336)和所述内核平台操作的次序。
7.如权利要求1所述的方法(600),其特征在于,所述插件(231、232、234、235、236、 331、332、335、336)用于以下之一添加新功能和扩展所述面向服务系统的现有功能。
8.如权利要求1所述的方法(600),其特征在于,所述插件配置和所述插件代码集中式 的存储在所述面向服务系统中。
9.如权利要求1所述的方法(600),其特征在于,所述面向服务系统被配置成执行以下 至少一个同步过程和异步过程。
10.如权利要求9所述的方法(600),其特征在于,执行所述异步过程还包括 保存所述流水线的状态;以及随后恢复所述流水线的状态以进行处理。
11.一种实现流水线体系结构的面向服务系统(200),包括 至少一个web服务器(112),其被配置成接收用户构造的方案(602); 自动地配置所述方案(604);接收用于以下之一的多个插件(231、232、234、235、236、331、332、335、336) (606)添 加与所述方案相关联的新功能和扩展所述面向服务系统与所述方案相关联的现有功能;通过元数据注册所述插件(231、232、234、235、236、331、332、335、336) (608),其中所述 元数据包括以下至少一个所述插件的次序和阶段;分析所述元数据所提供的依赖性信息来确定所述插件(231、232、234、235、236、331、 332、335、336)和内核平台操作的次序;以及 执行流水线,其被配置成在从所述用户接收到请求后,根据接收到的次序连同所述内核平台操作一起、通过将 请求对象传递到所述插件(231、232、234、235、236、331、332、335、336)以使所述插件(231、 232、234、235、236、331、332、335、336)能够操纵响应对象、并通过向所述插件传递与所述执 行相关联的任意状态来执行所述插件(231、232、234、235、236、331、332、335、336) (610)。
12.如权利要求11所述的系统,其特征在于,所述面向服务系统(200)被实现为前端以 用于调用流水线体系结构系统(230)。
13.如权利要求11所述的系统,其特征在于,所述插件(231、232、234、235、236、331、 332、335、336)通过所述面向服务系统(200)的应用编程接口(API)来注册,并且其中所述 流水线通过所述API来配置。
14.如权利要求11所述的系统,其特征在于,所述执行流水线还被配置成在调用插件(231、232、234、235、236、331、332、335、336)时,向所述插件(231、232、 234、235、236、331、332、335、336)传递具有所述流水线的当前状态的上下文对象,以使所述 插件(231、232、234、235、236、331、332、335、336)能够获得用于执行附加系统功能的接口。
15.如权利要求11所述的系统,其特征在于,所述至少一个web服务器是可伸缩的,并 且其中所述系统能够便于所述服务器的多个实例。
16.如权利要求11所述的系统,其特征在于,所述至少一个web服务器还被配置成 向每一动作分配预算和深度参数之一,其中所述预算和所述深度参数中所分配的一个的一部分被分配给每一子动作;在调用插件(231、232、234、235、236、331、332、335、336)内的系统方法时,传递所述预 算和所述深度参数之一的所述部分连同分配给每一子动作的互相关标识符;递减要执行的每一子动作的所述预算之一(708),其中所述预算基于与子动作相关联 的每一操作的成本来递减;以及基于与所请求的动作相关联的子动作的计数来递增要执行的每一子动作的深度参数;如果所述预算和所述深度参数之一达到对应的预定义阈值,则终止所述操作并提供出 错消息。
17.如权利要求16所述的系统,其特征在于,所述至少一个web服务器还被配置成 如果与一动作相关联的操作序列中包括预定义延迟,则复位所述预算之一的递减和所述深度参数的递增(710);以及如果所述动作包括子动作的有限树结构,则复位所述预算之一的递减和所述深度参数 的递增(712)。
18.一种其上存储有用于在面向服务系统(200)中实现流水线体系结构的指令的计算 机可读存储介质,所述指令包括接收用户构造的方案(602);自动地配置所述方案(604);接收与所述方案相关联的用于以下之一的插件(231、232、234、235、236、331、332、335、 336) (606);添加新功能和扩展所述面向服务系统的现有功能;通过元数据注册所述插件(231、232、234、235、236、331、332、335、336) (608),其中所述 元数据包括以下至少一个所述插件(231、232、234、235、236、331、332、335、336)的依赖性 信息和阶段;以及分析所述元数据所提供的依赖性信息来确定所注册的插件(231、232、234、235、236、331、332、335、336)和内核平台操作的次序;在执行流水线中根据接收到的次序连同所述内核平台操作来执行所述插件(231、232、 234、235、236、331、332、335、336) (610),其中执行所述插件(231、232、234、235、236、331、332、335、336)包括向所述插件(231、232、234、235、236、331、332、335、336)传递请求对象,以使得所述插 件(231、232、234、235、236、331、332、335、336)能够操纵响应对象;以及向所述插件(231、232、234、235、236、331、332、335、336)传递与所述执行相关联的任 意状态。
19.如权利要求18所述的计算机可读存储介质,其特征在于,所述指令还包括 向每一动作分配预算,其中所分配的预算的一部分被分配给每一子动作;在调用插件(231、232、234、235、236、331、332、335、336)内的系统方法时,传递所述预 算的所述部分连同分配给每一子动作的互相关标识符;基于与子动作相关联的每一操作的预定成本来递减要执行的每一子动作的所述预算 (708);以及如果所述预算耗尽,则终止所述操作并提供出错消息。
20.如权利要求19所述的计算机可读存储介质,其特征在于,所述指令还包括 如果与动作相关联的操作序列中包括预定义延迟,则复位所述预算的递减(710);以及如果所述动作包括子动作的有限树结构,则复位所述预算的递减(712)。
全文摘要
提供了采用流水线体系结构来适应用于扩展现有功能或提供附加功能的第三方扩展的面向服务系统。用户或第三方提供的插件通过元数据来注册并且在流水线中与平台操作一起执行。该流水线可用新上传的插件来在进行中扩展。用于对同步或异步流水线操作进行排序的依赖性分析使得多方能够扩展系统并可预测地操作。循环检测机制阻止通过偶然或恶意创建无限循环而滥用系统资源,非退化无限循环除外。
文档编号G06F17/00GK101809562SQ200880109401
公开日2010年8月18日 申请日期2008年9月29日 优先权日2007年9月27日
发明者A·塔卡奇, A·简迪塔卡恩, G·阿拉什, M·J·奥特, N·古普塔 申请人:微软公司