平码五不中公式规律
  • / 29
  • 下载费用:30 金币  

订阅者定义的动态事件.pdf

关 键 ?#21097;?/dt>
订阅 定义 动态 事件
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201580033365.7

申请日:

2015.06.19

公开号:

CN106663004A

公开日:

2017.05.10

当前法律状态:

实审

?#34892;?#24615;:

审中

法?#19978;?#24773;: 实质审查的生效IPC(主分类):G06F 9/44申请日:20150619|||公开
IPC分类号: G06F9/44 主分类号: G06F9/44
申请人: 微软技术许可有限责任公司
发明人: T·海尔斯伯格; E·N·克里斯多夫森
地址: 美国华盛顿州
优先权: 2014.06.20 US 62/015,075; 2014.09.25 US 14/496,117
专利代理机构: 上海专利商标事务所有限公司 31100 代理人: 顾嘉运
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201580033365.7

授权公告号:

|||

法律状态公告日:

2017.06.06|||2017.05.10

法律状态类型:

实质审查的生效|||公开

摘要

提供了一种修改源代码的编程单元的执行行为的计算机实现的方法。所述方法包括加载源代码的编程单元并确定是否针对该编程单元定义了至少一个定制。至少一个定制基于所述定制的先决条件是否被满足而被选择性地执行。

权利要求书

1.一种被配置为执行源代码的编程单元的计算机系统,所述计算机系统包括:
被配置为执行所述源代码的编程单元的处理器;
适用于存储所述源代码的编程单元和关于所选的源代码的编程单元所定义的至少一
个定制的存储组件;
其中,处理器被配置为访问所述存储组件并加载所述源代码的编程单元,并确定是否
相对于所加载的源代码的编程单元定义了一个定制并基于所述定制的定义选择性地执行
所述定制。
2.一种修改源代码的编程单元的执行行为的计算机实现的方法,所述方法包括:
从存储组件加载所述源代码的编程单元;
确定针?#28304;?#25152;述存储组件加载的所述源代码的编程单元是否定义了至少一个定制;以

基于所述至少一个定制的先决条件是否被满足来在所述计算机上选择性地执行所述
至少一个定制。
3.如权利要求2所述的计算机实现的方法,其特征在于,其中所述源代码的编程单元是
源代码的单个行。
4.如权利要求2所述的计算机实现的方法,其特征在于,其中所述源代码的编程单元包
括源代码的多个行。
5.如权利要求2所述的计算机实现的方法,其特征在于,其中所述至少一个定制在所述
源代码的编程单元之前选择性地执行。
6.如权利要求2所述的计算机实现的方法,其特征在于,其中所述至少一个定制在所述
源代码的编程单元之后选择性地执行。
7.如权利要求2所述的计算机实现的方法,其特征在于,其中所述至少一个定制的选择
性执行包括在执行期间向所述至少一个定制提供对所述源代码的编程单元的变量的访问。
8.如权利要求7所述的计算机实现的方法,其特征在于,其中所述访问是由所述至少一
个定制中的范围定义来确定的。
9.如权利要求2所述的计算机实现的方法,其特征在于,其中所述先决条件包括在所述
源代码的编程单元中的变量的存在。
10.一种定义与源代码的编程单元有关的定制的计算机实现的方法,所述方法包括:
标识源代码的编程单元;
指定与所标识的源代码的编程单元有关的定制执行;
指定所述定制执行的范围;
存储所述源代码的编程单元的标识、所指定的定制执行信息以及范围信息;以及
将所述定制定义提供给执行平台。
11.如权利要求10所述的计算机实现的方法,其特征在于,并进一步定义了在所述定制
将由所述执行平台执行之前必须存在于所述源代码的编程单元中的至少一个先决条件。
12.如权利要求11所述的计算机实现的方法,其特征在于,其中所述先决条件包括在所
述定制将由所述执行平台执行之前必须存在于所述源代码的编程单元中的参数。
13.如权利要求10所述的计算机实现的方法,其特征在于,指定与所标识的源代码的编
程单元有关的定制执行包括所述定制将取代所标识的源代码的编程单元来执行的指示。
14.如权利要求13所述的计算机实现的方法,其特征在于,其中所述定制执行的范围被
定义使得所述定制将能够访问它正在取代的所述源代码的编程单元的变量。
15.如权利要求10所述的计算机实现的方法,其特征在于,指定与所标识的源代码的编
程单元有关的定制执行包括所述定制将在所标识的源代码的编程单元之后绝对最后执行
的指示。

说明书

订阅者定义的动态事件

背景

计算机系统当前被广泛应用。一些此类系统在它们被部署在终端用户的场所之前
被(某些在很大程度上)定制。作为示例,一些此类计算机系统包括业务系统,诸如顾客关系
管理(CRM)系统、企业资源规划(ERP)系统、业务线(LOB)系统?#21462;?#22312;这些类型的系?#25345;校?#29992;户
或顾客首先购买通用业务系统,且用户或顾客通常对该通用业务系统进行定制、扩展或其
它修改,以便获得其自己的定制部署。

通常,这样的定制已经要么通过对源代码的直接修改要么通过使原始软件的作者
将许多钩点(hook-point)插入到软件源代码中而被提供。

对源代码的直接修改为定制提供了最大的灵活性。通过这样的修改,可以对软件
做出?#25105;?#20462;改。当原始软件需要被修改时,例如当需要更新或补丁时,这种方案的限制变得
明显。在这样的实例中,对原始源代码的修改可能不再与各种定制互操作。这样,开发者必
须返回到修改并仔细地将每个先前生成的定制对接或修改到经更新/打补丁的源代码。在
大多数情况下,这种手动且乏味的过程往往需要显著的开发者时间并因此是非常昂贵的。

在原始源代码中提供许多钩点是在其中可以实现定制的另一种方式。原?#21152;?#29992;的
作者可以将许多钩点插入在做出呼出的地方。这被称为“事件”。在事件中,原始作者将在源
代码中所定义的各位置处插入一个或多个呼出。每个这样的呼出将调出传递某些预定义参
数的指定事件。另外,在运行时,呼出将检查以查明是否存在任何对事件的订阅者。如果存
在对事件的订阅者,那么订阅者代码被加载并被执行。标准事件的一个限制是软件的原始
作者可能没?#24615;?#20195;码中的精确位置处提供需要应用定制的开发者所需要的钩点。而且,原
始作者将定义呼出的?#26174;?#25110;参数。在一些实例中,如果呼出的?#26174;?#25110;参数被原始作者通过
升级或补丁改变,则?#35272;?#20110;所述呼出的定制可能失败。

概述

提供了一种修改源代码的编程单元的执行行为的计算机实现的方法。所述方法包
括加载源代码的编程单元并确定是否针对该编程单元定义了至少一个定制。至少一个定制
基于所述定制的先决条件是否被满足而被选择性地执行。

提供本概述以便以简化的形式介绍以下在详?#35813;?#36848;中进一步描述的一些概念。本
概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求
保护的主题的范围。所要求保护的主题不限于解决在背景中提及的任何或所有缺点的实
现。

附图简述

图1是根据本发明一实施例的在其中开发者提供了与原始源代码有关的定制的环
境的图示。

图2是通过执行流水线来执行软件应用的处理器的图示。

图3是根据本发明的一个实施例的执行软件应用的计算机实现的方法。

图4是根据本发明的一个实施例的定义订阅者动态事件的方法。

图5示出在其中本发明的实施例是特别有用的示例性架构的框图。

图6示出在其中本发明的实施例是有用的云计算架构。

图7-10示出在其中本发明的实施例是有用的各种移动设备。

图11是一个说明性计算环境的框图。

详?#35813;?#36848;

本发明的各实施例通常允许将?#25105;?#23450;制应用到代码的基本?#20808;我?#30340;可执行单元,
包括源代码的方法、函数、模块和甚至一个或多个行,而无需修改原始源代码。根据在此所
述的实施例,执行原始源代码的平台将提供“动态?#22330;保?#25152;述动态钩允许生成与原始源代码
有关的定制的开发者订阅该开发者定义的一个或多个事件。只要所定义的事件的先决条件
仍然?#34892;В?#23601;可以在不影响定制的操作的情况下提供来自软件制造商的对原始源代码的改
变,例如更新和/或补丁。

图1是根据本发明一实施例的在其中开发者14提供了与原始源代码12有关的定制
18的环境的图示。在环境10中,已经从源代码发布者,例如微软公司,获得了源代码12。此处
使用的“源代码”旨在意指被编译或汇编到计算机可执行程序中的命令的文本列表。源代码
可以以许多已知的或将来开发的编程语言中的?#25105;?#32534;程语言来提供。通常,源代码将由软
件产品的一个或多个作者逐行地输入。

如上所述,许多软件产?#20998;?#22312;在被终端用户部署之前就被定制。这样的软件产品
的一个示例是企业资源计划系统。然而,无论何时期望在无需改变软件产品的源代码的情
况下改变软件产品的行为,本发明的各实施例都是可应用的。在图1示出的示例中,开发者
14具有对源代码12的访?#21097;?#22914;由虚线16所示。这样的访问可以是通过?#25105;?#21512;适的方式的,包
括在线访问或离线访问(例如源代码的?#37096;?#36125;)。源代码可以被用作参考。为了定制软件产
品,开发者14查看源代码12并生成一个或多个定制18。这些定制18是动态事件定义的形式,
如将在下面详?#35813;?#36848;的。定制18被提供给执行平台20,该执行平台将通常已经具?#24615;?#22987;、非
改动状态的源代码12。执行平台20是硬件、软件或其组合的?#25105;?#21512;适的安排,所述安排能够
接收源代码、基于源代码生成机器可执行代码并执行所述机器可执行代码。这样,执行平台
20可以是单个个人计算机、在企业中工作的一组服务器、设备的单核或在云计算环?#25345;?#24037;
作的一大组服务器。执行平台20可以包括一个或多个处理器24以及合适的存储组件26以支
持编程编译和/或执行。

执行平台20将原始源代码12与定制18一起执行,以向与执行平台20交互的一个或
多个客户机22提供经定制的软件操作。在一个示例中,客户机22是通过通信链接28在操作
上耦合到执行平台20的计算机,以便允许客户机22与由执行平台20所执行的软件产?#26041;?br />互。链接28可以包括任何合适的通信链接,包括经由LAN或WAN的有线或无线通信。

图2是通过执行流水线30执行软件应用的执行平台的处理器的图示。虽然,流水线
30被示为包括编程源单元1··N的线性流水线,但提供这样的简化是说明编程执行通常通
过命令序列来步进。在图2中所示的示例中,编程执行当前在单元5上,如指针32所示。一旦
单元5的执行完成,处理器24将开始执行单元6。然而,在这样的执行之前,处理器将确定是
否任何定制已经相对于编程单元6被附加或定义。借助于其定义,这样的定制将具有指定它
是应该在单元6之前、取代单元6、或在单元6之后运行的指示因此,执行平台20将根据定制
定义,在单元6之前、取代单元6、或在单元6之后执行与定制对应的代码。一旦编程单元6和
任何相关联的定制已经执行,执行平台就移至编程单元7。如此处所使用的,编程单元旨在
意指任何一个或多个可执行代码行,其行可以包括例如一个方法。因此,由于定制是在?#25105;?br />编程单元之前、取代?#25105;?#32534;程单元、或在?#25105;?#32534;程单元之后注入,本发明的各实施例提供了
开发者可以在源代码中的?#25105;?#28857;定义“?#22330;?#30340;显著的灵活性。

图3是根据本发明的一个实施例的执行软件应用的方法。方法40在框42开始,在此
处(在图1和2中示出的)处理器24加载方法或编程单元。接着,在框44,处理器24检查以查明
是否存在与在框42处加载的方法或编程单元相关联的任何定制。如果是,则控制传递到框
46,在此处与加载的方法或单元相关联的定制被处理器24加载。接着,基于定制的定义,先
于在框42处加载方法或单元、取代在框42处加载方法或单元,或后于在框42处加载方法或
单元,处理器24在框48处执行定制。在定制没有取代加载的方法或单元的示例中,如由所述
定制所定义的,在执行所述定制之前或之后所述加载的方法或单元也由处理器24在框48处
执行。控制随后传递至框50,在此处下一编程单元/方法被加载。如在图3中所示,如果给定
的方法或编程单元不具有相关联的定制,则控制?#20248;?#23450;框44传递至框50。方法40将继续循
?#20998;?#21040;程序执行被停止或完成。

图4是根据本发明的一个实施例的定义动态事件的方法。方法60在框62处开始,在
此处,开发者标识源代码的定制将要与其相关联的特定单元。源代码的所述单元可以是源
代码的函数、方法、模块或个体行。源代码的所述单元的标识可以通过函数或模块的名字,
或在源代码的个体行的情况下,是源代码的在所选行之前的一个或多个行的标识以及源代
码的在源代码的所选行之后的一个或多个行的标识。接着,在框64,开发者选择所述定制将
如何相对于原始源代码来执行。例如,定制可以在66之前、取代68,或在70之后执行所标识
的源代码。而且,当定制取代所标识的源代码执行时,如果需要的话,所述定制可以将所标
识的域代码作为来自定制的子调用来运行。另外,如在框72处所指示的,还可以构想其它执
行序列指示符。例如,在多个定制将要在源代码的所选单元之前被执行的情形中,一个定制
可以被指示为“绝对最先?#34987;頡?#32477;对最后”。接着,在框74,开发者指示定制的范围。该范围指
示将通常允许定制能够访问源代码的所选单元内的变量和其它信息。在框76,开发者可以
提供使用在源代码的所选单元内的变量和其它信息中的一些或全部的代码。这允许原文在
所有方面改变都改变,而所订阅的变量保持不变。而且,到变量“按名字(by name)”的链接
为原始开发者提供了一种故意中断定制可能具有的任何?#26174;?#30340;途?#19969;R源?#26041;式,开发者可
以简单地改变变量的名字,这将要求?#35272;?#20110;原始变量名的定制将需要被重新访问。最后,在
框78,定制被保存并提供给执行平台以用于以原始、未经修改的源代码执行。

在下面的示例中,表1提供了计算给定订单的折扣作为下订单的过程的部分的某
种伪代码:



表1

在表1中阐明的示例中,开发者(以提供对10%的折扣计算的改变为任务)可能希
望提供定制。例如,如果总量大于2000,则开发者可能需要加入额外的5%折扣。为了在数量
超过2000时提供15%折扣,或如果数量大于2000提供原始折扣的150%,开发者可以定义如
表2所阐述的定制。该定制允许在表1中所阐述的原始代码的行为被修改,而无需改变任何
原始代码。



表2

在表2中的伪代码与表1中由具?#24615;?#22987;方法的名字的HookMethod(钩方法)定义所
提供的原始CalculateDiscount(计算折扣)方法相关联。该HookMethod在元数据中被定义。
在所示的示例中,定义是使用C#样式句法中的属性。然而,这只是示例并且可以使用任何其
他合适的样式。原始方法与表2的伪代码的关联性,通知执行平台,表2的代码与表1中阐述
的原始方法相关联。另外,通过设置“Run=AfterOriginal?#20445;?#25191;行平台将在表1的代码被执
行之后再执行表2的代码。MyOwnCalculateDiscount(我自己计算的折扣)的声明列出了需
要从原始方法中提出的参数、行。另外,MyOwnCalculateDiscount设置范围
“OriginalScope_org?#20445;?#20351;得定制将能够访问来自原始方法的参数和变量。_org的所有使用
将被执行平台跟踪,并且在编译之后,编译器将在元数据中存储对
MyOwnCalculateDiscount将通过CalculateDiscount顺序地被调用并且
MyOwnCalculateDiscount将访问行(参数)、数量(作为本地变量)以及ReturnValue(原始返
回值)的指示。

在运行时,执行平台20现在将在从原始CalculateDiscount返回之前调用
MyOwnCalculateDiscount,允许MyOwnCalculateDiscount提供基本?#20808;?#20309;期望的经定制的
功能。_org范围变量将实际?#29616;?#31034;原始变量。

在原始代码被更新、打补丁或?#31245;?#22987;软件发布者简单改变的情况下,本发明的各
实施例是特别有用的。例如,在下面的表3中,原始方法CalculateDiscount已经被修改为包
括customer(客户)和date(日期)信息。



表3

借助于所存储的与MyOwnCalculateDiscount有关的元数据,显然,在经改变的源
代码中仍然满足MyOwnCalculateDiscount的先决条件。具体来说,方法CalculateDiscount
仍然存在,并且在其参数中它仍然具有“Lines[]lines”参数以及名为数量的本地变量。这
样,对源代码的改变将不会影响由开发者为定制定义的?#26114;显肌薄yOwnCalculateDiscount
将不会知晓也不会使用新的参数Customer或Date。然而,MyOwnCalculateDiscount不将这
样的参数作为其?#26174;?#30340;部分来列出。这样,MyOwnCalculateDiscount将继续运行对数量和
返回值的?#23454;?#25805;作。然而,如果在?#26174;?#20013;由开发者所指定的?#25105;?#39033;(例如方法的名字、行参
数或数量变量)在经更新的源代码中被改变或?#22659;?#37027;么在应用定制时?#26174;?#23558;中断并导致
错误。

在MyOwnCalculateDiscount中特别注意的是所述方法是用“Lines[]lines”参数
定义的,但所述参数没有被MyOwnCalculateDiscount使用的事实。然而,通过开发者仍然要
求“Lines[]lines?#20445;?#23427;已经成为定制的?#26174;?#30340;部分并因此需要成为原始签名的部分。这在
开发者通过这么做可以?#35272;?#20110;变量的情况下特别有利,尽管定制不需要它。换句话说,如果
CalculateDiscount方法被改变使得在原始方法中不再需要所述行,定制应该中断(即通过
应用定制错误来通知),使得开发者可以检查定制以查明代码是否仍然?#34892;А?#36825;允许开发者
将?#26174;?#23450;义为如所期望的那样细化(接近)原始代码。在?#26174;?#20013;要求的?#38468;?#36234;多,当原始代
码被改变时中断的几?#35797;?#22823;。反之也是正确的。具体来说,如果对原始代码的更新的开发者
希望确保在行上操作的所有定制被要求重新访问它们的定制,开发者可以改变变量的名
字,这将中断?#26174;肌?br />

(下述)表4示出当CalculateDiscount被调用时被执行的某种伪代码的示例。





表4

如可见,执行平台20将代码注入以检查正被调用的方法是否已经被挂钩并且如果
是则将把所有相关的信息传递给机制,所述机制过滤所述信息并最终调用被挂钩到所述方
法的定制。在表4中示出的示例仅仅是出于说明的目的被提供,在实际实?#31181;校?#38468;加优化可
以被使用并且“ReplaceOriginal(替代原始)”机制也可以被提供。

在上述示例中提供的所有伪代码仅仅出于说明目的。本发明的各实施例可以应用
于使用源代码的?#25105;?#32534;程语言。在一些示例中,本发明的各实施例提供了一种元数据驱动
的挂钩机制,其中订阅者定义了原始源代码的?#26174;?#23545;作者(contract vs.an author)。只要
?#26174;?#21487;被履行,就可以对底层源代码做出升级和其它改变,而无需中断定制。另外,简单地
通过查阅元数据和源代码就确定这样的?#26174;?#26159;否可以被履行是可能的。这样,在中断或其
它异常可以被确定之前,代码不需要被运行。

如上所阐述的,存在定制可以被挂钩到原始源代码的许多方式。Run=
AfterOriginal指示告知执行平台20原始源代码应该首选运行,随后是定制。一种替代是
Run=BeforeOriginal,这将允许定制在将控制传递至原始方法之前改变?#25105;?#38416;述和可能
的类变量。还有另一个替代为Run=ReplaceOriginal,这将取消对原始源代码的调用并仅
仅调用定制。如果开发者希望覆盖整个方法,则可以使用后者。指示Run=ReplaceOriginal
要求执行框架20在中断?#22791;?#36394;对原始代码做出的改变,因为在源代码升级或改变之后所述
定制现在正在移除“未知的”代码。另外,当使用ReplaceOriginal时,_org变量应该包含
CallOriginal方法,这样如果需要的话可以对原始方法做出调用,在此之后定制将再次获
得控制和完成其工作。

在此所述的在定制中使用的代码的特殊之处在于所述代码所使用的所有构造在
需要时都是“间接”针对底层实变量。这当中的一些可以在编译时发生而一些可以在运行时
发生,例如定制的代码可以访问项目表,而无需具有关于这样的表的所有字段的信息。然
而,只要项目表具有由定制所使用的字段,所述定制就将正确地运作。

可以理解的是,本发明的各实施例是可应用于各种各样的计算环境的。下面是在
其中本发明的实施例可以是特别有利的计算环境的一些示例。

图5示出其中本文中描述的各实施例是有用的一个示例性架构的框图。架构100包
括顾客业务系统101(其可以是在场系统、基于云的系统、或另一系统)。业务系统101可被用
户通过由业务系统101或由用户设备116生成的用户界面115来访问。在一个实施例中,用户
界面115具有用户输入机制117,用户114可致动该用户输入机制以便操纵业务系统101。

顾客业务系统101解说性地包括处理器102、数据存储104、用户界面组件105、更新
安装器组件106、冲突解决组件119和业务过程组件121。数据存储104解说性地包括数据
108、应用110、描述业务过程112的信息、描述工作流114的信息以及其它项107。在一个实施
例中,应用110包括被用来运行业务系统101中的业务过程112和工作流114的业务逻辑。应
用110解说性地对数据108操作,该数据可包括表示业务系统101中的项的实体。从而,应用
110可包括总分类账应用、?#25191;?#24212;用、允许用户跟踪业务机会、跟踪业务系?#25345;?#30340;销售或生
产的应用、或各种其它业务应用。实体例如包括表示顾客的顾客实体、表示业务机会的机会
实体、表示?#25191;?#39033;的?#25191;?#23454;体、表示报价和提议的报价和提议实体?#21462;?#25968;据108可包括各种
其它实体和数据,且上面提及的那些仅是作为示例提及的。用户可解说性地访?#20351;?#23458;业务
系统101以便执行在执行采用业务系统101的组织的业务中被完成的活动、任务、工作流?#21462;?br />

本讨论提到了处理器和服务器。在一个实施例中,处理器和服务器包括具有相关
联的存储器和时序电路系统(未分别示出)的计算机处理器。它们是它们所属的系统或设备
的功能部分,且由这些系?#25345;?#30340;其他组件或项的功能来激活并促成这些功能。

?#22266;?#35770;了数个数据存储。将注意,它们可各自被分解成多个数据存储。它们全部可
位于访问它们的系统的本地,全部可以是远程的,或一些可以在本地而其他在远程。本文构
想了所有这些配置。

同样,附图示出了具有归属于每一框的功能的多个框。将注意,可以使用更少的
框,使得功能由更少的组件来执行。同样,可以使用更多框,其中功能被分布在更多组件之
间。

图6是图5中所示的架构100的框图,不同之处在于其元件被部署在云计算架构500
中。术语“云”、“基于云的系统”、“基于云的架构?#34987;?#31867;似术语指代设备(例如,服务器计算
机、路由器等)的网络。云计算提供了不要求终端用户知晓交付服务的系统的物理位置或配
置的计算、软件、数据访问和存储服务。在各个实施例中,云计算通过诸如因特网之类的广
域网使用合适的协议来交付服务。例如,云计算提供者通过广域网交付应用,并且它们可以
通过web浏览器或任何其他计算组件被访问。架构100的软件或组件以及相对应的数据可被
存储在远程位置处的服务器上。云计算环?#25345;?#30340;计算资源可以被整合在远程数据?#34892;?#20301;置
处或者它们可以是分散的。云计算基础结构可以通过共享数据?#34892;?#26469;交付服务,即使在用
户看来它们是单个访?#23454;恪?#22240;此,在此所述的组件和功能可?#28304;?#20351;用云计算架构的远程位
置处的服务提供者来提供。替代地,它们可?#28304;?#24120;规的服务器中提供,或者它们可以直接地
或以其他方式安装在客户端设备上。

本说明书旨在包括公共云计算和私?#24615;?#35745;算两者。云计算(公共和私有两者)提供
了基本无缝的资源联营以及对管理和配置底层硬件基础结构的?#26723;?#30340;需求。

公共云由供应商管理,并且通常支持使用同一基础结构的多个消费者。此外,与私
?#24615;?#30456;反,公共云能够将终端用户从管理硬件中释放出来。私?#24615;?#21487;由机构本身管理,并且
基础结构通常不与其他机构共享。该机构在某种程度?#20808;?#28982;维护着硬件,诸如安装和维修
?#21462;?br />

在图6中所示的实施例中,一些项与图5中所示的那些是类似的,并且它们被类似
地编号。图6具体地示出系统101可位于云502(可以是公共的、私有的或者其中某些部分是
公共的而某些部分是私有的组合)中。因此,用户使用客户机设备22通过云502来访问那些
系统。

图6还描绘了云架构的另一实施例。图6示出还构想了架构100的某些元素被置于
云502中而其他元素没有被置于云502中。作为示例,数据存储104可被置于云502的外部,并
且通过云502来被访问。无论它们位于哪里,它们都可直接由客户机设备22通过网络(广域
网或局域网)访?#21097;?#23427;们可由服务主存在远程?#38236;?#22788;,或者它们可作为通过云来提供或通过
驻留在云中的连接服务来访问的服务。本文构想了所有这些架构。

还将注意,架构100或其部分可被采用在各种各样不同的设备上。这些设备中的某
些包括:服务器、台式计算机、膝上型计算机、平板计算机、或其他移动设备,诸如掌上计算
机、蜂窝电话、智能电话、多媒体播放器、个人数?#31181;?#29702;?#21462;?br />

图7是可被用作其中可部署本发明的系统(或其部分)的用户或客户的手持式设备
216的手持式或移动计算设备的一个实施例的简化框图。图7-10是手持式或移动设备的示
例。

图7提供了客户机设备216的组件的总体框图,该客户机设备216可以运行架构100
的组件或与架构100交互。在设备216中,提供了通信链路213,该通信链路允许手持设备与
其它计算设备通信,并且在一些实施例中提供用于诸如通过扫描来自动接收信息的信道。
通信链路213的示例包括:红外端口、串行/USB端口、诸如以太网端口之类的电缆网络端口、
以及允许通过一个或多个通信协议的通信的无线网络端口,所述通信协议包括作为用于提
供对网络的蜂窝接入的无线服务的通用分组无线服务(GPRS)、LTE、HSPA、HSPA+、以及其他
3G和4G无线电协议、1Xrtt和短消息服务,并包括提供对网络的本地无线连接的802.11和
802.11b(WiFi)协议、和蓝牙协议。

根据其他实施例,应用或系统被容纳在连接到可移动安全数字(SD)卡接口215的
SD卡上。SD卡接口215和通信链路213沿总线219与处理器217进行通信,该总线219还连接到
存储器221和输入/输出(I/O)组件223、以及时钟225和定位系统227。

在一个实施例中,提供了I/O组件223?#28304;?#25104;输入和输出操作。针对设备216的各个
实施例的I/O组件223可以包括:输入组件,?#28909;?#25353;钮、触摸传感器、多点触摸传感器、光学或
视频传感器、语音传感器、触摸屏、邻近传感器、话筒、倾斜传感器以及重力开关;以及输出
组件,?#28909;?#26174;示设备、扬声器和或打印机端口。也可以使用其他I/O组件223。

时钟225说明性地包括输出时间和日期的真实时间时钟组件。时钟还可?#36816;?#26126;性
地为处理器217提供时序功能。

定位系统227说明性地包括输出设备216的当前地理位置的组件。这例如可以包括
全球定位系统(GPS)接收机、LORAN系统、航位推算系统、蜂窝三角测量系统或者其他定位系
统。这例如还可以包括生成所期望的地图、?#24049;?#32447;路和其他地理功能的测绘软件或?#24049;?#36719;
件。

存储器221存储操作系统229、网络设置231、应用233、应用配置设置235、数据存储
237、通信驱动程序239以及通信配置设置241。存储器221可以包括所有类型的?#34892;我资?#24615;
和?#19988;资?#24615;计算机可读存储器设备。其还可以包括计算机存储介质(下面描述)。存储器221
存储计算机可读指令,所述指令在被处理器217执行时致使处理器根据所述指令执行计算
机实现的步骤或功能。处理器217可以也被其他组件激活?#28304;?#25104;它们的功能性。

网络设置231的示例包括诸如代理信息、因特网连?#26377;?#24687;以及测绘之类的事物。应
用配置设置235包括为特定企业或用户定制应用的设置。通信配置设置241提供了用于与其
他计算机进行通信的参数,并且包括诸如GPRS参数、SMS参数、连接用户名和口令之类的项
目。

应用233可以是之前已经存储在设备216上的应用或是在使用期间安装的应用,但
是这些应用可以是操作系统229的一部分,或者也可以在设备216之外被托管。

图8和9提供了可被使用的设备216的附加示例,但是也可以使用其它设备。在图8,
提供功能电话或移动电话345作为设备216。电话345包括:一组小键盘347,其用于拨打电话
号码;显示器349,其能够显示包括应用图像在内的图像、图标、网页、照片和视频;以及控制
按钮351,其用于选择在显示器上示出的项目。电话包括天线353,该天线353用于接收诸如
通用分组无线服务(GPRS)和1Xrtt之类的蜂窝电话信号以及短消息服务(SMS)信号。在一些
实施例中,电话345还包括容纳安全数字(SD)卡357的SD卡槽355。

图9的移动设备是个人数?#31181;?#29702;(PDA)459或多媒体播放器或平板计算设备等等
(在此称为PDA 459)。PDA 459包括电感屏461,所述电感屏感测指示笔463(或其他指示器,
诸如用户的?#31181;?在该指示笔被置于屏幕之上时的位置。这允许用户在屏幕上选择、突出显
示和移动项目以及绘图和书?#30784;DA 459还包括多个用户输入键或按钮(?#28909;?#25353;钮465),其
允许用户将显示器461上所显示的菜单选项或其他显示选项滚屏,并?#20197;?#35768;用户在没有接
触显示器461的情况下改变应用或选择用户输入功能。尽管未被示出,但是PDA 459可以包
括允许与其他计算机进行无线通信的内置天线和红外发射机/接收机、以及允许与其他计
算设备的硬件连接的连接端口。这样的硬件连接通常是通过经由串行或USB端口连接到其
他计算机的支架来完成的。因此,这些连接是非网络连接。在一个实施例中,移动设备459还
包括容纳SD卡469的SD卡槽467。

图10类似于图8,不同之处在于电话是智能电话571。智能电话571具有显示图标或
?#30424;?#25110;其他用户输入机制575的触敏显示器573。机制575可由用户用来运行应用、进行呼
?#23567;?#25191;行数据传输操作,等?#21462;?#19968;般而言,智能电话571被构建在移动操作系统上且提供比功
能电话更高级的计算能力和连接性。

图8到图10示出在图11中示出的设备216的特定形式。应当理解,除了图8-10中示
出的那些之外,设备216的其他形式是可能的。

图11是其中可采用架构100或其一部分(作为示例)的计算环境的一个实施例。参
考图11,用于实现一些实施例的示例性系统包括计算机810形式的通用计算设备。计算机
810的组件可以包括,但不限于,处理单元820(可以包括系统200或设备16中的处理器102或
各处理器)、系统存储器830和将包括系统存储器在内的各种系统组件耦?#29616;?#22788;理单元820
的系统总线821。系统总线821可以是若干类型的总线结构中的任一种,包括存储器总线或
存储器控制器、外围总线和使用各种总线架构中的任一种的局部总线。作为示例而非限制,
这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、
视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也称为夹层
(Mezzanine)总线)。参考图1描述的存储器和程序可被部署在图11的对应部?#31181;小?br />

计算机810通常包括各种计算机可读介质。计算机可读介质可以是能由计算机810
访问的任何可用介?#21097;?#32780;且包含?#36164;?#24615;和?#19988;资?#24615;介质、可移动和不可移动介质。作为示例
而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质不同于且
不包括已调制数据信号或载波。计算机存储介质包括硬件存储介?#21097;?#35813;硬件存储介质包括
以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法和技
术实现的?#36164;?#24615;和?#19988;资?#24615;、可移动和不可移动介质。计算机存储介质包括,但不限于,
RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁
带?#23567;?#30913;带、?#25490;?#23384;储或其他?#21028;源?#20648;设备、或能用于存储所需信息且可以由计算机810访
问的任何其他介质。通信介质通常具体化计算机可读指令、数据结构、程序模块或传输机制
中的其他数据,并包括任何信息递送介质。术语“已调制数据信号”是指使得以在信号中编
码信息的方式来设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括
诸如有线网络或直接线连接之类的有线介?#21097;?#20197;及诸如声学、RF、红外及其他无线介质之类
的无线介质。上述任何组合也应该包括在计算机可读的介质范围内。

系统存储器830包括?#36164;?#24615;和/或?#19988;资源?#20648;器形式的计算机存储介?#21097;?#22914;只读
存储器(ROM)831和随机存取存储器(RAM)832。包含诸如在启动期间帮助在计算机810内的
元件之间传输信息的基本例程的基本输入/输出系统833(BIOS)通常存储在ROM 831中。RAM
832通常包含处理单元820可立即访问和/或当前正在操作的数据和/或程序模块。作为示例
而非限制,图11例示出了操作系统834、应用程序835、其他程序模块836和程序数据837。

计算机810还可以包括其他可移动/不可移动、?#36164;?#24615;/?#19988;资?#24615;计算机存储介质。
仅作为示例,图11示出了从不可移动、?#19988;资源?#20171;质中读取或向其写入的硬盘驱动器
841,从可移动、?#19988;资源排?52中读取或向其写入的?#25490;?#39537;动器851,以及从诸如CD ROM
或其他光学介?#23454;?#21487;移动、?#19988;资?#24615;光盘856中读取或向其写入的光盘驱动器855。可在示
例性操作环?#25345;?#20351;用的其他可移动/不可移动、?#36164;?#24615;/?#19988;资?#24615;计算机存储介质包括但不
限于,磁带?#23567;?#38378;存卡、数字多功能盘、数字录像带、固态RAM、固态ROM?#21462;?#30828;盘驱动器841通
常通过诸如接口840之类的不可移动存储器接口连接到系统总线821,并且?#25490;?#39537;动器851
和光盘驱动器855通常通过诸如接口850之类的可移动存储器接口连接到系统总线821。

作为替换或?#38057;洌?#26412;文所述的功能可至少部分地由一个或多个硬件逻辑组件来执
行。例如、但非限制,可使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、
程序专用的集成电路(ASIC)、程序专用的标准产品(ASSP)、片上系统系统(SOC)、复杂可编
程逻辑器件(CPLD)、等?#21462;?br />

上文讨论并在图11中示出的驱动器及其相关联的计算机存储介质为计算机810提
供了对计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图11中,硬盘驱动
器841被示为存储操作系统844、应用程序845、其他程序模块846和程序数据847。注意,这些
组件可与操作系统834、应用程序835、其他程序模块836和程序数据837相同,也可与它们不
同。在此操作系统844、应用程序845、其他程序模块846以及程序数据847被给予了不同的编
号,以至少说明它们是不同的副本。

用户可以通过诸如键盘862、话筒863以及诸如鼠标、跟踪球或触摸垫等定点设备
861等输入设备来将命令和信息输入至计算机810中。其他输入设备(未示出)可以包括操纵
杆、游戏?#30452;?#22278;盘式卫星天线、扫描仪?#21462;?#36825;些以及其他输入设备通常通过耦合到系统总
线的用户输入接口860连接到处理单元820,但也可通过诸如并行端口、游戏端口或通用串
行总线(USB)之类的其他接口和总线结构来连接。视觉显示器891或其他类型的显示设备也
经由诸如视?#21040;?#21475;890之类的接口连接至系统总线821。除了监视器以外,计算机还可包括
诸如扬声器897和打印机896之类的其他外围输出设备,它们可通过输出外围接口895来连
接。

计算机810使用到诸如远程计算机880等一个或多个远程计算机的逻辑连接在网
络化环?#25345;?#25805;作。远程计算机880可以是个人计算机、手持设备、服务器、路由器、网络PC、对
等设备或其他常见的网络节点,且一般包括以上关于计算机810描述的多个或所有的元件。
图11中所示的逻辑连接包括局域网(LAN)871和广域网(WAN)873,但也可以包括其他网络。
此类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。

当在LAN联网环?#25345;?#20351;用时,计算机810通过网络接口或适配器870连接到LAN
871。当在WAN联网环?#25345;?#20351;用时,计算机810通常包括调制解调器872或用于通过诸如因特
网等WAN 873建立通信的其他手段。调制解调器872可以是内置的或外置的,可经由用户输
入接口860或其他?#23454;?#30340;机制连接到系统总线821。在联网环?#25345;校?#30456;关于计算机810所示的
程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图11示出了远
程应用程序885驻留在远程计算机880上。应当理解,所示的网络连接是示例性的,并且可使
用在计算机之间建立通信链路的其他手段。

还应注意,本文描述的不同实施例可以按不同的方式来组合。即,一个或多个实施
例的各部分可以与一个或多个其他实施例的各部分组合在一起。本文中构想了所有这些。

示例1是一种修改源代码的编程单元的执行行为的计算机实现的方法。所述方法
包括加载源代码的编程。单元并确定是否针对该编程单元定义了至少一个定制至少一个定
制基于所述定制的先决条件是否被满足而被选择性地执行。

示例2是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中源代码的编程单元
是源代码的单个行。

示例3是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中源代码的编程单元
包括源代码的多个行。

示例4是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中源代码的编程单元
是方法。

示例5是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中至少一个定制选择
性地执行以取代源代码的编程单元。

示例6是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中所述至少一个定制
在源代码的编程单元之前选择性地执行。

示例7是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中所述至少一个定制
在源代码的编程单元之后选择性地执行。

示例8是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中所述至少一个定制
的选择性执行包括在执行期间向所述至少一个定制提供对源代码的编程单元的变量的访
问。

示例9是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中所述访问是由所述
至少一个定制中的范围定义来确定的。

示例10是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中所述先决条件包括
在源代码的编程单元中的变量的存在。

示例11是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中所述变量不是在所
述至少一个定制上操作的。

示例12是定义与源代码的编程单元有关的定制的计算机实现的方法。所述方法包
括标识源代码的编程单元并指定与所标识的源代码的编程单元有关的定制执行。定制执行
的范围被定义。所述源代码的编程单元的标识、指定的定制执行信息以及范围信息被存储
并被提供给执行平台。

示例13是如?#25105;?#25110;所有先前的示例的计算机实现的方法,并进一步定义了在所述
定制将由执行平台执行之前必须存在于源代码的编程单元中的至少一个先决条件。

示例14是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中所述先决条件包括
在所述定制将由执行平台执行之前必须存在于源代码的编程单元中的参数。

示例15是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中所述参数没?#24615;?#23450;
制中被使用。

示例16是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中指定与所标识的源
代码的编程单元有关的定制执行包括定制将取代所标识的源代码的编程单元来执行的指
示。

示例17是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中所述定制执行的范
围被定义使得所述定制将能够访问它正在取代的源代码的编程单元的变量。

示例18是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中指定与所标识的源
代码的编程单元有关的定制执行包括定制将在所标识的源代码的编程单元之前绝对最先
执行的指示。

示例19是如?#25105;?#25110;所有先前的示例的计算机实现的方法,其中指定与所标识的源
代码的编程单元有关的定制执行包括定制将在所标识的源代码的编程单元之后绝对最后
执行的指示。

示例20是一种被配置为执行源代码的编程单元的计算机系统。所述计算机系统包
括被配置为执行源代码的编程单元的处理器和适用于存储源代码的编程单元和关于所选
的源代码的编程单元所定义的至少一个定制的存储组件。处理器被配置为加载源代码的编
程单元并确定是否相对于所加载的源代码的编程单元定义了一个定制并基于所述定制的
定义选择性地执行所述定制。

尽管用结?#22266;?#24449;和/或方法动作专用的语言描述了本主题,但可以理解,所附权利
要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是
作为实现权利要求的示例形式公开的。

关于本文
本文标题:订阅者定义的动态事件.pdf
链接地址:http://www.pqiex.tw/p-6091796.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
平码五不中公式规律 贵州十一选五的规律 重庆幸运农场走势图官网 双色球开奖结果双 山东11选5任务最大遗漏 136期特码资料 浦发银行股票 山东群英会走势图今14 半全场是什么意思 双色球复式投注矩阵图 上海时时乐后三走势图