CN102567044A - 代码部署协助 - Google Patents
代码部署协助 Download PDFInfo
- Publication number
- CN102567044A CN102567044A CN2011103861475A CN201110386147A CN102567044A CN 102567044 A CN102567044 A CN 102567044A CN 2011103861475 A CN2011103861475 A CN 2011103861475A CN 201110386147 A CN201110386147 A CN 201110386147A CN 102567044 A CN102567044 A CN 102567044A
- Authority
- CN
- China
- Prior art keywords
- code
- application
- engine
- assembly
- deployment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及代码部署协助。通过自动代码生成,更具体地是部署代码的自动生成来协助计算机编程。可分析应用,且可根据分析以及特定执行环境来生成包括安装、维护(例如,更新/升级)以及移除(例如,卸载)代码的部署代码。
Description
技术领域
本发明涉及代码部署。
背景技术
分布式计算指的是其中程序或应用的不同部分在两个或更多个通过诸如因特网等网络通信的自治计算机上并发运行的计算机处理。这些计算机彼此交互以实现共同目标。通常在多个计算机之间分配工作以完成靠单个或特定计算机的处理能力不可能的任务。或者,仅仅为加速处理,可跨多个计算机分配工作。
可采用各种网络体系结构、模型等来通信地耦合许多计算机并启用分布式计算。最为众所周知的体系结构之一是客户机服务器即双层体系结构。此处,在担当内容或服务提供者的服务器以及请求所提供的内容或服务的客户机之间划分工作。一些特定的服务器类型包括但不限于:web、应用、数据库、邮件、文件,和打印机服务器。示例性的客户机类型包括web浏览器和电子邮件客户端等等。常规地还采用其它多层体系结构,诸如包括演示、应用(也被称为业务逻辑、逻辑、中间)以及数据层的三层体系结构,该体系结构相应地分隔演示、引用功能,以及数据存储和访问。作为对比,单层体系结构在单个位置中包括演示、应用和数据。
不幸的是,开发分布式应用是非常繁重的过程。具体地,需要考虑其上将执行程序的各部分的不相似的环境。例如,计算机可能具有不同的文件系统、操作系统以及硬件组件。此外,程序员需要对多种分布式编程技术(例如,超文本标记语言(HTML)、JavaScript、可扩展标记语言(XML)、结构化查询语言(SQL)、简单对象访问协议(SOAP)...)具有超过肤浅的理解。此外,程序员需要提前对于如何跨两个或更多层划分程序作出决策,并被迫致力于异步回调以及其它耗时的分布式编程问题,这可能会过早地固定分布边界并负面地影响丰富且广泛到达的分布式应用的开发。
存在减少分布式编程的负担的层划分技术。更具体地,可对于单个层指定应用,该单个层随后可划分成支持跨层的分布式执行的多个层。
发明内容
下面呈现了简化的发明内容,以便提供对所公开主题的某些方面的基本概念。本发明内容不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护主题的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更具体实施例的序言。
简而言之,本发明一般涉及代码部署协助。在一些情况中,代码部署十分麻烦。例如,当第一执行引擎由第二执行引擎主存时,第二执行引擎或环境可指定非常具体的协议来对于第一,或客,执行引擎或环境来部署应用。例如,每一代码(例如,方法、数据类型...)和依赖代码可能需要按照特定次序向主执行环境注册。
部署组件和相关联功能可用于自动生成部署代码以减轻程序员的负担。更具体地,可分析应用并查明在应用的部署中可能有用的信息(包括依赖性信息等)。至少部分基于从应用代码本身获得的信息,包括安装、维护(例如,更新/升级)和移除(例如,卸载)代码的部署代码可对特定的执行引擎自动生成。
为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围之内。当结合附图阅读以下详细描述时,本发明的其他优点和新颖特征将变得显而易见。
附图说明
图1是便于应用部署的系统的框图。
图2是代表性部署组件的框图。
图3是便于分布式编程的系统的框图。
图4是代表性层划分组件的框图。
图5是包括应用层和数据层的常规的两层体系结构的框图。
图6是包括应用层和数据层的示例性的两层体系结构的框图。
图7是包括应用层和数据层的示例性分布式处理系统的框图。
图8是应用部署的方法的流程图。
图9是安装代码的方法的流程图。
图10是更新代码的方法的流程图。
图11是卸载代码的方法的流程图。
图12是示出用于本公开各方面的合适的操作环境的示意性框图。
具体实施方式
以下的细节一般针对便于应用代码的部署。在一些情况中,应用代码部署可仅涉及将应用代码复制到计算机上的特定位置。然而,在其它情况中,部署可能十分麻烦。例如,给定主执行环境和客执行环境,主执行环境可为了安全性和/或可靠性原因而命令对特定部署协议的使用。作为示例而非限制,数据库服务器等可允许代码运行以加速执行,且包括用于代码注册的特定协议。可对于维护(例如,更新、升级、版本化…)以及卸载应用代码来强迫执行类似的协议。为了减轻这种负担,可实施分析应用代码并至少部分地基于分析的结果自动生成安装、维护和/或移除代码的机制。根据一个实施例,这样的机制可结合层划分技术来使用。
现在参考附图更详细地描述本公开的各个方面,在全部附图中用相似的标记来指示相似或相应的元素。然而应该理解,附图及其相关详细描述不旨在将所要求保护的主题限于所公开的具体形式。相反,其意图是覆盖落在所要求保护主题的精神和范围之内的所有修改、等价物和替换的方案。
首先参考图1,示出了便于应用代码部署等的系统100。系统100包括主执行引擎110,该主执行引擎包括客执行引擎120。换言之,主执行引擎110定义了主存客执行引擎120的第一执行环境,而客执行引擎定义了第二执行环境。主执行引擎110和客执行引擎120之间的关系可导致可能的安全性或可靠性问题。例如,客执行引擎执行的应用可潜在地、负面地影响主执行引擎110和/或由其执行的代码。因此,主执行引擎110可对于部署或以其它方式与针对客执行引擎120的应用交互来强加特定协议。这些协议可被设计成减少潜在的安全性和/或可靠性风险,并且对程序员而言可能是麻烦的。而且,负担的程度可根据协议的复杂度变化,程序的复杂度可基于主执行引擎110与客执行引擎120之间的信任程度而变化。在某些情况中,负担是压倒性的,使得程序员完全避免利用特定的技术。
系统100还包括通信地耦合到主执行引擎110并间接耦合到客执行引擎120的部署组件130。部署组件130可减轻与部署针对客执行引擎120而非主执行引擎110的计算机应用(例如,指定可由基于处理器的设备执行的一个或多个特定任务的用户代码)相关联的许多负担(如果不是全部)。更具体地,部署组件130可生成可由主执行引擎110执行来相对于客执行引擎120部署应用或其部分之类的代码。根据一个实施例,部署组件130可生成部署代码并将其提供给主执行引擎110以便执行。在另一实施例中,可输出部署代码以便检查,例如由诸如管理员的授权实体检查,且如果代码被认为是可接受的,则授权实体可对于主执行引擎110启动执行。
根据一个非限定性的实施例,主执行引擎110和客执行引擎120可驻留在数据层中(例如,数据库、数据库服务器...)。例如,主执行引擎110可以是关系型的(例如,SQL(结构化查询语言)处理器),而客执行引擎120可支持对于一个或多个通用编程语言(例如,面向对象、过程、函数...混合)(例如,SQL-CLR(结构化查询语言-公共语言运行时))指定的代码的执行。在这种情况中,主执行引擎110可要求应用在执行之前按照复杂的方式注册。例如,协议可命令应用片段(例如,方法、函数...)以及依赖应用片段链按照特定次序的注册。作为示例,协议可要求:1)复制代码;2)注册代码;3)注册数据类型;4)注册第一方法;5)注册第二方法,等等。这对程序员而言是十分麻烦的,以致于程序员通常选择避开以这种方式部署的系统、环境、体系结构等。部署组件130可从程序员身上移除许多这种负担(如果不是全部),并因此鼓励对具有繁重的部署协议的系统、环境、体系结构等(包括允许代码运行以加速执行的数据库系统)的利用。
图2是描绘代表性部署组件130的框图。部署组件130包括被配置成对应用(更多地被称为应用代码)进行分析并从中收集信息的分析组件210,该信息将在对于特定执行环境部署该应用时有用。例如,分析组件210可标识诸如数据类型、过程、函数以及依赖性关系的应用片段。尽管不限于此,程序员可通过提供标识数据类型、过程、函数(例如,标量值、表值...)等的代码注释(即元数据)来协助分析组件210。作为示例,一类可用“[SQL过程]”注释,指示该类应被展示为SQL存储过程。类似地,类上的“[SQL数据类型]”注释标识新的数据类型。部署组件130包括代码生成组件220,组件220被配置成生成部署代码,部署代码执行必要动作使得应用根据至少分析组件210标识的信息可供使用。更具体地,代码生成组件220包括安装组件222、维护组件224以及移除组件226。安装组件222被配置成生成用于安装应用的代码(例如,脚本)。从而,安装代码可根据应用以及在其上部署代码的系统而变化。例如,安装代码可包括按照规定的次序注册程序过程、函数和/或数据类型。
维护组件224生成用于维护已安装应用(可包括更新或升级已安装应用)的代码。在执行环境支持更新操作的一些情况中,用组件的新版本更新一个或多个应用组件可能是相对简单的。然而,在诸如数据库服务器等不支持这样的命令的其它情况中,更新可能是相当复杂的,尤其是应对包括大量文件以及文件或其它代码之间的依赖性的大型且复杂的应用时。作为示例,假设存在三个可执行和/或不可执行的文件,“A”、“B”和“C”,其中“A”依赖于“B”,而“B”依赖于“C”,并提供了添加和移除文件的功能。从而,如果要用新版本更新“A”,则可执行以下系列动作以确保不移除另一文件所依赖的文件:“移除C;移除B;移除A;添加A.v2(版本2)添加B;并添加C。”关于这些和更复杂依赖性的信息可由分析组件210获取并提供。
移除组件226被配置成生成代码以移除(即卸载)应用。类似于安装组件222和维护组件224,移除组件226可使用由分析组件210获取的信息,包括但不限于文件依赖性。具体地,可生成描述如何通过颠倒安装的次序来卸载已安装代码的代码。此处,卸载的次序是至关重要的,因为若干应用可能共享代码并且不希望无意中破坏其它应用。以此方式,应用可被完全卸载。另外地或另选地,这样的代码可用于卸载单个文件,例如当关于维护组件224描述地更新文件时。尽管可从已安装文件生成卸载代码,但如果文件中的一个或多个丢失或找不到,则完整的应用不能被卸载,因为可能不能重构依赖性。从而,在一个或多个文件安装时生成移除或卸载代码是有益的。
部署组件130还包括执行启动组件230以及输出组件240,其各自对于所生成的部署代码提供某些功能。执行启动组件230被配置成启动所生成的部署代码对于执行引擎的执行。然而,在一些情况中,这可能是不被准许的。输出组件240被配置成向授权实体(例如,数据库管理员(DBA))输出所生成的部署代码,该实体可分析部署并如果被批准(即被认为可接受)则启动执行。
图3示出便于分布式处理的系统300。该系统包括层划分组件310,它被配置成从单层应用中自动或半自动地生成多层应用。得到的应用因此可完全在多层之一上操作,或被分隔以便跨多层进行协作执行。关于将如何执行应用以及将在哪里执行应用的判定可由层划分组件310基于上下文信息来作出,上下文信息包括但不限于:中央处理器负载/可用性、网络带宽/等待时间、跨层的预计通信成本、历史数据,和/或指定策略。如所示,此处可对于两层提供应用的全部或一部分。在第一层中,应用可对于执行引擎320执行。在第二层中,应用可对于由主执行引擎110主存的客执行引擎120执行。
一旦层划分组件210为层中的任一个或两者生成了代码,部署组件130可用于方便部署应用。对于第一层,部署可包括将代码复制到执行引擎320。然而,根据第二层,部署可能会复杂得多,因为可执行引擎120被嵌入在主执行引擎110中。为了安全性、可靠性和/或实现原因,主执行可命令特定的部署协议,包括代码的显式注册。如前所述,部署组件130可分析要部署的应用并从中获取信息,并且自动地生成代码来部署应用。根据一个实施例,执行引擎320和客执行引擎120可以是类似的或相同的,一个区别在于客执行引擎120被主执行引擎110主存。
图4示出根据本发明一方面的代表性层划分组件310。在一些情况中,可支持各种代码安全模式以控制客执行环境的交互例如以便于安全和/或可靠的执行。例如,在第一模式即“完全信任”中,可允许所有代码运行,在第二模式即“受限”中,可能不允许一些代码运行,且在第三模式即“安全”中,还有进一步的代码不被允许运行。除了提供以上讨论的功能,可扩展层划分组件310来应对这些安全模式。具体地,层划分组件310可包括确认组件410和模式代码组件420。
确认组件410被配置成确认应用代码可被完全部署并鉴于指定模式而正确执行。例如,当将要在具有至少一些限制的执行环境中部署应用代码时,确认组件410可分析代码并确定是否可正确地部署和执行代码。例如,如果调用了在指定模式中不可用的函数,则确认组件410可生成对此进行指示的出错消息。否则,可在有或没有相应消息的情况下确认代码。
模式代码组件420可生成适用于各种模式的代码。更具体地,模式代码组件420可产生在特定的安全模式中有效的等效代码。例如,不被允许的调用或操作可由被允许的一个或多个调用或操作的语义上等效的集合来代替。此外,这样的代码可涉及在多个层上生成并利用代码以允许以不同的方式返回相同的结果。作为示例,假定执行是在数据库的上下文内,且安全模式不允许特定的操作。此处,模式代码组件420可生成代码,这些代码代替调用禁用的操作而采用允许的操作以创建本地数据库,该数据库例如包括关于需要执行什么操作以及要将结果置于何处的信息。在另一层上,数据库外(例如,进程外),可读取本地数据库,可执行合适的操作,并将结果返回给指定位置。回过来在数据库内(例如,进程内),代码可读取所返回的结果。换言之,使用临时数据库作为允许禁用操作在外部执行并返回结果的代理。而且,在为相应的安全模式产生多个版本的应用代码时,部署组件130可为特定的安全模式确定并部署有效代码。
图5-7示出了便于对于所要求保护的主题的某些方面的清楚性和理解的示例性场景。这些图描述了其中包括应用层510和数据层520(例如,数据服务器)的两层系统的上下文中的各方面。当然,图5-7及相关描述不旨在按照任何方式限制所要求保护的各方面而仅是示例性的。
图5示出了包括应用层510和数据层520的常规两层系统500。可使用适配器530来允许应用层510和数据层520之间的通信。此处,用户代码512经由适配器530可对与容纳数据的一个或多个表524交互的已存储的过程522(例如,被编译成单个执行计划的一组事务-SQL语句)作出调用。另外地或另选地,用户代码512可仅通过适配器530来直接与表524交互。在表524上直接或间接执行的任何查询或其它数据操纵操作的结果可被返回给用户代码512而非适配器530供将来使用。
图6描绘了包括应用层510和数据层520的两层体系结构600。类似地,适配器530可启用应用层510和数据层520之间的通信。此处,用户代码512可直接在一个或多个表524上执行查询或其它数据操纵操作(例如,创建新表、删除表...)。而且,用户代码或片段610和612可被指定为例如在代码注释“在数据库中运行”的情况下而在数据库中执行。
图7示出了从对于用户代码512划分的层以及对于数据层520的后续部署得到的分布式处理700。更具体地,部署所生成的代码710,包括之前形成应用层510上的用户代码512的一部分的代码片段610和612。此外,可在应用层510上产生和部署所生成的通信720以启用用户代码512和所生成的代码710之间的通信。而且,可将面向对象抽象组件730部署以在无类型编码和更强类型版本之间进行抽象或映射。例如,无类型编码“串名=(串)记录[“名字”]”以及“整数年龄=(整数)记录[“年龄”]”可被分别映射为更强类型的版本,诸如“串名=记录.名字”以及“整数年龄=记录.年龄”。换言之,应用是使用记录的面向对象的映射还是无类型对象是无关紧要的。
此处,数据层520可支持数据库,更具体地,支持接收结构化查询语言(SQL)查询等并返回结果的关系执行环境。而且,数据层520可包括用于利用另一编程语言针对一个或多个表524执行代码的客执行环境。用户生成的代码710可在客执行环境中运行,并由于带宽和/或网络等待时间问题等,比从应用层510执行操作快得多地对于一个或多个本地表524执行相同的操作。然而,相同的操作可完全在应用层510上执行,完全在数据层520上执行,或按照这两层的某种组合。换言之,可在进程中或进程外对于表524执行操作。应用代码分布的方式可基于与应用层和数据层两者相关的多个因素变化。例如,将操作移动到数据层520可得到比进程外操作快的计算。然而,这可能不是最佳的解决方案,因为它可能会干扰其他用户的操作。从而,有可能一作业在晚上执行并在半小时内完成,而与在白天在进程外执行并在两小时内完成形成对比。
而且,应理解,数据库执行环境和支持各种类型(例如,面向对象、过程、函数...混合)的一个或多个编程语言应用的另一执行环境的组合对于数据的高效处理等提供极大的好处。然而,也存在其中可采用过于麻烦的部署,包括命令代码按照特定次序的复制和注册以及利用多个安全模式的情况。在极大程度上,采用这样的协议以保卫一个或多个表524和/或数据库操作以避免对所主存的代码的潜在的不安全和/或不可靠的动作。如此处所述,可采用部署组件130和相关联的功能以自动地生成代码以供部署并解除程序员的这一负担。
参考若干组件之间的交互已经描述了上述系统、体系结构、环境等。应该理解,这样的系统和组件可以包括这些组件或其中指定的子组件,某些指定的组件或子组件,和/或附加的组件。子组件也可以被实现为在通信上被耦合到其他组件而不是被包括在父组件中的组件。此外,一个或多个组件和/或子组件可以结合成提供聚集功能的单个组件。系统、组件、和/或子组件之间的通信可以根据推送和/或拉取模型来实现。各组件也可以与一个或多个其他组件进行交互,出于简要考虑在此未具体描述该组件,但本领域的技术人员均已知。
此外,以上公开系统以及以下方法的各个部分可以包括或包含基于人工智能、机器学习或知识或规则的组件、子组件、进程、装置、方法或机制(例如,支持向量机、神经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎、分类器...)。这样的组件和其它组件可以自动化执行某些机制或进程,由此使得系统和方法的各部分更为自适应、高效及智能。作为示例而非限制,部署组件130可利用这样的机制来分析应用以确定或推断部署应用时有用的信息。
考虑到以上描述的示例性系统,参考图8-11的流程图将可以更好地理解依照所公开的主题实现的方法。尽管为了说明简洁起见,作为一系列框示出和描述了方法,但是,应该理解,所要求保护的主题不仅限于所描述框的顺序,一些框可以按与此处所描绘和描述的不同的顺序进行和/或与其它框并发地进行。此外,并非全部所示出的框都是实现下面所描述的方法所必需的。
参考图8,示出了应用部署方法800。在参考标号810,可分析应用或更具体地应用代码来标识与部署相关的信息,包括跨一个或多个应用的代码依赖性等。根据一个实施例,提供应用元数据的程序员所指定的代码注释可在分析中使用。在标号820,可根据应用分析和特定执行引擎来创建部署代码。这样的部署代码可与代码的安装、维护(例如,更新/升级)以及卸载相关。根据一个实施例,可将所生成的部署代码提供给授权实体以分析、批准并启动代码的执行。
图9描绘了安装代码的方法900。在参考标号910,例如向执行环境注册应用代码或其部分。在参考标号920,将所注册的代码复制到执行环境。在930,定位依赖代码。例如,如果“A”被注册并安装,且“B”依赖于“A”,则标识“B”。在标号640,对于标识依赖代码的动作是否成功进行检查。如果在930,不能标识依赖代码(“否”),则方法终止。否则,如果在930标识了依赖代码(“是”),则方法900循环回注册代码的参考标号910。
图10示出了更新/升级代码的方法1000。在参考标号1010,标识要更新/升级的代码。例如,代码可对应于包括可执行或不可执行代码的文件。在标号1020,标识依赖于要更新的代码的代码。在1030,移除所标识的依赖代码。在标号1040,然后移除要更新/升级的代码。在参考标号1050,添加代码的更新后/升级后版本。在1060,添加依赖代码。
图11是卸载应用的方法1100的流程图。在标号1110,标识代码部分之间的依赖性。例如,可在应用安装之前确定并提供这样的依赖性。在参考标号1120,基于依赖性按照反向次序移除代码。例如,如果“A”依赖于“B”而“B”依赖于“C”,则首先移除“C”,继之以“B”,然后是“A”。
贯穿此详细描述,讨论集中于应用和数据层以及对于数据层的应用部署。然而,注意到所要求保护的主题并不限于此。所要求保护的主题的各方面在许多其它情况中是有益的。作为示例而非限制,对于在浏览器中运行的插件可存在类似的情况。例如,可能存在带有各种依赖性的多个插件,它们可受益于处所述的自动部署功能。
在此所用的术语“组件”、“系统”和“引擎”及其各种形式意指与计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是但不限于是,在处理器上运行的进程、处理器、对象、实例、可执行程序、执行的线程、程序和/或计算机。作为说明,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可驻留在进程和/或执行的线程内,并且组件可位于一个计算机上和/或分布在两个或更多的计算机之间。
在本文中使用的词语“示例性”或其各种形式意味着用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。此外,各示例只是出于清楚和理解的目的来提供的并且并不意味着以任何方式限制或约束所要求保护主题或本发明的相关部分。可以理解,本来可呈现不同范围的多个附加或替换示例,但出于简明的目的已被省略。
如此处所使用,术语“推论”或“推断”通常指的是从经由事件和/或数据捕捉的一组观察结果来推理或推断系统、环境、和/或用户状态的过程。可以使用推断来标识特定上下文或动作,也可以生成例如状态上的概率分布。推断可以是概率性的,即,基于对数据和事件的考虑,计算在感兴趣状态上的概率分布。推断也可以是指用于从一组事件和/或数据构成较高级别的事件的技术。这样的推断导致从一组观察到的事件和/或存储的事件数据构建新的事件或动作,不管事件在时间上是否紧密相关,以及事件和数据是来自一个还是多个事件和数据源。可采用各种分类方案和/或系统(例如,支持向量机、神经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎……)来执行关于所要求保护的主题的自动化和/或推断的动作。
而且,对于在详细描述或权利要求书中使用术语“包括”、“包含”、“具有”、“含有”或其它形式的变型而言,这样的术语旨在以类似于术语“包括”的方式体现包含性,如同“包括”在用作权利要求书中的过渡词时所解释的那样。
为了为所要求保护主题提供上下文,图12以及以下讨论旨在提供对其中可以实现本主题的各方面的合适环境的简要、概括描述。然而,合适的环境只是示例并且并非旨在对使用范围或功能提出任何限制。
尽管能够在可以在一台或多台计算机上运行的程序的计算机可执行指令的一般上下文中描述以上公开的系统和方法,但是,本领域的技术人员将认识到,各方面也可以与其他程序模块等相结合地实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件和数据结构等。此外,本领域技术人员可以理解,上述系统和方法可用各种计算机系统配置实现,包括单处理器、多处理器或多核处理器计算机系统、小型计算设备、大型计算机、以及个人计算机、手持式计算设备(例如,个人数字助理(PDA)、电话、手表……)、基于微处理器或可编程消费者或工业电子设备等。各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。然而,所要求保护主题的某些方面,如果不是所有方面的话,可以在独立计算机上实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中的一个或两者中。
参考图12,示出了示例通用计算机1210或计算设备(例如,台式机、膝上型计算机、服务器、手持式设备、可编程消费或工业电子产品、机顶盒、游戏系统……)。计算机1210包括一个或多个处理器1220、存储器1230、系统总线1240、大容量存储1250、以及一个或多个接口组件1270。系统总线1240与至少上述系统组件通信地耦合。然而,可以理解,在其最简单的形式中,计算机1210可包括耦合到存储器1230的一个或多个处理器1220,该一个或多个处理器1220执行存储在存储器1230中的各种计算机可执行动作、指令和或组件。
处理器1220可以用通用处理器、数字信号处理器(DSP)、应用程序专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件或被设计为执行此处描述的功能的其任意组合来实现。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何处理器、控制器、微控制器、或状态机。处理器1220还可被实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、多核处理器、结合一个DSP核的一个或多个微处理器、或任何其它这种配置。
计算机1210可包括各种计算机可读介质或以其他方式与各种计算机可读介质交互以便于控制计算机1210来实现所要求保护主题的一个或多个方面。计算机可读介质可以是能由计算机1210访问的任何可用介质,并包含易失性和非易失性介质以及可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,存储器设备(例如,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)……)、磁存储设备(例如,硬盘、软盘、磁带盒、磁带……)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)……)、以及固态设备(例如,固态驱动器(SSD)、闪存驱动器(例如,卡、棒、键驱动器……)……)、或者可用于存储所需信息并且可由计算机1210访问的任何其他介质。
通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。
存储器1230和大容量存储1250是计算机可读存储介质的示例。取决于计算设备的确切配置和类型,存储器1230可以是易失性的(例如RAM)、非易失性的(例如ROM、闪存……)或是两者的某种组合。作为示例,基本输入/输出系统(BIOS),包括诸如在启动期间在计算机1210内的元件之间传输信息的基本例程,可被存储在非易失性存储器中,而易失性存储器可担当外部高速缓存存储器以便于处理器1220的处理等。
大容量存储1250包括相对于存储器1230用于存储大量数据的可移动/不可移动、易失性/非易失性计算机存储介质。例如,大容量存储1250包括但不限于,诸如磁盘或光盘驱动器、软盘驱动器、闪存存储器、固态驱动器、或记忆棒的一个或多个设备。
存储器1230和大容量存储1250可包括或其中存储有操作系统1260、一个或多个应用1262、一个或多个程序模块1264和数据1266。操作系统1260用于控制和分配计算机1210的资源。应用1262包括系统和应用软件中的一个或两个,并且可利用操作系统1260对资源的管理通过存储在存储器1230和/或大容量存储1250中的程序模块1264和数据1266来执行一个或多个动作。因此,应用1262可根据由此提供的逻辑来将通用计算机1210变成专用机器。
所要求保护主题的全部或各部分可以使用产生控制计算机以实现所公开功能的软件、固件、硬件或其任意组合的标准编程和/或工程技术来实现。作为示例而非限制,部署组件130或其一部分可以是应用1262或形成应用1262的一部分,并且包括存储在存储器和/或大容量存储1250中的一个或多个模块1264和数据1266,这些模块和数据的功能可在由一个或多个处理器1220执行时可实现。
根据一个特定实施例,处理器1220可与片上系统(SOC)或在单个集成电路基座上包括或换言之集成硬件和软件的类似体系结构相对应。此处,处理器1220可包括至少与处理器1220和存储器1230相似的一个或多个处理器以及存储器等。常规处理器包括最少量的硬件和软件并且广泛依赖于外部硬件和软件。作为对比,处理器的SOC实现更强大,因为它将硬件和软件嵌入其中以能够用最少的硬件和软件或不依赖于外部硬件和软件来启用特定功能。例如,部署组件130和/或相关联的功能可被嵌入到SOC体系结构中的硬件内。
计算机1210还包括通信地耦合到系统总线1240并方便与计算机1210的交互的一个或多个接口组件1270。作为示例,接口组件1270可以是端口(例如,串行、并行、PCMCIA、USB、火线……)或接口卡(例如,声音、视频……)等等。在一个示例实现中,接口组件1270可被具体化为用户输入/输出接口,该用户输入/输出接口使得用户能够通过一个或多个输入设备(例如,诸如鼠标等定点设备、跟踪球、指示笔、触摸垫、键盘、话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、照相机、其他计算机……)来将命令和信息输入到计算机1210中。在另一示例实现中,接口组件1270可被具体化为输出外围接口,该输出外围接口向显示器(例如,CRT、LCD、等离子……)、扬声器、打印机和/或其他计算机等提供输出。此外,接口组件1270可被具体化为网络接口,该网络接口使得能够诸如通过有线或无线通信链路与其他计算设备(未示出)通信。
以上所已经描述的内容包括所要求保护主题的各方面的示例。当然,出于描绘所要求保护主题的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,所要求保护主题的许多进一步的组合和排列都是可能的。从而,所公开的主题旨在涵盖落入所附权利要求书的精神和范围内的所有这样的变更、修改和变化。
Claims (10)
1.一种应用部署的方法,包括:
采用至少一个处理器(1220),所述至少一个处理器被配置来执行存储在存储器(1230)中的计算机可执行指令以执行以下动作:
分析计算机应用;以及
根据所述分析动作,为所述应用对于客执行环境的至少一部分生成部署代码。
2.如权利要求1所述的方法,其特征在于,还包括生成部署代码,所述部署代码向主执行环境注册所述应用的片段以及所述应用的一个或多个依赖片段。
3.如权利要求1所述的方法,其特征在于,还包括根据所述分析动作,为所述应用生成维护代码。
4.如权利要求1所述的方法,其特征在于,还包括根据所述分析动作,为所述应用生成卸载代码。
5.如权利要求1所述的方法,其特征在于,还包括根据安全模式生成部署代码。
6.一种便于应用部署的系统,包括:
耦合到存储器(1230)的处理器(1220),所述处理器(1220)被配置来执行存储在所述存储器(1230)中的以下计算机可执行组件:
第一组件(130),被配置成根据应用以及主执行引擎,自动为所述应用对于客执行引擎生成部署代码。
7.如权利要求6所述的系统,其特征在于,所述第一组件被配置成根据所述应用和所述主执行引擎自动生成卸载代码。
8.如权利要求6所述的系统,其特征在于,所述第一组件被配置成基于与所述主执行引擎相关联的安全模式生成所述部署代码。
9.如权利要求6所述的系统,其特征在于,所述主执行引擎是关系数据引擎。
10.如权利要求6所述的系统,其特征在于,所述客执行引擎是多个编程语言针对的运行时环境。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/950,810 | 2010-11-19 | ||
US12/950,810 US9959103B2 (en) | 2010-11-19 | 2010-11-19 | Code deployment assistance |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102567044A true CN102567044A (zh) | 2012-07-11 |
Family
ID=46065626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103861475A Pending CN102567044A (zh) | 2010-11-19 | 2011-11-18 | 代码部署协助 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9959103B2 (zh) |
CN (1) | CN102567044A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105103120A (zh) * | 2013-04-30 | 2015-11-25 | 惠普发展公司,有限责任合伙企业 | 特征标志之间的依赖性 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10320942B2 (en) | 2013-03-15 | 2019-06-11 | Gadget Software, Inc. | Dynamic user interface delivery system |
US10320885B2 (en) * | 2013-03-15 | 2019-06-11 | Gadget Software, Inc. | Method for single workflow for multi-platform mobile application creation and delivery |
US10326825B2 (en) | 2013-03-15 | 2019-06-18 | Gadget Software, Inc. | Apparatus for single workflow for multi-platform mobile application creation and delivery |
US10075560B2 (en) | 2013-03-15 | 2018-09-11 | Gadget Software, Inc. | User interface and content translation system |
US10496605B2 (en) | 2016-04-29 | 2019-12-03 | Splunk Inc. | Application deployment for data intake and query system |
CN106708500B (zh) * | 2016-08-26 | 2019-07-30 | 腾讯科技(深圳)有限公司 | 卸载界面的显示方法及装置 |
WO2019071511A1 (en) * | 2017-10-12 | 2019-04-18 | Hewlett-Packard Development Company, L.P. | SYNTAX OF DIAGRAM |
US20220171814A1 (en) * | 2020-11-30 | 2022-06-02 | Mastercard International Incorporated | Database query interface extension for machine learning algorithms in business intelligence applications |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188036A1 (en) * | 2002-03-22 | 2003-10-02 | Sun Microsystems, Inc. | Methods and systems for program migration |
US20050050071A1 (en) * | 2003-09-03 | 2005-03-03 | International Business Machines Corporation | Apparatus and method for maintaining databases on application servers |
CN1731738A (zh) * | 2005-08-30 | 2006-02-08 | 西安交通大学 | 大规模计算机集群系统节点的自动化快速部署方法 |
US20080196025A1 (en) * | 2007-02-12 | 2008-08-14 | Microsoft Corporation | Tier splitting support for distributed execution environments |
CN101320336A (zh) * | 2007-06-05 | 2008-12-10 | Sap股份公司 | 异构环境中的组件的部署计划 |
US20080320109A1 (en) * | 2007-06-22 | 2008-12-25 | Microsoft Corporation | Complex software deployment |
CN101382886A (zh) * | 2007-07-30 | 2009-03-11 | 奥多比公司 | 针对应用执行环境的应用跟踪 |
CN101739254A (zh) * | 2009-12-31 | 2010-06-16 | 山东中创软件商用中间件股份有限公司 | 一种实现多平台通信组件复用的方法及装置 |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6836883B1 (en) * | 2000-06-21 | 2004-12-28 | Microsoft Corporation | Method and system for compiling multiple languages |
US7136857B2 (en) | 2000-09-01 | 2006-11-14 | Op40, Inc. | Server system and method for distributing and scheduling modules to be executed on different tiers of a network |
US7010779B2 (en) * | 2001-08-16 | 2006-03-07 | Knowledge Dynamics, Inc. | Parser, code generator, and data calculation and transformation engine for spreadsheet calculations |
US20040064804A1 (en) * | 2002-09-26 | 2004-04-01 | Daniels Bruce K. | Generation of partitioned enterprise application using a high-level specification |
CN1811702B (zh) | 2004-08-16 | 2010-08-25 | 国际商业机器公司 | 用于向门户服务器应用环境自动部署门户应用的系统和方法 |
US9542175B2 (en) * | 2005-06-24 | 2017-01-10 | Oracle International Corporation | Continuous deployment |
US9727604B2 (en) * | 2006-03-10 | 2017-08-08 | International Business Machines Corporation | Generating code for an integrated data system |
US7739663B2 (en) * | 2006-05-16 | 2010-06-15 | International Business Machines Corporation | Method, system and program product for validating a runtime environment |
US20090204583A1 (en) * | 2006-06-08 | 2009-08-13 | International Business Machines Corporation | Method for providing access to data stored in a database to an application |
US7610293B2 (en) | 2006-10-11 | 2009-10-27 | Oracle International Corporation | Correlation of resource usage in a database tier to software instructions executing in other tiers of a multi tier application |
CA2682988A1 (en) * | 2007-04-05 | 2008-10-16 | Sentillion, Inc. | Augmenting a virtual machine hosting environment from within a virtual machine |
US8020144B2 (en) * | 2007-06-29 | 2011-09-13 | Microsoft Corporation | Metadata-based application deployment |
US7930273B1 (en) * | 2007-07-30 | 2011-04-19 | Adobe Systems Incorporated | Version management for application execution environment |
US20090199159A1 (en) | 2008-01-31 | 2009-08-06 | Microsoft Corporation | Declarative execution context splitting |
US9317255B2 (en) | 2008-03-28 | 2016-04-19 | Microsoft Technology Licensing, LCC | Automatic code transformation with state transformer monads |
US8806618B2 (en) * | 2008-03-31 | 2014-08-12 | Microsoft Corporation | Security by construction for distributed applications |
US20090265719A1 (en) * | 2008-04-18 | 2009-10-22 | Microsoft Corporation | Application macro recording utilizing method interception |
US9405555B2 (en) * | 2008-05-23 | 2016-08-02 | Microsoft Technology Licensing, Llc | Automated code splitting and pre-fetching for improving responsiveness of browser-based applications |
US8364751B2 (en) | 2008-06-25 | 2013-01-29 | Microsoft Corporation | Automated client/server operation partitioning |
US8645944B2 (en) * | 2008-08-18 | 2014-02-04 | Microsoft Corporation | Deployment of a solution artifact to a client application |
US8396845B2 (en) * | 2008-09-26 | 2013-03-12 | Microsoft Corporation | Data-tier application component |
US20100088283A1 (en) * | 2008-10-03 | 2010-04-08 | Microsoft Corporation | System and method for managing database applications |
US8819658B2 (en) * | 2009-12-17 | 2014-08-26 | Verizon Patent And Licensing Inc. | Methods and systems for managing update requests for a deployed software application |
EP2614432A4 (en) * | 2010-09-07 | 2014-05-14 | Hewlett Packard Development Co | SYSTEM AND METHOD FOR AUTOMATICALLY DEPLOYING A MULTI-COMPONENT COMPUTING ENVIRONMENT |
US9052976B2 (en) * | 2010-11-08 | 2015-06-09 | Mckesson Financial Holdings | Methods, apparatuses and computer program products for facilitating efficient deployment of software |
US9021465B2 (en) * | 2010-12-15 | 2015-04-28 | Red Hat Israel, Ltd. | Downloading guest software updates by a hypervisor |
US8707277B2 (en) * | 2011-05-02 | 2014-04-22 | Raytheon Company | Systems, methods, and language for SCA CORBA descriptor files |
US9383985B2 (en) * | 2011-06-10 | 2016-07-05 | Unisys Corporation | Automated modification of pre-generated MSI packaged applications |
US9250866B2 (en) * | 2011-06-20 | 2016-02-02 | Ebay Inc. | Systems and methods for incremental software deployment |
US9250892B2 (en) * | 2012-08-02 | 2016-02-02 | International Business Machines Corporation | Self-diagnosing systems using matrix barcodes |
WO2015105936A1 (en) * | 2014-01-10 | 2015-07-16 | Ciambella Ltd. | Method and apparatus for automatic device program generation |
US9619122B2 (en) * | 2014-01-10 | 2017-04-11 | Ciambella Ltd. | Method and apparatus for automatic device program generation |
US10268467B2 (en) * | 2014-11-11 | 2019-04-23 | A10 Networks, Inc. | Policy-driven management of application traffic for providing services to cloud-based applications |
US9778923B2 (en) * | 2015-08-12 | 2017-10-03 | Oracle International Corporation | Peoplesoft cloud manager |
US9940113B2 (en) * | 2015-09-09 | 2018-04-10 | International Business Machines Corporation | Big data assistant |
US9692653B1 (en) * | 2015-12-17 | 2017-06-27 | International Business Machines Corporation | Automatic generation of validators to validate deployment code used for configuring servers |
US9830248B2 (en) * | 2016-03-02 | 2017-11-28 | Bank Of America Corporation | System for automated code validation and deployment |
-
2010
- 2010-11-19 US US12/950,810 patent/US9959103B2/en active Active
-
2011
- 2011-11-18 CN CN2011103861475A patent/CN102567044A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188036A1 (en) * | 2002-03-22 | 2003-10-02 | Sun Microsystems, Inc. | Methods and systems for program migration |
US20050050071A1 (en) * | 2003-09-03 | 2005-03-03 | International Business Machines Corporation | Apparatus and method for maintaining databases on application servers |
CN1731738A (zh) * | 2005-08-30 | 2006-02-08 | 西安交通大学 | 大规模计算机集群系统节点的自动化快速部署方法 |
US20080196025A1 (en) * | 2007-02-12 | 2008-08-14 | Microsoft Corporation | Tier splitting support for distributed execution environments |
CN101320336A (zh) * | 2007-06-05 | 2008-12-10 | Sap股份公司 | 异构环境中的组件的部署计划 |
US20080320109A1 (en) * | 2007-06-22 | 2008-12-25 | Microsoft Corporation | Complex software deployment |
CN101382886A (zh) * | 2007-07-30 | 2009-03-11 | 奥多比公司 | 针对应用执行环境的应用跟踪 |
CN101739254A (zh) * | 2009-12-31 | 2010-06-16 | 山东中创软件商用中间件股份有限公司 | 一种实现多平台通信组件复用的方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105103120A (zh) * | 2013-04-30 | 2015-11-25 | 惠普发展公司,有限责任合伙企业 | 特征标志之间的依赖性 |
Also Published As
Publication number | Publication date |
---|---|
US20120131546A1 (en) | 2012-05-24 |
US9959103B2 (en) | 2018-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102567044A (zh) | 代码部署协助 | |
US6112304A (en) | Distributed computing architecture | |
EP3336690B1 (en) | Extensible data transformation authoring and validation system | |
TWI713846B (zh) | 領域模組運算單元,含有一企業之一模型之系統,單板運算單元,運算單元之網格,提供傳播可追溯性之方法,及非暫時性電腦程式產品 | |
CN103493011A (zh) | 与库操作系统的应用兼容性 | |
CN102804202B (zh) | 内容网格搜索 | |
CN102385513B (zh) | 反应式编程的编程语言支持 | |
CN102520991A (zh) | 高效的虚拟应用更新 | |
CN102236701A (zh) | 关于多个域的依赖图 | |
CN102902529A (zh) | 变换的上下文知晓数据源管理 | |
CN102664746A (zh) | 用于分布式数据中心各分量的在全局上健全且一致的配置管理 | |
CN102591925A (zh) | 以多维数据为中心的服务协议 | |
Elrom et al. | Neo blockchain and smart contracts | |
CN102541993A (zh) | 用于分布式计算的电子表格模型 | |
CN102591710B (zh) | 共享对象表示 | |
CN1936835A (zh) | 模块化计算机系统以及相关方法 | |
CN102460381A (zh) | 软件扩展分析 | |
CN113377342A (zh) | 一种项目构建方法、装置、电子设备及存储介质 | |
US7774442B2 (en) | Distributed configuration management using loosely-coupled action-style documents | |
Hurson et al. | Dataflow computers: Their history and future | |
US20140129934A1 (en) | Dynamic model-based management tooling | |
CN102426535A (zh) | 动态进程虚拟化 | |
WO2014074900A1 (en) | Packaging, storing and distributing guidance packages | |
McCool et al. | Programming using RapidMind on the Cell BE | |
CN102591933A (zh) | 批量操作 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150729 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150729 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120711 |