会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 专利权 / 第I章 / 国际申请 / 请求书 / 声明 / 翻译声明性模型

翻译声明性模型

阅读:882发布:2020-05-11

IPRDB可以提供翻译声明性模型专利检索,专利查询,专利分析的服务。并且本发明延及用于翻译声明性模型的方法、系统和计算机程序产品。本发明的各实施例便于处理声明性模型来对应用程序执行各种操作,诸如例如应用程序部署、应用程序更新、诸如开始和停止等应用程序控制、通过操纵应用程序来发出事件以进行的应用程序监视等等。应用程序的声明性模型在目标环境上处理和实现,此后它们可被执行、扩展、以及监视。,下面是翻译声明性模型专利的具体信息内容。

1.一种用于在计算环境内的计算机系统处翻译模型(353)以在所述计算环境内实现所接收命令(329)的方法,所述计算环境包括多种不同的技术,所述计算机系统包括一个或多个驱动程序(342、352),每一驱动程序被配置成处理用于不同技术的指定组合的模型(353),所述计算机系统包括一个或多个翻译器(361、371、381),每一翻译器被配置成处理表示来自所述多种技术的指定技术内的对象的模型元素(354A、354B、354C),所述方法包括:接收声明性模型(353)连同命令(329)的动作,所述声明性模型(353)和所述命令(329)共同指示基于所接收的声明性模型(353)来为应用程序实现所述命令(329)的意图;

标识被配置成处理与所接收声明性模型(353)中指示的技术组合相对应的声明性模型的驱动程序(342)的动作;

将所接收的声明性模型(353)和所述命令(329)转发给所标识的驱动程序(342)的动作;

所标识的驱动程序(342)解析所接收的声明性模型(353)以标识各模型元素(354A、354B、354C)及其相互关系的动作;

对于每一所标识的模型元素:

标识被配置成翻译与所标识的模型元素相对应的指定技术的模型元素的翻译器(361、371、381)的动作;

将所述模型元素发送给所标识的翻译器的动作;

接收要在所述指定技术内执行来为所述应用程序部分地实现所述命令(329)的动作序列(363、373、383)的动作,所述动作序列是完全实现所述命令所要执行的全部动作的子集;以及将所接收的针对所述模型元素的动作序列组装成执行计划(344)的动作,基于所述模型元素与所接收的声明性模型中的其他模型元素的关系以相对于所接收的针对其他模型元素的动作序列的指定次序来将所接收的动作序列组装成所述执行计划;以及执行所述执行计划(344)来为所述应用程序实现所述命令(329)的动作,对所述执行计划(344)的执行包括以所述指定次序执行所接收的针对每一模型元素的动作序列(363、373、383)。

2.如权利要求1所述的方法,其特征在于,接收声明性模型连同命令的动作包括接收基于所述声明性模型来部署应用程序的命令的动作。

3.如权利要求1所述的方法,其特征在于,接收声明性模型连同命令的动作包括接收基于所述声明性模型来解除部署应用程序的命令的动作。

4.如权利要求1所述的方法,其特征在于,接收声明性模型连同命令的动作包括接收基于所述声明性模型来开始应用程序的命令的动作。

5.如权利要求1所述的方法,其特征在于,接收声明性模型连同命令的动作包括接收基于所述声明性模型来停止应用程序的命令的动作。

6.如权利要求1所述的方法,其特征在于,接收声明性模型连同命令的动作包括接收基于所述声明性模型来发起或终止对应用程序的监视的命令的动作。

7.如权利要求1所述的方法,其特征在于,接收声明性模型连同命令的动作包括接收基于所述声明性模型来更新应用程序的命令的动作。

8.如权利要求1所述的方法,其特征在于,接收要在所述指定技术内执行的动作序列的动作包括接收幂等动作序列的动作。

9.一种用于在计算环境内的计算机系统处使用的计算机程序产品,所述计算环境包括多种不同的技术,所述计算机系统包括一个或多个驱动程序,每一驱动程序被配置成处理用于不同技术的指定组合的模型,所述计算机系统包括一个或多个翻译器,每一翻译器被配置成处理表示来自所述多种技术的指定技术内的对象的模型元素,所述计算机程序产品用于实现一种用于翻译模型以在所述计算环境内实现所接收命令的方法,所述计算机程序产品包括其上存储有计算机可执行指令的一个或多个物理存储介质,所述指令当在处理器处执行时使得所述计算机系统执行所述方法,所述方法包括以下动作:接收声明性模型连同命令,所述声明性模型和所述命令共同指示基于所接收的声明性模型来为应用程序实现所述命令的意图;

标识被配置成处理与所接收的声明性模型中指示的技术的组合相对应的声明性模型的驱动程序;

将所接收的声明性模型和所述命令转发给所标识的驱动程序;

解析所接收的声明性模型来标识各模型元素及其相互关系;

对于每一所标识的模型元素:

标识被配置成翻译针对与所标识的模型元素相对应的指定技术的模型元素的翻译器;

将所述模型元素发送给所述翻译器;

接收要在所述指定技术内执行来为所述应用程序部分地实现所述命令的动作序列,所述动作序列是完全实现所述命令所要执行的全部动作的子集;以及将所接收的针对所述模型元素的动作序列组装成执行计划,基于所述模型元素与所接收的声明性模型中的其他模型元素的关系以相对于所接收的针对其他模型元素的动作序列的指定次序来将所接收的动作序列组装成所述执行计划;以及执行所述执行计划来为所述应用程序实现所述命令,对所述执行计划的执行包括以所述指定次序执行所接收的针对每一模型元素的动作序列。

10.如权利要求9所述的计算机程序产品,其特征在于,在执行时使得所述计算机系统接收声明性模型连同命令的计算机可执行指令包括在执行时使得所述计算机系统接收基于所述声明性模型来部署应用程序的命令的计算机可执行指令。

11.如权利要求9所述的计算机程序产品,其特征在于,在执行时使得所述计算机系统接收声明性模型连同命令的计算机可执行指令包括在执行时使得所述计算机系统接收基于所述声明性模型来解除部署应用程序的命令的计算机可执行指令。

12.如权利要求9所述的计算机程序产品,其特征在于,在执行时使得所述计算机系统接收声明性模型连同命令的计算机可执行指令包括在执行时使得所述计算机系统接收基于所述声明性模型来开始应用程序的命令的计算机可执行指令。

13.如权利要求9所述的计算机程序产品,其特征在于,在执行时使得所述计算机系统接收声明性模型连同命令的计算机可执行指令包括在执行时使得所述计算机系统接收基于所述声明性模型来停止应用程序的命令的计算机可执行指令。

14.如权利要求9所述的计算机程序产品,其特征在于,在执行时使得所述计算机系统接收声明性模型连同命令的计算机可执行指令包括在执行时使得所述计算机系统接收基于所述声明性模型来发起或终止对应用程序的监视的命令的计算机可执行指令。

15.如权利要求9所述的计算机程序产品,其特征在于,在执行时使得所述计算机系统接收声明性模型连同命令的计算机可执行指令包括在执行时使得所述计算机系统接收基于所述声明性模型来更新应用程序的命令的计算机可执行指令。

16.如权利要求9所述的计算机程序产品,其特征在于,在执行时使得所述计算机系统接收要在所述指定技术内执行的动作序列的计算机可执行指令包括在执行时使得所述计算机系统接收幂等动作序列的计算机可执行指令。

17.一种用于在计算环境内的计算机系统处更新所述计算环境内的基于模型的应用程序的方法,所述计算环境包括多种不同的技术,所述计算机系统包括一个或多个驱动程序,每一驱动程序被配置成处理用于不同技术的指定组合的模型,所述计算机系统包括一个或多个翻译器,每一翻译器被配置成处理表示来自所述多种技术的指定技术内的对象的模型元素,所述方法包括:接收声明性模型连同更新命令的动作,所述声明性模型和所述更新命令共同指示基于所接收的声明性模型的先前版本来更新应用程序的意图;

为所接收的声明性模型组装当前执行计划的动作,所述当前执行计划包括基于所接收的声明性模型中的各模型元素之间的关系来以指定次序组装的动作序列;

访问所接收的声明性模型的先前版本的动作;

为所接收的声明性模型的先前版本组装先前执行计划的动作,所述先前执行计划包括基于所接收的声明性模型的先前版本中的各模型元素之间的关系来以指定次序组装的先前动作序列;

将所述当前执行计划与所述先前执行计划进行比较的动作;

基于所述比较来导出用于更新所述应用程序的新执行计划的动作;以及

执行所述新执行计划以更新所述计算环境内的所述应用程序的动作。

18.如权利要求17所述的方法,其特征在于,所述基于所述比较来导出用于更新所述应用程序的新执行计划的动作包括在所述新执行计划内包括针对所述当前执行计划和所述先前执行计划两者中所包括的至少一个动作的更新动作,所述更新动作用于根据来自所述当前执行计划的所述动作来更新来自所述先前执行计划的所述动作。

19.如权利要求17所述的方法,其特征在于,所述基于所述比较来导出用于更新所述应用程序的新执行计划的动作包括将仅所述当前执行计划中所包括的至少一个动作包括在所述新执行计划中。

20.如权利要求17所述的方法,其特征在于,所述基于所述比较来导出用于更新所述应用程序的新执行计划的动作包括在所述新执行计划中包括仅所述先前执行计划中所包括的至少一个动作的逆动作,所述逆动作用于在所述计算环境内消除所述至少一个动作的影响。

说明书全文

背景

1.背景和相关技术

计算机系统和相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。计算机系统现在通常执行在计算机系统出现以前手动执行的许多任务(例如,文字处理、日程安排和会计等)。最近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统和其他电子设备可以在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行分布在多个不同的计算机系统和/或多个不同的计算组件上。

随着计算机化的系统日益普及,此类系统内采用的软件和硬件的复杂度也日益增加。一般而言,对看起来愈加复杂的软件的需求持续增长,这进一步趋向于成为推动硬件更大开发的动力之一。例如,如果应用程序对给定硬件系统要求太高,则该硬件系统可能效率低下地操作,或者完全无法处理该应用程序。然而,应用程序开发的目前趋势通过至少部分地使用分布式应用程序已移除了许多这些类型的硬件约束。一般而言,分布式应用程序包括在若干不同的硬件组件上——往往是在分层环境中的不同计算机系统上执行的组件。

在分布式应用程序下,不同的计算机系统可通过网络来彼此通信传递各种处理结果。由此,一组织将采用分布式应用服务器来管理众多不同计算机系统上的若干不同分布式应用程序。例如,用户可采用一个分布式应用服务器来管理在一组不同的计算机系统上执行的电子商务应用程序的操作。用户也可使用分布式应用服务器来管理在相同的或甚至是不同的一组计算机系统上的客户管理应用程序的执行。

当然,通过分布式应用服务器管理的每个对应的分布式应用又可具有通过不同的(且可能是不同配置的)网络连接在其他不同的(且可能是不同配置的)计算机系统上执行的若干不同的模块和组件。因此,尽管通过若干不同计算机系统组合处理能力的这一能力是优点,但存在着与分布式应用程序模块相关联的各种复杂性。

例如,常规分布式应用程序服务器一般未针对高效缩放性配置。即,大多数分布式应用服务器被配置成管理给定的分布式应用程序的精确指令,诸如精确引用和/或组件寻址方案。如此,应用程序的各组件之间通常存在相对紧密的耦合。因此,在管理器想要将特定模块或组件重新部署到另一服务器或一组计算机系统时,该重新部署总是存在着引发错误(例如,由于网络协议、系统配置等的差异)的某种(并且可能是显著的)可能。在消息未被向前传递到需要它们的地方的情况下或在它们未被正确地向前传递的情况下,可能造成这些错误。

简要概述

本发明延及用于翻译声明性模型的方法、系统和计算机程序产品。一种计算机系统包括一个或多个驱动程序。每一驱动程序被配置成处理用于不同技术的指定组合的模型。该计算机系统还包括一个或多个翻译器。每一翻译器被配置成处理表示来自多种不同技术的指定技术内的对象的模型元素。

在某些实施例中,该计算机系统接收声明性模型连同命令。该声明性模型和该命令共同指示基于所接收的声明性模型来为一应用程序实现该命令的意图。该计算机系统标识被配置成处理与所接收的声明性模型中指示的技术组合相对应的声明性模型的驱动程序。该计算机系统将所接收的声明性模型和命令转发到所标识的驱动程序。所标识的驱动程序解析所接收的声明性模型来标识各模型元素及其相互关系。

对于每一所标识的模型元素,该计算机系统标识被配置成翻译与所标识的模型元素相对应的指定技术的模型元素的翻译器。对于每一所标识的模型元素,该计算机系统将该模型元素发送到所标识的翻译器。

对于每一所标识的模型元素,该计算机系统接收要在指定技术内执行以部分地为该应用程序实现该命令的动作序列。所接收的动作序列是完全实现该命令所要执行的全部动作的子集。

该计算机系统将所接收的针对在声明性模型中标识的模型因素的动作序列组装成执行计划。以相对于所接收的针对其他模型元素的动作序列的指定次序来将所接收的动作序列组装成执行计划。该指定次序基于该模型元素相对于所接收的声明性模型中的其他模型元素的关系。该计算机系统执行该执行计划来为应用程序实现命令。对执行计划的执行包括以指定次序执行所接收的针对每一模型元素的动作序列。

在其他实施例中,将应用程序的当前和先前执行计划进行比较。比较的结果用于导出新执行计划。导出新执行计划可包括基于当前执行计划中所包括或未包括的动作来添加、删除、更新、以及逆转来自先前执行计划的动作。

提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。

本发明的附加特征和优点将在以下描述中叙述,且其一部分根据本描述将是显而易见的,或可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些和其他特征将通过以下描述和所附权利要求书变得更加显而易见,或可通过对下文中所述的本发明的实践来领会。

附图简述

为了描述可获得本发明的上述和其他优点和特征的方法,将通过引用附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图仅描述本发明的典型实施例,从而不被认为是对其范围的限制,本发明将通过使用附图用附加特征和细节来描述和说明,附图中:

图1示出了便于翻译声明性模型的示例计算机体系结构。

图2A-2B示出用于翻译声明性应用程序模型的更详细的计算机体系结构的不同视图。

图3示出用于翻译声明性应用程序模型的计算机体系结构的进一步分解视图。

图4示出用于翻译模型来实现所接收命令的示例方法的流程图。

图5示出用于翻译声明性应用程序模型来更新应用程序的计算机体系结构的示例。

图6示出用于更新应用程序的更新动作的示例。

图7示出用于翻译模型来实现更新命令的示例方法的流程图。

详细描述

本发明延及用于翻译声明性模型的方法、系统和计算机程序产品。一种计算机系统包括一个或多个驱动程序。每一驱动程序被配置成处理用于不同技术的指定组合的模型。该计算机系统还包括一个或多个翻译器。每一翻译器被配置成处理表示来自多种不同技术的指定技术内的对象的模型元素。

在某些实施例中,该计算机系统接收声明性模型连同命令。该声明性模型和命令共同指示基于所接收的声明性模型来为一应用程序实现该命令的意图。该计算机系统标识被配置成处理与该所接收的声明性模型中指示的技术的组合相对应的声明性模型的驱动程序。该计算机系统将所接收的声明性模型和命令转发到所标识的驱动程序。所标识的驱动程序解析所接收的声明性模型来标识各模型元素及其相互关系。

对于每一所标识的模型元素,该计算机系统标识被配置成翻译与所标识的模型元素相对应的指定技术的模型元素的翻译器。对于每一所标识的模型元素,该计算机系统将该模型元素发送到所标识的翻译器。

对于每一所标识的模型元素,该计算机系统接收要在指定技术内执行以部分地为该应用程序实现该命令的动作序列。所接收的动作序列是完全实现该命令所要执行的全部动作的子集。

该计算机系统将所接收的针对在声明性模型中标识的模型因素的动作序列组装成执行计划。以相对于所接收的针对其他模型元素的动作序列的指定次序来将所接收的动作序列组装成执行计划。该指定次序基于该模型元素相对于所接收的声明性模型中的其他模型元素的关系。该计算机系统执行该执行计划来为应用程序实现命令。对执行计划的执行包括以指定次序执行所接收的针对每一模型元素的动作序列。

在其他实施例中,将应用程序的当前和先前执行计划进行比较。比较的结果用于导出新执行计划。导出新执行计划可包括基于当前执行计划中所包括或未包括的动作来添加、删除、更新、以及逆转来自先前执行计划的动作。

本发明的各实施例可以包括或利用含有计算机硬件的专用或通用计算机,这将在以下做出进一步讨论。本发明范围内的各实施例还包括用于承载或储存计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种完全不同的计算机可读介质:物理存储介质和传输介质。

物理存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。

“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线或硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置并可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。

此外,应当理解,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动转移到物理存储介质。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传送到计算机系统RAM和/或计算机系统处的较不易失性的物理存储介质。由此,应当理解,物理存储介质可被包括在同样(或甚至主要)利用传输介质的计算机系统组件中。

计算机可执行指令例如包括,使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言等中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。

本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可以在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实践。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备中。

图1示出了便于翻译声明性模型的示例计算机体系结构100。如图1所示,计算机体系结构100包括翻译系统101和环境105。环境105还包括可由翻译系统101访问的多个资源,诸如举例而言资源105A、105B、以及105C。如进一步描绘的,翻译系统101接收声明性模型102和命令103。翻译系统101根据命令103翻译声明性模型102,从而使得动作104A、104B、以及104C在环境105内执行。

一般而言,模型是描述诸如应用程序模块(例如,分布式应用程序的可分布组件)等主题的数据。因此,声明性模型102可以描述彼此连接或相关的一个或多个应用程序模块。每一模块还可包括也可彼此相关的一个或多个资源。因此,声明性模型102的各元素可用来描述表示分布式应用程序的至少一部分的相关应用程序模块和资源。例如,声明性模型102可以描述web服务的模块,该web服务包括资源(例如,文件)、人工产物(例如,必须创建以主存该web服务的IIS虚拟目录)、以及配置信息。

一般而言,命令表示要对模型执行的操作。命令实际上可以表示可对模型执行的任何操作,诸如举例而言部署、解除部署、开始、停止、更新、监视等。因此,命令103可以表示要对声明性模型102执行的操作。

模型连同命令一起可以用来表示意图。所表示的意图可以是用户意图或自动化意图。例如,声明性模型102连同命令103一起可以表示用户的“部署我的web服务”、“开始执行我的web服务”等意图。

因此,响应于接收到声明性模型102和命令103,翻译系统101可处理模型102和命令103以实现所表示的意图。实现所表示的意图可包括对环境105的资源执行一个或多个动作,如动作104A、104B、104C等。例如,为了部署用户的web服务,翻译系统101可将文件复制到资源105B,在资源105A上创建人工产物(如在web服务器上创建目录),以及创建或更改该web服务所需的资源105C(例如,配置文件)。

图2A示出了便于翻译声明性应用程序模型的示例计算机体系结构200。计算机体系结构200中描绘了工具225、储存库220、执行模块215、驱动程序管理器230、以及分析模块210。所示组件中的每一个可通过诸如例如局域网(“LAN”)、广域网(“WAN”)或甚至因特网等网络彼此连接。因此,所描绘的组件中的每一个以及任何其他连接组件都可以创建消息相关数据并通过网络交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其他更高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等)。

如图所示,工具225可用来编写应用程序的并且存储在储存库220中的声明性模型,如储存库220中的声明性应用程序模型253。声明性模型用来确定真实世界运行(部署的)应用程序的结构和行为。声明性模型还用于确定从基于该声明性模型部署的应用程序报告(发出)什么事件。因此,用户(例如,分布式应用程序开发者)可使用一个或更多个工具225来创建声明性模型253。声明性模型可包括声明如何配置和执行应用程序的多个互相关的模型元素。

一般而言,声明性模型包括表达分布式应用程序的应用程序意图的一个或多个高级声明集合。因此,高级声明一般描述分布式应用程序中的一个或多个模块的操作和/或行为。然而,高级声明不一定描述部署具有该特定操作/行为的分布式应用程序所需的实现步骤(但在适当的情况下它们可以描述)。例如,声明性应用程序模型253可以表达工作流的一般化意图,包括例如第一和第二web服务彼此连接。然而,声明性应用程序模型153不一定描述第一和第二web服务彼此连接的方式(例如,协议)或位置(例如,URI端点)。两web服务连接的方式和位置的具体细节基于web服务所部署的位置来确定(例如,具体机器和具体web服务器配置)。

可响应于接收到对声明性应用程序模型执行操作的命令来实现对应用程序的基于声明性应用程序模型的应用程序控制。例如,执行模块215可接收输入(例如,用户发起的输入或自动化输入)。输入是从工具225或从计算机程序(例如用户界面或程序界面上的)接收到的。输入可包括对模型(例如,文件名、URL等)和命令的引用。该命令表示要对所引用的模型执行的操作(例如,部署、解除部署、开始、停止、更新等)。

为对应用程序执行声明性模型所描述的所请求操作,将该声明性应用程序模型发送到执行模块215。执行模块215可细化声明性应用程序模型,直到不存在歧义并且细节足以供驱动程序消费为止。因此,执行模块215可接收并细化声明性应用程序模型253,以使声明性应用程序模型253可由驻留在驱动程序管理器230内部的驱动程序翻译成所部署的真实世界应用程序。

一般而言,“细化”声明性模型可包括诸如例如逐步完善等某种类型的工作分解结构,以使声明性模型指令被充分完成以供驱动程序或驱动程序管理器230进行翻译。由于声明性模型可由人类用户相对松散地编写(即,包含一般化意图指令或请求),因此可能存在执行模块215修改或补充声明性模型以部署应用程序的不同程度或范围。工作分解模块216可以实现诸如逐步完善算法等弱分解结构算法,以确定何时已达到适当粒度并且指令对驻留在驱动程序管理器230中的驱动程序而言是足够的。

执行模块215还可以解决声明性模型中所包括的相关性和约束。例如,执行模块215可被配置成基于声明性应用程序模型253中的元素之间的相关性(例如,一个web服务连接到另一个)的语义来细化声明性应用程序模型253。因此,执行模块215和工作分解模块216可以互操作来输出详细应用程序模型253D,该详细应用程序模型253D提供驻留在驱动程序管理器230中的驱动程序、且具有足够信息来部署分布式应用程序207。

另外,执行模块215可被配置成填充关于计算机系统分配的缺失数据。例如,执行模块可以标识声明性模型253中的没有特定计算机系统地址需求或操作需求的多个不同的模块。因此,执行模块215可以向可用计算机系统分配分布式应用程序模块。执行模块215可以推理出将数据填充到经细化的声明性应用程序模型253中的最佳方式。例如,如先前所描述的,执行组件215可基于连接接近性来确定并决定对web服务使用什么传输,或者基于适用于按需处理预期高峰的因素来确定和决定如何分配分布式应用程序模块。执行模块215随后可以在详细应用程序模型253D(或其一个分段)中记录缺失数据。该详细应用程序模型还可以保存在储存库220中。

在补充或替换实施例中,执行模块215可被配置成计算声明性应用程序模型253中的相关数据。例如,执行模块215可基于对机器的分布式应用程序模块分配来计算相关数据。因此,执行模块215可以计算端点上的URI地址,并且将对应的URI地址从提供者端点传播到消费者端点。另外,执行模块215可以评估声明性应用程序模型253中的约束。例如,执行组件215可被配置成检查两个分布式应用程序模块实际上是否可被分配给同一机器,并且如果为否,则执行模块215可细化详细应用程序模型253D以适应该要求。

在向声明性应用程序模型253添加了所有适当的数据(或以其他方式修改/细化)后,执行组件215可以最终确定经细化的详细应用程序模型253D,以使其可由驻留在驱动程序管理器230中的平台专用驱动程序来翻译。为了最终确定或完成详细应用程序模型253D,执行模块215可以例如将声明性应用程序模型划分成各个分段,这些分段可被作为任何一个或多个平台专用驱动程序的目标。因此,执行模块215可以用其目标驱动程序(例如,驻留在驱动程序管理器230中的平台专用驱动程序的地址/ID)来标记每一声明性应用程序模型(或其分段)。此外,执行模块215可以验证详细应用程序模型(例如,253D)实际上可由驻留在驱动程序管理器230中的驱动程序翻译,并且如果为是则将该详细应用程序模型(或其分段)传递给驱动程序管理器230以分派给适当的驱动程序来进行翻译。

在任何情况下,驱动程序管理器230与一个或多个驱动程序和翻译器互操作以将详细应用程序模块253翻译成一个或多个(平台专用)动作233。如在图2A中所示,动作233可用来实现分布式应用程序207的模型命令226中所表示的操作的意图。

在部署期间,分布式应用程序可以提供关于执行的操作信息。例如,在执行期间,分布式应用程序207可以发出指示已在分布式应用程序207处发生的事件(例如,执行或性能问题)的事件流237。在一个实现中,分布式应用程序207在连续的、正在进行的基础上发出事件流237,而在其他实现中,分布式应用程序207在调度基础上(例如,基于驻留在驱动程序管理器230中的平台专用驱动程序所设置的调度)发送事件流237。驱动程序管理器230又将事件流237传送给分析模块210以供分析、调节、和/或进行其他适当的修改。事件流237中所发出的事件在声明性应用程序模型253中定义。

一般而言,分析模块210基于存储在储存库220中的声明性观察模型(例如,观察模型276)连同声明性应用程序模型253一起来聚集、关联、并用其他方式过滤来自事件流237的数据,以标识分布式应用程序207的感兴趣的趋势和行为。分析模块210还可以基于所标识的趋势来按需自动地调整声明性应用程序模型253的意图。例如,分析模块210可以向储存库220发送模型修改238以调整声明性模型253的意图。例如,经调整的意图可以在计算机系统快用完系统存储器的情况下减少该计算机系统上每秒所处理的消息的数量,在当前分配的机器重引导过于频繁的情况下在另一机器上重新部署分布式应用程序207,等等。

图2B描绘驱动程序管理器230中可包括的组件的更详细视图。如图2B所示,驱动程序管理器230包括类型定位器241、驱动程序342、以及翻译器261。

类型定位器241是将模型和模型元素映射到可以处理它们的对应的驱动程序和翻译器的查找机制。

驱动程序242被配置成接收并处理模型和命令。驱动程序242被配置成与其理解的一列命令和其支持的一组技术模型一起使用。例如,驱动程序242可以是能够翻译描述使用微软Windows通信框架(“WCF”)并将被主存在微软因特网信息服务器(“IIS”)上的web服务的web服务模块模型的WCF-IIS驱动程序。

如图所示,驱动程序242包括产生执行计划244的模型解释器243。模型解释器243被配置成解析所接收的模型并生成对应的执行计划(例如,执行计划244)。为了从所接收的模型生成执行计划,模型解释器243可以标识模型的各组成模型元素及其相互关系。模型解释器243随后可以调用对应的模型元素解释器来检索每一模型元素的动作序列。模型解释器243将每一模型元素的动作序列组合成单个动作序列以包括在执行计划中。

因此,例如,执行计划244是可被执行以对模型执行一操作的顺序动作集合。执行计划244还提供包含可由动作在其执行期间使用的模型信息的执行上下文。这些动作还使用该上下文来传递其他动作在执行期间所需的信息。

翻译器261是相关动作集合和模型元素解释器的包。翻译器261将与特定技术具有密切关系的各个过程绑定在一起。例如,OSConfig(操作系统配置)翻译器具有可以处理诸如文件和文件夹等操作系统人工产物的动作集合。这些动作可以是创建、复制、移动、删除等。

如图所示,翻译器261包括模型元素解释器262和动作263A、263B、以及263C。模型元素解释器262被配置成解析模型元素并组装可被执行以操作该模型元素所表示的事物的动作序列。

动作263A、263B、以及263C表示基于单个模型元素来操作的可执行过程。例如,CopyFile(复制文件)动作可以将给定文件复制到给定目的地,其中该文件在描述诸如web服务等应用程序模块的模型中由资源模型元素来描述。

动作可包括各种不同的属性。例如,动作可以是幂等的。即,对同一模型元素再次成功执行同一动作将获得同一结果。动作可以具有唯一标识符。如果两个动作要做同样的事情,则这两个动作可具有相同的标识符。例如,当文件具有相同的绝对路径时,安装该文件的两个动作可以具有相同的标识符。

动作可以与对应的逆动作相关联。逆动作可以撤消该动作的效果。例如,CopyFile的逆是移除文件或恢复被盖写的原始文件的过程。动作可以与应用比现有资源更加新的资源版本的对应更新动作相关联。

因此,图2B中所示的各组件和数据可以互操作来实现所接收的模型和命令中所表示的意图。

图3示出用于翻译声明性应用程序模型的示例计算机体系结构300的进一步分解视图。如图所示,计算机体系结构300包括驱动程序管理器330。驱动程序管理器330可与计算机体系结构200中所示的驱动程序管理器230相类似地(或甚至相同地)配置。驱动程序管理器330主存驱动程序和翻译器并接收输入。例如,驱动程序管理器300主存多个驱动程序,诸如举例而言wcf-IIS驱动程序342和Aspx-IIS驱动程序352。

每一驱动程序可包括被配置成解析模型并生成执行计划的模型解释器(例如,分别是模型解释器343和353)。因此,在接收到模型后,每一驱动程序可以标识各组成资源及其相互关系,调用适当的资源解释器来检索动作序列,并将动作序列组装成执行计划。

驱动程序管理器300还主存多个翻译器,诸如举例而言操作系统技术翻译器361、IIS技术翻译器371、以及WCF技术翻译器381。每一翻译器可包括用于解析描述资源的模型元素并组装可对该资源所表示的事物执行的动作序列的资源解释器(例如,分别是资源解释器362、372、以及382)。每一翻译器可以对应于环境的一部分。例如,操作系统技术翻译器361对应于操作系统391,IIS技术翻译器371对应于IIS 392,而WCF技术翻译器381对应于WCF 393。

因此,在翻译器接收到描述资源的模型元素时,该资源表示该环境的对应部分内的某一对象。例如,在操作系统技术翻译器361接收到资源时,该资源对应于操作系统391中的对象(例如,service.svc文件)。类似地,在IIS技术翻译器371接收到资源时,该资源对应于IIS 392中的对象(例如,用户web服务“/myservice(我的服务)”的位置)。同样,在WCF技术翻译器381的情况下,该资源对应于WCF 393中的对象(例如,Web.config)。

一般而言,分派器371被配置成接收模型和命令并将该模型和命令分派给适当的驱动程序。因此,在接收到模型和命令后,分派器371可将该模型转发到类型定位器341。类型定位器341可以接收该模型并基于该模型来定位用于处理该模型的驱动程序的适当类型。类型定位器341可以向分派器371返回标识驱动程序的适当类型的驱动程序ID。分派器371随后可以使用驱动程序ID来向所标识的适当驱动程序分派模型和命令。

驱动程序还可以利用类型定位器341来为模型中所包括的描述资源的模型元素定位适当的翻译器。对于模型中的描述资源的每一模型元素,驱动程序可以将描述资源的模型元素提交给类型定位器341。类型定位器341可以接收描述资源的模型元素并基于该描述资源的模型元素来定位用于翻译该描述资源的模型元素的翻译器的适当类型。类型定位器341可以向驱动程序返回标识驱翻译器的适当类型的翻译器ID。驱动程序随后可以使用翻译器ID来将描述资源的模型元素分派给所标识的适当翻译器。

该适当的翻译器解析所接收的描述资源的模型元素来为所接收的命令组装动作序列,并将该动作序列返回给驱动程序。驱动程序随后将不同的动作序列组装成单个执行计划。驱动程序随后执行该执行计划。该执行计划中的动作被顺序地执行,从而直接在环境上操作(例如,在操作系统391、IIS 391、以及WCF 392中的一个或多个上),以实现模型353和命令329中共同表示的意图。

图4示出用于翻译模型来实现所接收命令的示例方法400的流程图。方法400将参考计算机体系结构300中的组件和数据来描述。

方法400包括接收声明性模型连同命令的动作,该声明性模型和该命令共同指示基于所接收的声明性模型来为应用程序实现该命令的意图(动作401)。例如,分派器371可以接收模型353和命令329。模型353可包括声明如何配置和执行应用程序的多个相互关联的模型元素。命令329可以是用于对应用程序进行部署、解除部署、开始、停止等的命令。

方法400包括标识被配置成处理与所接收的声明性模型中指示的技术的组合相对应的声明性模型的驱动程序的动作(动作402)。例如,分派器371可以向类型定位器341发送模型353。类型定位器341可以接收模型353。类型定位器341可以处理模型353以确定适用于处理模型353的驱动程序的类型。

对驱动程序类型的确定可以基于模型353的各模型元素中指示的和/或与其相关的技术的组合(例如,操作系统、网络协议、数据类型等的组合)。例如,类型定位器341可以确定Wcf-IIS驱动程序342是用于基于模型353中所包含的与IIS 392和WCF 393相关的模型元素来处理模型353的适当驱动程序。响应于该确定,类型定位器314可以将驱动程序ID 384(驱动程序342的标识符)发送给分派器371。

方法400包括将所接收的声明性模型和命令转发给所标识的驱动程序的动作(动作403)。例如,分派器371可以利用驱动程序ID 384来将模型353和命令329转发给Wcf-IIS驱动程序342。

方法400包括所标识的驱动程序解析所接收的声明性模型以标识各模型元素及其相互关系的动作(动作404)。模型解释器343可以解析模型353以标识模型353内的各模型元素和各模型元素彼此的关系。例如,模型解释器343可以标识模型元素354A、354B、354C等。

对于每一所标识的模型元素,方法400包括标识被配置成翻译与所标识的模型元素相对应的指定技术的模型元素的翻译器的动作(动作405)。例如,Wcf-IIS驱动程序342可以将所标识的模型元素(如模型元素354A)发送给类型定位器341。类型定位器341可以接收模型元素354A。类型定位器可以处理模型元素354A来确定适用于翻译模型元素354A的翻译器的类型。

对翻译器类型的确定可以基于模型元素354A中所指示的和/或与其相关的指定技术(例如,操作系统、网络协议、数据类型等之一)。例如,类型定位器341可以基于指示操作系统391或与其相关的模型元素354A来确定操作系统技术翻译器361是用于翻译模型元素354A的适当驱动程序。响应于该确定,类型定位器314可以将翻译器ID 355(翻译器361的标识符)发送给Wcf-IIS驱动程序342。可以对模型353中所包括的模型元素354B、354C等进行类似的确定。

对于每一所标识的模型元素,方法400包括将模型元素发送给翻译器的动作(动作406)。例如,Wcf-IIS驱动程序342可以利用翻译器ID 355来将模型元素354A转发给操作系统技术翻译器361。资源解释器362可以将模型元素354A翻译成动作序列363。动作序列363包括要在操作系统391中执行以实现命令329的意图的一部分的多个动作,如动作363A、363B等。

类似地,Wcf-IIS驱动程序342可以利用适当的翻译器ID来将模型元素354B转发给IIS技术翻译器371。资源解释器372可以将模型元素354B翻译成动作序列373。动作序列373包括要在IIS 392中执行以实现命令329的意图的另一部分的多个动作,如动作373A、373B等。

同样,Wcf-IIS驱动程序342可以利用适当的翻译器ID来将模型元素354C转发给WCF技术翻译器381。资源解释器382可以将模型元素354C翻译成动作序列383。动作序列383包括要在WCF 393中执行以实现命令329的意图的又一部分的多个动作,如动作383A、383B等。

基于指示指定技术和/或与其相关的模型元素,还可以向操作系统技术翻译器361、IIS技术翻译器371、WCF技术翻译器381中的任一个以及其他适当的技术翻译器(未示出)发送其它模型元素。

对于每一所标识的模型元素,方法400包括接收要在指定技术内执行来为应用程序部分地实现命令的动作序列的动作(动作407),该动作序列是完全实现该命令所要执行的全部动作的子集。例如,模型解释器343可以接收来自操作系统技术翻译器361的动作序列363、来自ISS技术翻译器371的动作序列373、来自WCF技术翻译器381的动作序列383等。每一动作序列是基于模型353来为应用程序完全实现命令329所要执行的全部动作的子集。

对于每一所标识的模型元素,方法400包括将所接收的针对模型元素的动作序列组装成执行计划的动作,基于该模型元素与所接收的声明性模型中的其他模型元素的关系以相对于所接收的针对其他模型元素的动作序列的指定次序来将该所接收的动作序列组装成执行计划(动作408)。例如,模型解释器343可以将动作序列363、373、383等组装成执行计划344。基于模型353中各对应模型元素之间的关系以指定次序来组装动作序列363、373、383等。

方法400包括执行该执行计划来为应用程序实现该命令的动作,对执行计划的执行包括以指定次序执行所接收的针对每一模型元素的动作序列(动作409)。例如,Wcf-IIS驱动程序342可以执行执行计划344来为要使用操作系统391、IIS 392、以及WCF 393等的各个部分的应用程序实现命令329(基于模型353)。

图5示出用于翻译声明性应用程序模型来更新应用程序的计算机体系结构500的示例。如图所示,计算机体系结构500包括驱动程序501、翻译器502、以及比较与更新模块507。在计算机体系结构500内并且如上所述,驱动程序501可以接收模型(例如,模型的当前版本502C以及模型的先前版本502P)和命令(例如,更新命令503),解析出各模型元素(例如,模型元素504),将这些模型元素发送给翻译器502中的适当翻译器,并从该适当翻译器接收返回的动作序列(例如,动作序列506)。从该动作序列,驱动程序501可以创建执行计划,如当前执行计划511和先前执行计划512。

比较与更新模块507被配置成接收应用程序的当前执行计划和先前执行计划并比较这两个执行计划以标识这两个执行计划内的动作序列的差异。根据所标识的差异,比较与更新模块507可以将当前执行计划中的动作应用于先前执行计划中的动作以导出新执行计划。新执行计划可包括用于更新现有应用程序的更新动作。

图6示出用于更新应用程序的更新动作600的示例。行601指示当一动作包括在执行计划的当前版本和先前版本两者中时,在新执行计划中包括更新动作以将动作的先前版本的执行效果更新成动作的当前版本的效果。行602指示当一动作只包括在执行计划的当前版本中时,该动作的当前版本被添加到新执行计划。行603指示当一动作只包括在执行计划的先前版本中时,在新执行计划中包括逆动作以移除动作的先前版本的执行效果。

图7示出用于翻译模型来实现更新命令的示例方法700的流程图。方法700将参考计算机体系结构500以及更新动作600中的组件和数据来描述。

方法700包括接收声明性模型连同更新命令的动作,该声明性模型和该更新命令共同指示基于所接收的声明性模型的先前版本来更新应用程序的意图(动作701)。例如,驱动程序501可以接收模型的当前版本502C和更新命令503。模型的当前版本502C和更新命令503共同表示更新应用程序522的意图。

方法700包括为所接收的声明性模型组装当前执行计划的动作,该当前执行计划包括基于所接收的声明性模型中的各模型元素之间的关系来以指定次序组装的动作序列(动作702)。例如,驱动程序501可以从模型的当前版本502C解析出模型元素,并将这些模型元素(例如,模型元素504中所包括的模型元素)发送给翻译器502中的适当翻译器。该适当翻译器可以返回动作序列(例如,动作序列506中所包括的动作序列)。驱动程序501可以从该动作序列组装当前执行计划511。

方法700包括访问所接收的声明性模型的先前版本的动作(动作703)。例如,驱动程序501可以访问模型的先前版本502P。应用程序522基于模型的先前版本502P。

方法700包括为所接收的声明性模型的先前版本组装先前执行计划的动作,该先前执行计划包括基于所接收的声明性模型的先前版本中的各模型元素之间的关系来以指定次序组装的先前动作序列(动作704)。例如,驱动程序501可以从模型的先前版本502P解析出模型元素,并将这些模型元素(例如,模型元素504中所包括的模型元素)发送给适当的翻译器502。该适当翻译器可以返回动作序列(例如,动作序列506中所包括的动作序列)。驱动程序501可以从该动作序列组装先前执行计划512。

方法700包括将当前执行计划与先前执行计划进行比较的动作(动作705)。例如,比较与更新模块507可以将当前执行计划511与先前执行计划512进行比较。根据该比较,比较与更新模块507可以确定动作是否被包括在当前执行计划511和先前执行计划512之一或两者中。

方法700包括基于比较结果来导出用于更新应用程序的新执行计划的动作(动作706)。例如,比较与更新模块507可以基于将当前执行计划511与先前执行计划512进行比较的结果来导出新执行计划513以用于更新应用程序522。

新执行计划的导出可包括将更新、当前、或逆动作插入到新执行计划。例如,对于当前执行计划和先前执行计划两者中所包括的每一动作,在新执行计划中包括更新动作(动作707)。对于仅当前执行计划中所包括的每一动作,将该来自当前执行计划的动作包括在新执行计划中(动作708)。对于仅先前执行计划中所包括的每一动作,将用于逆转该先前执行计划中的动作的逆动作包括在新执行计划中(动作709)。该逆动作用于在计算环境521内消除来自先前执行计划的动作的影响。

方法700包括执行新执行计划以更新计算环境内的应用程序的动作(动作710)。例如,驱动程序510可以执行新执行计划513。对新执行计划513的执行可以使得动作531被发送到计算环境521中。动作531可以在计算环境中实现以将应用程序522更新成应用程序522U。

本发明的各实施例也是可扩展的。驱动程序可以向类型定位器(例如314)注册以向分派器展示功能。类似地,翻译器可以向类型定位器注册以向驱动程序展示功能。驱动程序可以重用现有翻译器。例如,参考图3,Aspx-IIS驱动程序352可以使用操作系统技术翻译器361和IIS技术翻译器371(连同Acpx翻译器(未示出))来处理各模型元素。

各实施例可以提供驱动程序、模型解释器、模型元素解释器、以及动作的基类和一般实现。因此,用于创建并运行执行计划、定位类型、以及生成更新计划的基础结构都通过共同框架来提供。结果,开发者可以集中于创建新模型,并且翻译器集中于将各模型元素处理成动作。各个基类可以任选地扩展以创建模型和模型元素解释器,从而处理关系未在模型中表达的情况,由此可能阻止基本实现推断动作序列。

因此,本发明的各实施例便于处理声明性模型来对应用程序执行各种操作,诸如举例而言应用程序部署、应用程序更新、诸如开始和停止等应用程序控制、通过操纵应用程序发出事件来进行的应用程序监视等等。应用程序的声明性模型在目标环境上处理和实现,此后它们可被执行、扩展、以及监视。

本发明可具体化为其他具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。

高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用