翻译声明性模型的制作方法

文档序号:6478792阅读:110来源:国知局
专利名称:翻译声明性模型的制作方法
翻译声明性模型背景
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翻译器(未示出))来处理各模型元素。各实施例可以提供驱动程序、模型解释器、模型元素解释器、以及动作的基类和一 般实现。因此,用于创建并运行执行计划、定位类型、以及生成更新计划的基础结构都通过 共同框架来提供。结果,开发者可以集中于创建新模型,并且翻译器集中于将各模型元素处 理成动作。各个基类可以任选地扩展以创建模型和模型元素解释器,从而处理关系未在模 型中表达的情况,由此可能阻止基本实现推断动作序列。因此,本发明的各实施例便于处理声明性模型来对应用程序执行各种操作,诸如 举例而言应用程序部署、应用程序更新、诸如开始和停止等应用程序控制、通过操纵应用程 序发出事件来进行的应用程序监视等等。应用程序的声明性模型在目标环境上处理和实 现,此后它们可被执行、扩展、以及监视。
本发明可具体化为其他具体形式而不背离其精神或本质特征。所描述的实施例在 所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而 非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的 范围所涵盖。
权利要求
一种用于在计算环境内的计算机系统处翻译模型(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所述的方法,其特征在于,所述基于所述比较来导出用于更新所述 应用程序的新执行计划的动作包括在所述新执行计划中包括仅所述先前执行计划中所包 括的至少一个动作的逆动作,所述逆动作用于在所述计算环境内消除所述至少一个动作的 影响。
全文摘要
本发明延及用于翻译声明性模型的方法、系统和计算机程序产品。本发明的各实施例便于处理声明性模型来对应用程序执行各种操作,诸如例如应用程序部署、应用程序更新、诸如开始和停止等应用程序控制、通过操纵应用程序来发出事件以进行的应用程序监视等等。应用程序的声明性模型在目标环境上处理和实现,此后它们可被执行、扩展、以及监视。
文档编号G06F17/00GK101836201SQ200880113469
公开日2010年9月15日 申请日期2008年10月26日 优先权日2007年10月26日
发明者A·迪胡特, C·S·塞万, G·M·文卡特拉马纳帕, I·塞杜金, L·S·瓦内利三世, R·R·瑞格哈文达尔劳, S·莫汉蒂 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1