首页> 中国专利> 事件激发的前后方法执行

事件激发的前后方法执行

摘要

本发明涉及事件激发的前后方法执行。启用对企业应用这样的软件程序的源代码的定制,而无须修改软件的源代码。源代码的外部片段可以在调用所选方法之前和/或之后执行。在指定的方法调用之前执行的外部方法可以改变用来调用该指定方法的参数值,在已经调用指定方法之后执行的方法可以改变从该指定方法返回的值。

著录项

  • 公开/公告号CN102591638A

    专利类型发明专利

  • 公开/公告日2012-07-18

    原文格式PDF

  • 申请/专利权人 微软公司;

    申请/专利号CN201110416404.5

  • 申请日2011-12-05

  • 分类号G06F9/44(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人黄嵩泉

  • 地址 美国华盛顿州

  • 入库时间 2023-12-18 06:12:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-08-19

    专利权的转移 IPC(主分类):G06F9/44 变更前: 变更后: 登记生效日:20150729 申请日:20111205

    专利申请权、专利权的转移

  • 2015-01-28

    授权

    授权

  • 2012-09-19

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20111205

    实质审查的生效

  • 2012-07-18

    公开

    公开

说明书

技术领域

本发明涉及计算机领域,尤其涉及代码执行。

背景技术

随着计算设备的快速增长,软件已成为日常工作和个人生活的主要部分。企业应用是软件的使用户能执行企业相关任务的主要部分,所述任务诸如会计、顾客关系管理、盘点、销售、市场营销等等。集成的和模块化的企业应用变得越来越普遍。本地安装的或主存的企业应用提供和各种各样的企业方面有关的服务。由于企业(也包括非商业组织)的大小和类型会不同,因此它们的需求通常由专用企业应用或定制版本的通用企业应用来进行服务。

设计诸如企业应用这样的软件程序是一项复杂的任务,所述任务一般涉及深入研究、大量代码、多种测试等等。当涉及像企业应用这样的复杂软件的定制时,设计者或者可以提供有限量的缺省替代(这可限制用户体验),或者为定制代码的开发者提供对完整代码的访问。然而,当软件应用的大部分或完整代码可访问时,原始开发者失去对程序特征的控制。各个开发者作出的改变使对原始程序执行的任何测试无效,可能发生原始开发者不具有控制的非预期的错误或执行结果。因此,打开代码会有使程序目的(即用户满意)失败的不想要的结果。

发明内容

提供本发明内容以便以简化的形式介绍将在以下的具体实施方式中进一步描述的一些概念。本发明内容并不旨在专门标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。

各实施例涉及允许对像企业应用这样的软件程序的源代码进行定制,而无须修改该软件的源代码。根据一些实施例,源代码的外部片段可以在调用所选方法之前和/或之后执行。在指定的方法调用之前执行的外部方法可以改变用来调用该指定方法的参数值,在已经调用指定方法之后执行的方法可以改变从该指定方法返回的值。

通过阅读下面的详细描述并参考相关联的附图,这些及其他特点和优点将变得显而易见。可以理解,前述一般描述和以下的详细描述都是说明性的,并且不限制所要求保护的各方面。

附图说明

图1是示出在软件环境中的示例方法和处理程序的概念图;

图2示出示例的前后激活图;

图3示出另一示例的前后激活图;

图4是可实现根据各实施例的系统的联网环境;

图5是可实现各实施例的示例计算操作环境的框图;以及

图6示出根据各实施例、使用预处理程序和后处理程序来定制软件程序的过程的逻辑流程图。

具体实施方式

如上简述,通过插入前后方法处理程序,可以定制软件应用,而无须修改源代码。预处理程序可以修改被传递到所选方法上的参数,而后处理程序可以修改来自所选方法的返回值。在一些实现中,后处理程序也可以修改到后续后处理程序的参数。在以下具体实施方式中,参考了构成具体实施方式的一部分并作为说明示出各具体实施例或示例的附图。可组合这些方面,可利用其他方面,并且可以做出结构上的改变而不背离本发明的精神或范围。因此,以下具体实施方式并不旨在限制,并且本发明的范围由所附权利要求及其等效方案来限定。

尽管在结合在计算设备上的操作系统上运行的应用程序执行的程序模块的一般上下文中描述了各实施方式,但是本领域的技术人员会认识到各方面也可以结合其它程序模块实现。

一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其它类型的结构。此外,本领域的技术人员可以明白,各实施例可以用其它计算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费者电子产品、小型计算机、大型计算机以及类似计算设备。各实施方式还能在任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实现。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备两者中。

各实施例可被实现为计算机实现的过程(方法)、计算系统、或者诸如计算机程序产品或计算机可读介质等的制品。计算机程序产品可以是计算机系统可读并且编码包括用于使计算机或计算系统执行示例过程的指令的计算机程序的计算机存储介质。计算机可读存储介质可例如通过易失性计算机存储器、非易失性存储器、硬盘驱动器、闪存驱动器、软盘或紧致盘以及类似存储介质中的一个或多个来实现。

在整个说明书中,术语“平台”可以是用于执行应用的软件和硬件组件的组合,其中可实现各实施例。平台的示例包括但不限于,在多个服务器上执行的托管服务、在单个服务器上执行的应用以及类似系统。术语“服务器”一般指通常在联网环境中执行一个或多个软件程序的计算设备。然而,服务器还可以被实现为被视作网络上的服务器的、在一个或多个计算设备上执行的虚拟服务器(软件程序)。尽管不修改源代码而定制程序的过程中使用企业应用作为用于实现预处理程序和后处理程序的例子,但是各实施例可以在任何类型的应用中实现。以下提供关于这些技术和示例操作的更多细节。

图1包括示出在软件环境中的示例方法和处理程序的概念图100。源代码的基本形式可以包括语句、声明、方法、操作符和关键词。方法是或者与类相关联(该情况下它被称为类方法或静态方法)或者与对象相关联的子例程(在该情况下它是实例方法)。方法通常包括用于执行动作的一系列编程语句、用于定制那些动作的一组输入参数、以及可能的一个或多个输出值(也称为(诸)返回值)。方法提供了用于访问和处理所指定的数据部分的机制。

基本上,方法或子例程基于输出一个或多个返回值的所提供的输入参数,对一数据部分执行自包含的计算。源代码可以包括从几种方法到几千种方法。典型的企业应用会具有较高的复杂度范围并且有大量方法。由于各方法彼此交互(即,一个方法的返回值可以被用作一个或多个其他方法的输入参数),则在软件开发中,操作的一致性和已定义的限制是显著的设计参数。因此,开发者在设计阶段定义了对他们的程序的特定限制,这些特定限制关于程序能做什么、程序可以获得什么输入、程序可以提供什么输出、怎样控制用户界面、等等。

在诸如企业运营、类型、需求等每一方面都有各种各样的变化的当今世界,对通用软件设计的限制对于程序的顾客来说是有相反生产性的。另一方面,软件程序的测试、验证、维护、升级等固有地需要那些限制。因此,新兴的软件定制行业利用该二分法,基于可用的通用解决方案来向更多的顾客提供定制解决方案。如上面所讨论的,允许定制者访问完整的源代码使软件开发者回到起点,因为同一软件可能有许多定制版本,顾客可以相信原始开发者最终是负责的。

根据各实施例的软件定制系统允许定制复杂的软件而无须修改源代码,同时允许定制者通过定制程序中每一个方法的输入和输出来修改该程序的许多方面。这可以通过为软件程序102的源代码104中的每一方法(108-1、108-2)之前和之后的预处理程序(106-1、106-2)和/或后处理程序(110-1、110-2)提供“挂钩”或插入点来完成,软件程序102可由服务器、台式机、膝上型电脑、手持电脑、车载电脑、智能电话和类似的计算设备来执行。

预处理程序和后处理程序本质上是可由定制开发者定义的外部方法,或者从原始开发者所提供的多个可选方法中被选择。预处理程序可以利用它所相关联的方法的输入参数,并且提供其可能修改的参数值作为到该方法的输入参数,从而可能修改该方法的输入。后处理程序可以将它所相关联的方法的返回值作为输入参数。因此,后处理程序可以修改该方法的输出。由此,可以修改源代码中一个或多个方法的输入和/或输出,而无须修改源代码本身。

图2示出示例的前后激活图200。如图200所示,在源代码的常规执行中,过程(调用者202)可以将输入参数传递至方法208来调用方法208,并且接收作为执行方法208的结果的返回值。为了定制输入参数和返回值之间的关系,方法208会需要被修改就意味着源代码本身需要被修改。在通用企业应用中,其中大量特定场景可导致对许多定制的需求,这可意味着存在大量的定制版本的程序。考虑到典型的软件程序中通常包括多少种方法,可能要求测试、验证和维护的定制的数量可能指数性增长,并且随之的所有者成本也提高。

在根据各实施例的系统中,可以采用一个或多个预处理程序(204、206)和后处理程序(210、212)以便在不实际修改方法208的情况下定制源代码。预处理程序和后处理程序可以结合所选方法使用,并且它们可用于任何配置(即,零个、一个、或多个预处理程序和/或后处理程序可以与所选方法相关联)中。在示例情况下,两个预处理程序和两个后处理程序与方法208相关联。当调用方法208时,用被发送至方法208的参数来调用(214)第一预处理程序204。预处理程序204可以计算参数的新值并将它们传递至预处理程序206,预处理程序206可以基于接收到的输入来计算进一步的其他值(216)。第二预处理程序206基于(第一预处理程序204所计算的)参数而计算的值可以被传递至方法208,方法就像它正常被执行地那样被执行(218)。预处理程序和/或后处理程序的次序可以根据程序定义来预定义,或者由定制开发者来定义。在还有其他实施例中,调用预处理程序和/或后处理程序的次序可以未被定义。

根据其他实施例,除了方法的输入参数以外,也可以修改方法208的返回值。方法208的返回值可以被传递至第一后处理程序210,且该后处理程序被执行(220)。在多个后处理程序的情况下,在先的后处理程序的返回值可以被传递至随后的后处理程序(例如222),直到最后一个后处理程序被执行且其返回值在程序中被传播(224)。

图3示出另一示例的前后激活图300。图300示出另一示例情况,其中在程序302内调用可定制的方法326。根据示例情况,有两个预处理程序和一个后处理程序与可定制方法326相关联。由此,结合程序中的方法可以使用任何数量的预处理程序和/或后处理程序。预处理程序304可以用可定制方法的参数首先调用(314)。预处理程序304所计算的值可以被提供给预处理程序306,预处理程序306被执行(316),且其计算的值被传递至可定制方法326本身。在该示例实施方式中,用接收自第二预处理程序的参数来执行可定制方法326(318),方法的返回值仅被提供给后处理程序310。在后处理程序310执行(320)后,该定制方法的返回值就被返回至程序。

根据各实施例的基于预处理程序和后处理程序的机制提供了各事件,作为在较高层解除源代码和任选定制代码间的耦合的方式。该机制在许多情况下使开发者能仅仅注册事件处理程序来向现有方法添加定制的行为,而不是必须复制并且然后保持所有的系统层代码。

前后方法特征还使开发者能为现有的类和表方法注册静态事件处理程序(方法),类和表方法或者可以在正常方法执行的开始或结束处被调用。预处理程序可以访问并且可能修改到方法的输入变量,类似地,后处理程序可以访问并且可能修改来自方法的返回值。如果为一给定方法注册了多个事件处理程序,则它们的执行可以根据预定义的或未定义的次序。

以上讨论的基于预处理程序和后处理程序的定制的配置和实现是为了例示的目的,并且不构成对各实施例的限制。可使用此处讨论的原理采用其它模块、进程和配置来实现各实施例。

图4是可实现各实施例的示例联网环境。基于预处理程序和后处理程序的源代码定制可经由在一个或多个服务器414或诸如托管服务的单个服务器(例如web服务器)416上执行的软件来实现。平台可以通过网络410来与诸如智能电话413、膝上型计算机412、或台式计算机411(‘客户机设备’)等各个计算设备上的客户端应用进行通信。

如上面所讨论的,插入点(“挂钩”)可以被置于应用的源代码中,使得可以实现预处理程序和后处理程序。当调用方法时,被调用的方法可以以预定义的次序为所指定的方法调用任何预处理程序。参数可以被传递至这些预处理程序中的每一个,每一个处理程序可以对被传递至下一处理程序、且最终至所指定方法的参数进行修改。当所指定的方法结束了其执行时,它会确定是否为所指定的方法规定了任何后处理程序。如果是,则会以预定义的已定义次序来调用这些处理程序。然后可由后处理程序的每一个来修改所返回的值。

在联网环境中,如以前所讨论的,客户机设备411-413可允许对在远程服务器(例如,服务器414中的一个)上执行的应用进行访问。服务器可直接地或通过数据库服务器418来从数据存储419中检索相关的数据,或将相关的数据存储到数据存储419中。

网络410可包括服务器、客户机、因特网服务供应商以及通信介质的任何拓扑结构。根据各实施例的系统可以具有静态或动态拓扑结构。网络410可包括诸如企业网络等安全网络、诸如无线开放网络或因特网等非安全网络。网络410还可通过诸如公共交换电话网络(PSTN)或蜂窝网络等其他网络来协调通信。此外,网络410可包括诸如蓝牙或类似网络等短程无线网络。网络410提供此处描述的节点之间的通信。作为示例而非限制,网络410可以包括例诸如声学、RF、红外线和其它无线介质等的无线介质。

可以采用计算设备、应用、数据源和数据分发系统的许多其它配置来实现通过预处理程序和后处理程序的源代码定制。此外,图4中所讨论的联网环境仅用于说明目的。各实施方式不限于示例应用、模块、或过程。

图5及相关描述旨在提供对其中可实现各实施例的合适计算环境的简要概括描述。参考图5,示出了用于根据各实施的应用(诸如计算设备500)的示例计算操作环境的框图。在基本配置中,计算设备500可以是执行软件应用的任何计算设备并且包括至少一个处理单元502和系统存储器504。计算设备500还可包括协作执行程序的多个处理单元。取决于计算设备的确切配置和类型,系统存储器504可以是易失性的(如RAM)、非易失性的(如ROM、闪存等)或是两者的某种组合。系统存储器504通常包括适于控制平台的操作的操作系统505,例如来自华盛顿州雷蒙德市的微软公司的操作系统。系统存储器504还可以包括诸如程序模块506、企业应用522等一个或多个软件应用,软件应用可以在其源代码中包括定制挂钩524。

企业应用522可以包括在方法之前和之后的预处理程序和后处理程序,使得可以修改所选方法的参数以及来自那些方法的返回值,从而在不实际修改源代码本身的情况下定制所述源代码。该基本配置在图5中由虚线508内的那些组件示出。

计算设备500可以具有附加特征或功能。例如,计算设备500还可包括附加数据存储设备(可移动和/或不可移动),例如磁盘、光盘或磁带。在图5中通过可移动存储509和不可移动存储510示出这样的附加存储。计算机可读存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器504、可移动存储509和不可移动存储510都是计算机可读存储介质的示例。计算机可读存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术,CD-ROM、数字多功能盘(DVD)或其它光学存储,磁带盒、磁带、磁盘存储或其它磁存储设备,或能用于存储所需信息且能够由计算设备500访问的任何其它介质。任何这样的计算机可读存储介质都可以是计算设备500的一部分。计算设备500还可以具有输入设备512,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备和类似输入设备。还可以包括输出设备514,诸如显示器、扬声器、打印机和其它类型的输出设备。这些设备在本领域中公知并且无需在此处详细讨论。

计算设备500还可以包含允许该设备与其他设备518通信的通信连接516,诸如通过分布式计算环境中的无线网络、卫星链接、蜂窝链接和类似机制。其他设备518可包括执行通信应用的计算机设备、存储服务器和类似设备。通信连接516是通信介质的一个示例。通信介质可包括其中的计算机可读指令、数据结构、程序模块,并包括任何信息递送介质。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。

各示例实施例还包括各种方法。这些方法可以用任何数量的方式,包括本文中所描述的结构来实现。一种此类方式是通过本文中描述的类型的设备的机器操作。

另一可任选方式是结合一个或多个人类操作者执行该方法的各个操作中的某一些来执行该方法的一个或多个操作。这些人类操作者无需彼此同在一处,而是其每一个可以仅与执行程序的一部分的机器同在一处。

图6示出根据各实施例、使用预处理程序和后处理程序来定制源代码的过程600的逻辑流程图。过程600可在任何软件应用中实现。

过程600从操作610开始,其中检测到对源代码中的所选方法的调用。被调用的方法可以在决定操作620确定是否存在任何预处理程序。根据一些实施例,在特定方法的调用之前和/或之后立即运行的(“触发”的)任选的或用户提供的源代码段可以作为修改它们所用的方法的参数和返回值的预处理程序和后处理程序被执行。如果存在预处理程序,它们可以在操作630被调用,它们的结果可以在操作640作为参数被传递至所选方法。

在操作650,执行所选方法。在所选方法执行之后,作出另一确定,确定在决定操作660处是否存在任何后处理程序。如果存在后处理程序,则所执行的方法的返回值可以在操作670被传递至它们(如果存在不止一个后处理程序,它们可以被顺序执行)。在操作680,调用后处理程序,修改所执行方法的返回值,从而在不修改源代码的情况下定制源代码。

包括在过程600内的各操作是用于说明目的。根据各实施例的通过预处理程序和后处理程序的源代码定制可以使用此处所述的各原理通过具有更少或更多步骤的相似过程、以及不同的操作次序来实现。

以上说明书、示例和数据提供了对各实施方式组成的制造和使用的全面描述。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求和各实施例的示例形式而公开的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号