订阅者定义的动态事件制造技术

技术编号:15342836 阅读:31 留言:0更新日期:2017-05-17 00:16
提供了一种修改源代码的编程单元的执行行为的计算机实现的方法。所述方法包括加载源代码的编程单元并确定是否针对该编程单元定义了至少一个定制。至少一个定制基于所述定制的先决条件是否被满足而被选择性地执行。

【技术实现步骤摘要】
【国外来华专利技术】订阅者定义的动态事件背景计算机系统当前被广泛应用。一些此类系统在它们被部署在终端用户的场所之前被(某些在很大程度上)定制。作为示例,一些此类计算机系统包括业务系统,诸如顾客关系管理(CRM)系统、企业资源规划(ERP)系统、业务线(LOB)系统等。在这些类型的系统中,用户或顾客首先购买通用业务系统,且用户或顾客通常对该通用业务系统进行定制、扩展或其它修改,以便获得其自己的定制部署。通常,这样的定制已经要么通过对源代码的直接修改要么通过使原始软件的作者将许多钩点(hook-point)插入到软件源代码中而被提供。对源代码的直接修改为定制提供了最大的灵活性。通过这样的修改,可以对软件做出任意修改。当原始软件需要被修改时,例如当需要更新或补丁时,这种方案的限制变得明显。在这样的实例中,对原始源代码的修改可能不再与各种定制互操作。这样,开发者必须返回到修改并仔细地将每个先前生成的定制对接或修改到经更新/打补丁的源代码。在大多数情况下,这种手动且乏味的过程往往需要显著的开发者时间并因此是非常昂贵的。在原始源代码中提供许多钩点是在其中可以实现定制的另一种方式。原始应用的作者可以将许多钩点插入在做出呼出的地方。这被称为“事件”。在事件中,原始作者将在源代码中所定义的各位置处插入一个或多个呼出。每个这样的呼出将调出传递某些预定义参数的指定事件。另外,在运行时,呼出将检查以查明是否存在任何对事件的订阅者。如果存在对事件的订阅者,那么订阅者代码被加载并被执行。标准事件的一个限制是软件的原始作者可能没有在代码中的精确位置处提供需要应用定制的开发者所需要的钩点。而且,原始作者将定义呼出的合约或参数。在一些实例中,如果呼出的合约或参数被原始作者通过升级或补丁改变,则依赖于所述呼出的定制可能失败。概述提供了一种修改源代码的编程单元的执行行为的计算机实现的方法。所述方法包括加载源代码的编程单元并确定是否针对该编程单元定义了至少一个定制。至少一个定制基于所述定制的先决条件是否被满足而被选择性地执行。提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。所要求保护的主题不限于解决在背景中提及的任何或所有缺点的实现。附图简述图1是根据本专利技术一实施例的在其中开发者提供了与原始源代码有关的定制的环境的图示。图2是通过执行流水线来执行软件应用的处理器的图示。图3是根据本专利技术的一个实施例的执行软件应用的计算机实现的方法。图4是根据本专利技术的一个实施例的定义订阅者动态事件的方法。图5示出在其中本专利技术的实施例是特别有用的示例性架构的框图。图6示出在其中本专利技术的实施例是有用的云计算架构。图7-10示出在其中本专利技术的实施例是有用的各种移动设备。图11是一个说明性计算环境的框图。详细描述本专利技术的各实施例通常允许将任意定制应用到代码的基本上任意的可执行单元,包括源代码的方法、函数、模块和甚至一个或多个行,而无需修改原始源代码。根据在此所述的实施例,执行原始源代码的平台将提供“动态钩”,所述动态钩允许生成与原始源代码有关的定制的开发者订阅该开发者定义的一个或多个事件。只要所定义的事件的先决条件仍然有效,就可以在不影响定制的操作的情况下提供来自软件制造商的对原始源代码的改变,例如更新和/或补丁。图1是根据本专利技术一实施例的在其中开发者14提供了与原始源代码12有关的定制18的环境的图示。在环境10中,已经从源代码发布者,例如微软公司,获得了源代码12。此处使用的“源代码”旨在意指被编译或汇编到计算机可执行程序中的命令的文本列表。源代码可以以许多已知的或将来开发的编程语言中的任意编程语言来提供。通常,源代码将由软件产品的一个或多个作者逐行地输入。如上所述,许多软件产品旨在在被终端用户部署之前就被定制。这样的软件产品的一个示例是企业资源计划系统。然而,无论何时期望在无需改变软件产品的源代码的情况下改变软件产品的行为,本专利技术的各实施例都是可应用的。在图1示出的示例中,开发者14具有对源代码12的访问,如由虚线16所示。这样的访问可以是通过任意合适的方式的,包括在线访问或离线访问(例如源代码的硬拷贝)。源代码可以被用作参考。为了定制软件产品,开发者14查看源代码12并生成一个或多个定制18。这些定制18是动态事件定义的形式,如将在下面详细描述的。定制18被提供给执行平台20,该执行平台将通常已经具有原始、非改动状态的源代码12。执行平台20是硬件、软件或其组合的任意合适的安排,所述安排能够接收源代码、基于源代码生成机器可执行代码并执行所述机器可执行代码。这样,执行平台20可以是单个个人计算机、在企业中工作的一组服务器、设备的单核或在云计算环境中工作的一大组服务器。执行平台20可以包括一个或多个处理器24以及合适的存储组件26以支持编程编译和/或执行。执行平台20将原始源代码12与定制18一起执行,以向与执行平台20交互的一个或多个客户机22提供经定制的软件操作。在一个示例中,客户机22是通过通信链接28在操作上耦合到执行平台20的计算机,以便允许客户机22与由执行平台20所执行的软件产品交互。链接28可以包括任何合适的通信链接,包括经由LAN或WAN的有线或无线通信。图2是通过执行流水线30执行软件应用的执行平台的处理器的图示。虽然,流水线30被示为包括编程源单元1··N的线性流水线,但提供这样的简化是说明编程执行通常通过命令序列来步进。在图2中所示的示例中,编程执行当前在单元5上,如指针32所示。一旦单元5的执行完成,处理器24将开始执行单元6。然而,在这样的执行之前,处理器将确定是否任何定制已经相对于编程单元6被附加或定义。借助于其定义,这样的定制将具有指定它是应该在单元6之前、取代单元6、或在单元6之后运行的指示因此,执行平台20将根据定制定义,在单元6之前、取代单元6、或在单元6之后执行与定制对应的代码。一旦编程单元6和任何相关联的定制已经执行,执行平台就移至编程单元7。如此处所使用的,编程单元旨在意指任何一个或多个可执行代码行,其行可以包括例如一个方法。因此,由于定制是在任意编程单元之前、取代任意编程单元、或在任意编程单元之后注入,本专利技术的各实施例提供了开发者可以在源代码中的任意点定义“钩”的显著的灵活性。图3是根据本专利技术的一个实施例的执行软件应用的方法。方法40在框42开始,在此处(在图1和2中示出的)处理器24加载方法或编程单元。接着,在框44,处理器24检查以查明是否存在与在框42处加载的方法或编程单元相关联的任何定制。如果是,则控制传递到框46,在此处与加载的方法或单元相关联的定制被处理器24加载。接着,基于定制的定义,先于在框42处加载方法或单元、取代在框42处加载方法或单元,或后于在框42处加载方法或单元,处理器24在框48处执行定制。在定制没有取代加载的方法或单元的示例中,如由所述定制所定义的,在执行所述定制之前或之后所述加载的方法或单元也由处理器24在框48处执行。控制随后传递至框50,在此处下一编程单元/方法被加载。如在图3中所示,如果给定的方法或编程单元不具有相关联的定制,则控制从判定框44传递至框50。方法40将继本文档来自技高网...
订阅者定义的动态事件

【技术保护点】
一种被配置为执行源代码的编程单元的计算机系统,所述计算机系统包括:被配置为执行所述源代码的编程单元的处理器;适用于存储所述源代码的编程单元和关于所选的源代码的编程单元所定义的至少一个定制的存储组件;其中,处理器被配置为访问所述存储组件并加载所述源代码的编程单元,并确定是否相对于所加载的源代码的编程单元定义了一个定制并基于所述定制的定义选择性地执行所述定制。

【技术特征摘要】
【国外来华专利技术】2014.06.20 US 62/015,075;2014.09.25 US 14/496,1171.一种被配置为执行源代码的编程单元的计算机系统,所述计算机系统包括:被配置为执行所述源代码的编程单元的处理器;适用于存储所述源代码的编程单元和关于所选的源代码的编程单元所定义的至少一个定制的存储组件;其中,处理器被配置为访问所述存储组件并加载所述源代码的编程单元,并确定是否相对于所加载的源代码的编程单元定义了一个定制并基于所述定制的定义选择性地执行所述定制。2.一种修改源代码的编程单元的执行行为的计算机实现的方法,所述方法包括:从存储组件加载所述源代码的编程单元;确定针对从所述存储组件加载的所述源代码的编程单元是否定义了至少一个定制;以及基于所述至少一个定制的先决条件是否被满足来在所述计算机上选择性地执行所述至少一个定制。3.如权利要求2所述的计算机实现的方法,其特征在于,其中所述源代码的编程单元是源代码的单个行。4.如权利要求2所述的计算机实现的方法,其特征在于,其中所述源代码的编程单元包括源代码的多个行。5.如权利要求2所述的计算机实现的方法,其特征在于,其中所述至少一个定制在所述源代码的编程单元之前选择性地执行。6.如权利要求2所述的计算机实现的方法,其特征在于,其中所述至少一个定制在所述源代码的编程单元之后选择性地执行。7.如权利要求2所述的计算机实现的方法,其特征在于,其中所述至少一个定制的选择性执行...

【专利技术属性】
技术研发人员:T·海尔斯伯格E·N·克里斯多夫森
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1