CN111771191A - 跨域的内联事件处理程序 - Google Patents
跨域的内联事件处理程序 Download PDFInfo
- Publication number
- CN111771191A CN111771191A CN201980015493.7A CN201980015493A CN111771191A CN 111771191 A CN111771191 A CN 111771191A CN 201980015493 A CN201980015493 A CN 201980015493A CN 111771191 A CN111771191 A CN 111771191A
- Authority
- CN
- China
- Prior art keywords
- event handler
- event
- computing system
- call
- domain
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 167
- 230000008569 process Effects 0.000 claims abstract description 144
- 230000004044 response Effects 0.000 claims description 31
- 230000003993 interaction Effects 0.000 claims description 24
- 238000001914 filtration Methods 0.000 claims description 21
- 238000004891 communication Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 description 22
- 230000009471 action Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 14
- 230000003287 optical effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 2
- 210000003813 thumb Anatomy 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/543—Local
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
不同域中不同事件处理程序的事件处理程序记录存储在事件处理程序协调器服务中。事件处理程序记录标识将用于处理在不同域中引发的事件的事件处理程序(在各个域中)。当引发了事件时,将过滤事件处理程序记录,以识别已经指示了对引发的事件感兴趣的事件处理程序,并将与所识别的事件处理程序相对应的端点提供回调用进程。然后,调用进程将调用为其返回了端点的事件处理程序。
Description
背景技术
目前正在广泛使用计算系统。一些计算系统用于托管各种各样的不同服务。
可以在不同的域中托管服务。域的定义有多种不同的方式。例如,通过域名来定义域,因此具有不同域名的两个不同服务(或代码体)将在不同的域中运行。在另一种定义中,还将域定义为微服务。微服务是使用与技术无关的协议(例如,超文本协议(HTTP)),通过网络(通过网络接口)与另一个微服务(或进程)进行通信的进程。微服务相对于其它微服务可进行独立部署。可以将单个应用程序分解为微服务。在这种情况下,将应用程序构造为松散耦合的微服务的集合。这些微服务中的每一个都被视为不同的域。
在这样的计算系统中,当进程引发了事件时,通常会调用事件处理程序。内联(in-line)事件处理程序是当前位于运行调用进程的同一域中、并且与引发了事件的代码(或者事件源的调用进程)同步执行的事件处理程序。
与引发了事件的代码内联地运行事件处理程序逻辑,允许事件处理程序将逻辑(例如,验证数据或操作失败)注入作为事件源的代码中。举例来说,在一个操作将数据保存到磁盘之前,一个事件处理程序可能更新计算的数据,而另一个事件处理程序可能会因为数据无效而使操作失败。
然而,与引发了事件的域(或微服务)不同的域(或微服务)中的事件处理程序可能对该事件感兴趣。当前,其它域或微服务(引发了事件的域之外)的事件处理程序是异步调用的。但是,这使得在完成引发了事件的操作之前,很难处理来自该异步事件处理程序的结果。因此,这些事件处理程序不像内联事件处理程序那样注入逻辑。
以上讨论只是提供一般背景信息,而无意于用来帮助确定所要求保护的主题的范围。
发明内容
不同域中不同事件处理程序的事件处理程序记录存储在事件处理程序协调器服务中。事件处理程序记录标识将用于处理在不同域中引发的事件的事件处理程序(在各个域中)。当引发了事件时,将过滤事件处理程序记录,以识别已经指示了对引发的事件感兴趣的事件处理程序,并将与所识别的事件处理程序相对应的端点(end point)提供回调用进程。然后,调用进程将调用为其返回了端点的事件处理程序。
提供本概括部分以便用简化的形式介绍将在以下的详细描述中进一步描述的概念选择。本概括部分并不是旨在标识本发明的关键特征或本质特征,也不是用于帮助限制本发明的保护范围。本发明的主题并不限于用于解决在背景技术中所陈述的任何或所有缺点的实现。
附图说明
图1是计算系统架构的一个例子的框图。
图2是更详细地示出事件处理程序协调器服务的一个例子的框图。
图3是示出在注册事件处理程序时,事件处理程序协调器服务的操作的一个例子的流程图。
图4是示出事件处理程序协调器服务响应于调用服务所引发的事件的操作的一个例子的流程图。
图5A和图5B(在本文中统称为图5)显示了用于说明在不同域中调用事件处理程序时,引发事件的调用进程的操作的一个例子的流程图。
图6是示出在向事件处理程序提供数据时,调用进程的操作的一个例子的流程图。
图7是显示在进行事件处理程序链接时,图1所示的体系结构的操作的一个例子的局部框图、局部序列图。
图8是示出部署在云计算架构中的图1中所示的架构的一个例子的框图。
图9是示出可以在先前附图中使用的架构中使用的计算环境的一个例子的框图。
具体实施方式
图1是示出计算系统架构100的一个例子的框图。架构100示例性地包括运行单独的域或微服务的多个不同的域计算系统102-104。在域计算系统102-104上运行的域或微服务是通过网络106彼此通信的可独立部署的模块或服务。因此,在计算系统102-104上运行的每个域或微服务分别通过网络接口108-110来相互通信。可以通过唯一的域名来标识域或微服务。在计算系统102-104上运行的域或微服务还使用诸如超文本传输协议(HTTP)之类的与技术无关协议,通过网络106来彼此通信。在本文中,将可互换地使用术语“域”和“微服务”。
图1还示出了域计算系统102-104示例性地连接到事件处理程序协调器112,其中该事件处理程序协调器112可以是一个服务。事件处理程序协调器服务112示例性地允许在域计算系统102-104中的一个中引发的事件被域计算系统102-104中的另一个中的事件处理程序中同步地采取动作。在更详细地描述架构100的整体操作之前,首先将提供对架构100中的某些项以及其操作的简要描述。
域计算系统102示例性地包括一个或多个处理器或服务器114、包括调用进程116的域或微服务功能、其它域或微服务功能118、事件处理程序子系统120、数据存储122、网络接口108,并且它可以包括各种各样的其它项124。事件处理程序子系统120示例性地包括一组事件处理程序126-128、传播服务交互逻辑130,并且它可以包括其它项132。域计算系统104也可以包括一个或多个处理器或服务器134、一组域或微服务功能136(这是与在域计算系统102上运行的域或微服务不同的域或微服务)、事件处理程序子系统138、数据存储140、网络接口110,并且它可以包括各种各样的其它项142。事件处理程序子系统138可以包括一组事件处理程序144-146、传播服务交互逻辑148,并且它可以包括其它项150。
示例性地,调用进程116是当为在域计算系统102上运行的微服务或域功能执行域功能(事件处理程序对其感兴趣)时,将引发事件的进程。因此,它将调用感兴趣的事件处理程序。其它域功能118示例性地包括在域计算系统102上运行的域或微服务上运行的其余功能和逻辑。
事件处理程序子系统120中的事件处理程序126-128示例性地处理由在域计算系统102内部或者在另一个域计算系统(例如,域计算系统104)上引发的事件所生成的信息。为了处理不同的域计算系统104上的事件所引起的信息,事件处理程序126-128示例性地使用传播服务交互逻辑130,以便与事件处理程序协调器服务112进行通信。如在下面将更详细描述的,逻辑130示例性地提供每个事件处理程序126-128感兴趣的各种事件的标识、以及可以由调用服务在其上调用相应的事件处理程序的端点(例如,URL)。它还可以提供数据标识符,以标识事件处理程序在调用时感兴趣的数据。
类似地,域功能136示例性地是在域计算系统104上运行的微服务或域所执行的逻辑或功能。它本身可以包括引发事件的进程,并且因此这些进程也可以成为调用进程。
如同事件处理程序126-128,事件处理程序子系统138中的事件处理程序144-146使用传播服务交互逻辑140向事件处理程序协调器服务112指示那些事件处理程序感兴趣的事件。它们还可以提供端点(其中调用服务可以调用该端点)、以及调用服务需要哪些事件数据的指示。
作为简要概述,假定事件处理程序144已向事件处理程序协调器服务112指示其对调用进程116引发的事件感兴趣。在这种情况下,当调用进程116引发了事件时,它调用事件处理程序协调器服务112以发现对该事件感兴趣的事件处理程序可以调用的端点列表。然后,它使用相应的端点来调用事件处理程序144,并为其提供事件有效载荷数据,以便事件处理程序144可以对该事件执行其处理。在继续其自己的处理步骤之前,它等待事件处理程序144返回调用。用此方式,可以同步地调用甚至位于与调用进程不同的域中的事件处理程序,并为调用进程提供内联逻辑,而无需更改调用进程中的代码或者向调用进程注入任何另外的代码。
图2是更详细地示出事件处理程序协调器服务112的一个例子的框图。在图2所示的例子中,服务112示例性地包括一个或多个处理器或服务器152、事件处理程序交互逻辑154、查询处理系统156、事件处理程序调用存储158,并且它可以包括各种各样的其它项160。查询处理系统156本身示例性地包括通信逻辑162、事件处理程序记录过滤/检索逻辑164,并且它可以包括其它项166。事件处理程序和调用存储158示例性地包括调用文件168,其具有针对不同域(例如,域1-域N)所引发的事件的一个或多个事件处理程序记录。每个事件处理程序记录170-172示例性地包括一个源域类型标识符174,其标识充当事件源(其中调用进程所位于的源)的域的类型。每个记录170-172还示例性地包括端点176,在端点176处,可以调用与该事件处理程序记录相对应的事件处理程序。记录170-172还示例性地包括过滤标准178,该过滤标准178示例性地标识与该记录相对应的事件处理程序感兴趣的那个特定域中的事件列表。
举例来说,假定事件处理程序记录170对应于域计算系统104中的事件处理程序144。此外,假定事件处理程序144对域计算系统102中的调用进程116所引发的事件感兴趣。在该情况下,源域类型144将标识运行调用进程116的源域102的类型。端点176将标识可调用以启动事件处理程序144的URL(或其它端点)。过滤标准178将列出调用进程116引发的事件处理程序144对其感兴趣的事件。所需的数据标识符180示例性地标识了一旦事件处理程序144被调用,将使用的事件有效载荷(或事件数据)。启用/禁用指示符182包括一个值,该值指示针对过滤标准178中标识的特定事件列表是启用还是禁用了事件处理程序。事件处理程序记录170-172还可以包括各种其它项184。另外,事件处理程序和调用存储158除了包括调用文件168之外,还可以包括其它项186。
事件处理程序交互逻辑154示例性地处理传播服务交互逻辑130和148(图1所示)与事件处理程序协调器服务112之间的通信。例如,当事件处理程序(例如,事件处理程序144)正在注册事件时,事件处理程序交互逻辑154示例性地标识事件处理程序记录170-172中与事件处理程序144相对应的各个项、以及其正在注册的一个或多个事件。
然后,在调用进程引发了事件时,查询处理系统156处理调用进程的查询。例如,当调用进程116引发了事件处理程序144感兴趣的事件时,然后它经由以下方式,通过网络接口108和通信逻辑162与查询处理系统156进行通信:提供它引发的事件的指示,并请求已注册为对该事件感兴趣的各个事件处理程序。然后,事件处理程序记录过滤/检索逻辑164过滤域1(调用进程116所位于的域)的各种事件处理程序记录170,以识别表明对调用进程116刚刚引发的事件感兴趣的那些事件处理程序。判断是否启用这些事件处理程序(通过检查启用/禁用指示符182的值),并且对于已启用的事件处理程序,它将端点176和所需数据180返回给调用进程116。随后,调用进程116可以在该端点上调用事件处理程序,并为其提供事件数据,该事件数据将在执行此事件的事件句柄处理过程中使用。下面还将讨论提供事件数据的不同方法。
在一个例子中,当事件处理程序(例如,事件处理程序144)对多个不同域计算系统中的调用进程所引发的事件感兴趣时,则将在不同的域(例如,域1-域N)(其将成为这些事件的源)下,为该事件处理程序创建事件处理程序记录170-172。因此,如果一个特定的事件处理程序对不同域中引发的事件感兴趣,则可以有一个以上的事件处理程序记录。在另一个例子中,可以对事件处理程序记录进行不同地排列(arrange),以便在过滤标准中列出所有域的所有事件,并且不按域来划分事件处理程序记录。本文也预期这些和其它架构或布置。
图3是示出在响应于不同域中的事件而注册要撤销的事件处理程序时,事件处理程序协调器服务112的操作的一个例子的流程图。首先假设交互逻辑154正在事件处理程序协调器服务112上运行,或者可以将其启动。这通过图3的流程图中的框190来指示。然后,事件处理程序交互逻辑154接收来自于第一域(在域计算系统104上运行的域)中的事件处理程序(例如,事件处理程序144)的调用,以注册源自于第二域的事件(例如,源自于在域计算系统102上运行的域中的调用进程116的事件或者由其引发的事件)。在图3的流程图中的框192中,指示了接收该调用。在一个例子中,传播服务交互逻辑148可以将与事件处理程序144相对应的事件处理程序记录170放在一起,并与调用一起提供。这通过框194来指示。在另一个例子中,事件处理程序交互逻辑154与传播服务交互逻辑148执行一次或多次往返,以获取将包含在事件处理程序144的事件处理程序记录170中的信息。这通过框196来指示。也可以以其它方式来执行该调用,这通过框198来指示。
如果尚未生成事件处理程序记录170,则事件处理程序交互逻辑154针对正在注册事件的事件处理程序144生成事件处理程序记录。这通过框200来指示。如上所述,记录170标识事件源的域,如框174所示。它标识事件处理程序的端点(例如,URL)176,它标识如框178所指示的过滤标准(例如,该事件处理程序的感兴趣事件列表),它标识在调用该事件处理程序时要发送给该事件处理程序的数据(例如,事件有效载荷)(如框180所示),并且包括启用/禁用指示符182的值。事件处理程序记录170也可以包括其它项184。
一旦生成了事件处理程序记录170(例如,通过传播服务交互逻辑148或者通过事件处理程序交互逻辑154),逻辑154就将事件处理程序记录存储在与运行在域计算系统102上的域(例如,作为事件/调用进程的源的域)相对应的调用文件168的一部分中。这通过图3的流程图中的框202来指示。
还应当注意,在一些例子中,事件处理程序可以调用事件处理程序协调器服务112以更新其自己的事件处理程序记录。举例来说,他们可以更改过滤信息178,通过更改启用/禁用指示符182的值来启用或禁用自己,或者可以更改事件处理程序记录中的任何其它项。同样,它们可以提供其它域中的其它事件处理程序记录,以注册这些域中的事件。在这种情况下,事件处理程序交互逻辑154接收那些用于更新注册文件或其它记录的调用,并相应地处理这些更新。这通过图3的流程图中的框204来指示。框206指示了基于更新调用来更改事件处理程序的启用/禁用状态。框208指示了在调用事件处理程序时,更新要发送的数据(或有效载荷)信息的标识。框210指示了更新各种各样的其它项(例如,注册更多事件、删除事件的注册等等)。
图4是示出在接收到来自调用进程116的调用(此时,发生了某个事件),并响应于该调用时,事件处理程序协调器服务112的操作的一个例子的流程图。出于示例目的,将再次假设调用进程116引发了事件,其中事件处理程序144已在事件处理程序协调器服务112中注册该事件。在发生这种情况时,调用进程116生成针对事件处理程序协调器服务112中的查询处理系统156的调用。在图4的流程图中,通过框212来指示接收到来自调用进程的调用。在一个例子中,该调用可以标识调用进程116正在其中运行的源域。这通过框214来指示。该调用可以标识调用进程116所引发的特定事件。这通过框216来指示。该调用也可以包括各种各样的其它项,这通过框218来指示。
查询处理系统156示例性地通过适当的通信逻辑162接收该调用。然后,事件处理程序记录过滤/检索逻辑164基于各种过滤标准,针对运行调用进程116的域,对事件处理程序记录170进行过滤。这通过框220来指示。举例而言,逻辑164可以首先基于引发该事件的源域,对调用文件168中的所有事件处理程序记录170-172进行过滤。这通过框222来指示。在所讨论的示例中,这将意味着:逻辑164过滤出除了与域1(因为这是调用进程116正在运行的域)相对应的记录170以外的所有事件处理程序记录。
然后,逻辑164基于每个事件处理程序记录中的过滤标准178,对域1中的事件处理程序记录170进行过滤。回想一下,过滤标准178标识了域1中相应事件处理程序感兴趣的各种事件。因此,逻辑164对事件处理程序记录170进行过滤以识别这些记录170,其中这些记录170在过滤标准178中包含有用于标识刚刚由调用进程116所引发、并且已接收到针对其调用的事件的标识符。在图4的流程图中,通过框224来指示基于事件标识符来过滤事件处理程序记录170。
一旦已经基于过滤标准178过滤了事件处理程序记录170,则还可以基于启用/禁用指示符182的值对它们进行过滤。因此,将仅仅识别已注册了域1中的事件的记录170,其包含用于标识刚刚引发的特定事件的事件标识符(在过滤标准178中),并表示启用了对应的事件处理程序(如启用/禁用指示符182所示)。在图4的流程图中,通过框226来指示启用/禁用指示符。
应当理解的是,逻辑164也可以以多种其它方式来过滤各种事件处理程序记录。它可以按不同顺序应用过滤标准(源域、事件标识符和启用/禁用指示符的值等等),可以同时处理所有这些过滤标准,也可以以其它方式来过滤这些记录。这通过图4的流程图中的框228来指示。
一旦逻辑164应用了所有过滤标准,它就从事件处理程序记录170中识别出任何匹配的事件处理程序(通过过滤过程来识别)。在图4的流程图中,通过框230来指示对任何匹配的事件处理程序的识别。
然后,逻辑164从与匹配的事件处理程序相对应的事件处理程序记录中,从端点标识符176中检索端点和有效载荷数据,获取任何匹配的事件处理程序所需的数据标识符180。这通过框232来指示。
然后,作为接收到的调用的结果,逻辑164返回调用进程116要进行调用以启动事件处理程序的端点列表176,以及在调用进程调用这些事件处理程序时要提供的所需数据180。在图4的流程图中,通过框234来指示将这些结果返回给调用进程116。
图5A和图5B(在本文中统称为图5)显示了用于示出在引发事件、调用事件处理程序协调器服务112、以及调用事件处理程序协调器服务112所标识的其它域中的任何事件处理程序时,调用进程116的操作的一个例子的流程图。首先假定调用进程116正在域计算系统102上运行。这通过图5的流程图中的框240来指示。在某一时刻,调用进程116采取动作并产生事件。这通过框242来指示。举例而言,可能的动作是修改一些数据,然后保存该修改或对数据进行更改。这只是一个例子,还存在也可以引发事件的各种各样的其它活动。
然后,调用进程116可以使用传播服务交互逻辑130来调用事件处理程序协调器服务112,以指示它已引发事件。应当注意,调用进程116也可以直接调用域间和事件传播服务112。在图5的流程图中,通过框244来指示调用事件处理程序协调器服务112。
如上所述,服务112将识别对调用进程116刚刚引发的事件感兴趣的各种事件处理程序(为了便于描述起见,本示例为事件处理程序144),其中该事件处理程序位于不同的域(例如,它是在不同的域计算系统104上运行的不同域或微服务功能的一部分)。然后,响应于该调用,它将返回调用进程116可以在其中调用事件处理程序的端点(或URL)、事件处理程序希望接收的事件有效载荷信息,并且它也可以提供其它项。通过框246指示了接收到标识要进行调用的事件处理程序的端点的响应。通过框248指示了将端点作为URL进行接收。通过框250指示了接收事件有效载荷数据。也可以以各种其它方式来提供响应,这通过框252来指示。
基于引发的事件,服务112返回在各种不同的域中将被调用进程116调用的多个不同事件处理程序的列表。在这种情况下,调用进程116示例性地选择要调用的事件处理程序。这通过框252来指示。然后,它通过调用服务112所标识的并且对应于所选择的事件处理程序的端点,来调用所选择的事件处理程序。通过框254来指示对所选择的事件处理程序的调用。通过框256来指示通过调用事件处理程序端点来调用所选择的事件处理程序。对于该事件处理程序,其可以示例性地包括事件有效载荷(由服务112标识)。这通过框258来指示。在另一个例子中,提供数据可能相对昂贵,调用进程116可以调用所选择的事件处理程序,并嵌入事件处理程序能够调用以获取事件有效载荷数据的链接。这通过框260来指示。应当注意,还存在其它方式来处理事件处理程序需要事件有效载荷数据的场景。例如,事件处理程序可能仅有条件地需要该数据,而不是每次都需要它。获取或提供数据的成本也可能相对较高(就其大小、提供数据所需的计算开销或带宽等等而言)。处理这些类型的场景有所不同,下面参照图6来描述它们中的一些。
也可以以各种其它方式来调用事件处理程序,这通过框262来指示。
在继续进行与事件有关的其它处理之前,调用进程116示例性地等待来自于其刚刚调用的事件处理程序的响应。这通过图5的流程图中的框264来指示。来自于其刚刚调用的事件处理程序的响应可以包括一组动作或处理结果。例如,事件处理程序144可以基于其对事件有效载荷数据的处理,来指示调用进程116采取一组步骤或动作。它还可以指示其它结果,例如其过程失败,并且因此该事件应当失败。在一个例子中,调用进程116在接收到这些动作或结果时,执行(或应用)这些动作或结果。因此,如果事件处理程序返回失败作为响应,则请求可能立即失败。在另一个例子中,调用进程116将这些动作或结果与已经从基于当前事件而调用的任何其它事件处理程序接收的动作或结果进行聚合。在图5的流程图中,通过框266来指示对从调用的事件处理程序接收的动作或结果进行聚合或应用。
然后,调用进程116判断是否需要为此进程调用任何其它事件处理程序。如果是这样,则处理返回到框252,在框252中,选择并调用从服务112接收的事件处理程序列表中的下一个事件处理程序。通过框268来指示判断是否要调用其它事件处理程序。
一旦调用进程116调用了事件处理程序协调器服务112所标识的所有事件处理程序,则如果尚未应用从这些事件处理程序接收的任何聚合的操作或结果,则它将继续应用这些操作或结果。这通过框270来指示。举例而言,它可以基于事件,继续对该进程采取步骤或动作。这通过框272来指示。在另一个例子中,当一个事件处理程序使事件失败时,则该事件处理程序可以使要采取的动作失败。例如,当事件是数据已经被修改并且要保存修改时,如果事件处理程序之一返回失败,则调用进程116可以使修改动作失败并且避免将修改保存到数据中。在图5的流程图中,通过框274来指示使动作失败。调用进程116可以执行由已经被调用的一个或多个事件处理程序所指定的其它动作。通过框276来指示执行这些其它动作。也可以通过各种其它方式来完成对于聚合的动作和结果的应用,这通过框278来指示。
图6是示出调用进程116调用事件处理程序的操作的一个例子的流程图,其中事件处理程序需要提供相对昂贵的事件有效载荷数据。如以上关于图5中的框260所讨论的,调用进程(当其调用事件处理程序时)可以以各种不同的方式来处理。在上面所讨论的例子中,调用进程可以嵌入到事件处理程序执行其操作所需要的事件有效载荷数据(或其它数据)的链接。然后,事件处理程序本身可以通过该链接来访问数据。在关于图6所描述的例子中,调用进程116首先使用事件处理程序协调器服务112提供的URL来调用事件处理程序。这通过图6的流程图中的框280来指示。出于举例目的,假设调用进程116调用事件处理程序144。在关于图6所讨论的例子中,事件处理程序144示例性地使来自调用进程116的请求失败,并且还请求来自调用进程116的更多数据。这通过框282来指示。
响应于失败和对更多数据的请求,调用进程116调用具有更多数据的事件处理程序142。这通过图6的流程图中的框284来指示。这可以通过多种不同的方式来完成。例如,调用进程116可以知道事件处理程序144仅有条件地需要全部范围的事件有效载荷数据。因此,当调用进程116第一次调用事件处理程序144时,它仅提供数据的一个子集,或者根本不提供任何数据。这是因为,事件处理程序144可能经常可以在没有任何事件有效载荷数据的情况下,或者在具有相对较小的有效载荷数据子集的情况下,执行其处理。
当事件处理程序144确实需要其它数据时,则如框282所示,如果请求失败并且从调用进程116请求其它数据。然后,调用进程116可以再次使用其提供的原始数据来调用事件处理程序144以及其它数据。这通过框286来指示。当调用进程116利用其提供的原始数据以及其它数据来调用事件处理程序144时,这意味着事件处理程序144不需要缓存在调用进程116进行调用时接收到的原始数据。相反,当再次使用其它数据来重新调用事件处理程序144时,调用进程116再次提供该数据。
在另一个例子中,调用进程116可以再次嵌入到其它数据的链接,并在重新调用事件处理程序144时,将其提供给事件处理程序144。通过框288来指示嵌入到数据的链接。调用进程116可以调用事件处理程序144以其它方式为其提供其它数据。这通过框290来指示。
图7是示出在利用跨多个不同域的事件处理程序来处理事件时,架构100的操作的另一个例子的局部框图、局部序列图。图7中所示的一些项与先前附图中所示的那些相似,并且它们具有相似的编号。图7示出了架构300,域计算系统102和104与域计算系统302一起在该架构300中运行。域计算系统104和302示例性地具有事件处理程序144和304。图7示出了调用进程116示例性地执行一组动作306-308,并且在该过程中,引发了名为“保存项目”的事件310。示例性地,事件处理程序144已经向事件处理程序协调器服务112注册,以在进程116引发保存项目事件310时由调用进程116进行调用。此外,域计算系统302中的事件处理程序304已经向事件处理程序协调器服务112注册,以便在事件处理程序144引发一个事件(其指示该事件处理程序144本身已被调用)时,由事件处理程序144进行调用。这种类型的处理可以称为“链接(chaining)”。
具体而言,在一个例子中,当调用进程116引发保存项目事件310时,它调用事件处理程序协调器服务112(如箭头314所示),以获取基于引发保存项目事件310而将被调用的各种事件处理程序(其包括事件处理程序144)的列表。然后,其选择事件处理程序144并调用它,如箭头316所示。作为响应,事件处理程序144引发指示它已被调用的事件,并因此基于该事件来调用事件处理程序协调器服务112,以识别将要被调用的其它事件处理程序。这通过箭头318来指示。服务112示例性地响应于标识了事件处理程序304的该调用,其中事件处理程序304已经被注册为在事件处理程序144被调用时进行调用。因此,事件处理程序144调用事件处理程序304,这通过框320来指示。
然后,事件处理程序304执行其动作并响应于事件处理程序144,如框322所示。响应322可以包括来自事件处理程序304的动作或结果。事件处理程序144然后执行其动作,将其自身的结果或动作与事件处理程序304的响应322中的结果或动作进行聚合,并将这些项作为响应324提供给调用进程116(具体而言,保存项目事件310)。用此方式,当调用进程116引发单个事件时,可以调用多个嵌套的事件处理程序。所述多个嵌套的事件处理程序可以位于多个不同的域中,并且可以将它们的处理结果进行聚合并提供给调用进程116。因此,链中的所有事件处理程序都可以有效地向调用进程插入逻辑,而无需实际更改调用进程本身的逻辑。相反,通过使用事件处理程序协调器服务112,可以以跨域方式、以嵌套方式、或者以这些不同方式的组合,来调用不同域中的事件处理程序。
应当注意,上面的讨论描述了各种不同的系统、组件和/或逻辑。应当理解的是,这样的系统、组件和/或逻辑可以包括用于执行与这些系统、组件和/或逻辑相关联的功能的硬件项(例如,处理器和相关联存储器、或者其它处理组件,其中一些将在下面进行描述)。另外,这些系统、组件和/或逻辑可以包括加载到存储器中并随后由处理器或服务器或其它计算组件执行的软件,如下面所描述的。这些系统、组件和/或逻辑还可以包括硬件、软件、固件等等的不同组合,下面将描述其一些例子。这些仅是可以用于形成上面所描述的系统、组件和/或逻辑的不同结构的一些例子。也可以使用其它结构。
所给出的讨论提及了处理器和服务器。在一个实施例中,处理器和服务器包括具有相关联的存储器和定时电路(未单独示出)的计算机处理器。这些处理器和服务器是它们所属的系统或设备的功能部分,并且由这些系统中的其它组件或项目的功能进行激活并促进这些其它组件或项目的功能。
此外,已经讨论了多个用户界面显示。它们可以采用各种不同的形式,并且可以具有布置在其上的各种不同的用户可致动输入控件。例如,用户可致动输入控件可以是文本框、复选框、图标、链接、下拉菜单、搜索框等等。它们也可以以各种不同的方式进行致动。例如,可以使用指向和点击设备(例如,跟踪球或鼠标)来致动它们。可以使用硬件按钮、开关、操纵杆或键盘、拇指开关或拇指垫等等来致动它们。也可以使用虚拟键盘或其它虚拟致动器来致动它们。另外,在显示它们的屏幕是触摸敏感屏幕的情况下,可以使用触摸手势来致动它们。而且,在显示它们的设备具有语音识别组件的情况下,可以使用语音命令来致动它们。
还讨论了多种数据存储。应当注意到,它们可以分成多个数据存储。所有数据存储对于访问它们的系统来说都可以是本地的,所有数据存储都可以是远程的,或者一些可以是本地的,而另一些是远程的。本文考虑了所有这些配置。
此外,附图示出了具有归于每个块的功能的多个块。应当注意,可以使用更少的块,因此通过更少的组件来执行功能。此外,可以使用更多块,其中将功能分布在更多组件中。
图8是图1中所示的架构100的框图,除了其元件布置在云计算架构500中之外。云计算提供不需要终端用户知道传送服务的系统的物理位置或配置的计算、软件、数据访问和存储服务。在各个例子中,云计算使用适当的协议,在诸如互联网的广域网上传送服务。例如,云计算提供商通过广域网来提供应用,并且可以通过web浏览器或任何其它计算组件来访问它们。架构100的软件或组件以及相应的数据可以存储在远程位置的服务器上。云计算环境中的计算资源可以在远程数据中心位置合并,或者可以分散。云计算基础架构可以通过共享数据中心提供服务,即使它们呈现为用户的单一访问点。因此,可以使用云计算架构,从远程位置的服务提供商提供本文所描述的组件和功能。替代地,它们也可以从传统服务器提供,或者它们可以直接地或以其它方式安装在客户端设备上。
本文的描述旨在包括公共云计算和私有云计算。云计算(公共和私有)提供了大量无缝的资源池,以及减少了管理和配置底层硬件基础架构的需求。
公共云由供应商管理,并且通常使用相同的基础设施支持多个消费者。此外,与私有云相比,公共云可以将终端用户从管理硬件中解放出来。私有云可能由组织本身进行管理,并且通常不与其它组织共享基础设施。组织仍在某种程度上维护硬件,例如进行安装和维修等等。
在图8所示的例子中,一些项类似于图1中所示的项,故对它们进行了类似地编号。图8具体示出了计算系统102和104以及服务112可以位于云502中(其中云502可以是公共的、私有的,或者其中一些部分是公共的而其它部分是私有的组合)。因此,用户508使用用户设备504与用户接口506,通过云502访问那些系统。
图8还描绘了云架构的另一个例子。图8示出了还预期架构100的一些元件可以布置在云502中,而其它元件不布置在云502中。举例来说,数据存储122、140、158可以布置在云502之外,并且可以通过云502进行访问。在另一个例子中,服务112(或其它项)可以在云502之外。无论它们位于何处,设备504都可以通过网络经由其它系统或服务器来直接访问它们,它们可以通过服务在远程站点处托管,或者它们可以通过云来提供为服务,或者由驻留在云中的连接服务进行访问。本文考虑了所有这些架构。
还应当注意,架构100或者其一些部分可以布置在各种不同的设备上。这些设备中的一些包括服务器、桌面型计算机、膝上型计算机、平板计算机、或者诸如掌上计算机、蜂窝电话、智能电话、多媒体播放器、个人数字助理等等之类的其它移动设备。
图9是可以部署架构100的一部分的计算环境的一个例子。参见图10,用于实现一些实施例的示例性系统包括计算机810形式的通用计算设备。计算机810的组件可以包括但不限于处理单元820(其可以包括来自先前附图的处理器或服务器)、系统存储器830、以及将包括系统存储器的各种系统组件耦合到处理单元820的系统总线821。系统总线821可以是几种类型的总线结构中的任何一种,其包括存储器总线或存储器控制器、外围总线、以及使用各种总线架构的本地总线。举例而言而非做出限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围组件互连(PCI)总线(其也称为Mezzanine(夹层)总线)。关于图1描述的存储器和程序可以部署在图9的相应部分中。
计算机810通常包括各种计算机可读介质。计算机可读介质可以是能够由计算机810访问的任何可用介质,其包括易失性和非易失性介质、可移动和不可移动的介质。举例而言而非做出限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质不同于并且不包括调制的数据信号或载波。计算机存储介质包括硬件存储介质,其包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字通用光盘(DVD)或其它光盘存储器、盒式磁带、磁带、磁盘存储器或其它磁存储设备、或者可以用于存储期望信息并且可由计算机810存取的任何其它介质。通信介质通常在传输机制中包含计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。术语“调制的数据信号”是指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。举例而言而非做出限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质以及诸如声学、RF、红外和其它无线介质之类的无线介质。上述的任何组合也应当包括在计算机可读介质的范围内。
系统存储器830包括易失性和/或非易失性存储器形式的计算机存储介质,例如只读存储器(ROM)831和随机存取存储器(RAM)832。包含有助于在计算机810内的元件之间传送信息(例如,在启动期间)的基本例程的基本输入/输出系统833(BIOS),通常存储在ROM831中。RAM 832通常包含处理单元820可立即访问和/或由这些处理单元820当前正在操作的数据和/或程序模块。举例而言而非做出限制,图9示出了操作系统834、应用程序835、其它程序模块836和程序数据837。
计算机810还可以包括其它可移动/不可移动的易失性/非易失性计算机存储介质。仅作为示例,图9示出了从不可移动的非易失性磁介质读取或写入的硬盘驱动器841、以及从诸如CD ROM或其它光学介质之类的可移动非易失性光盘856读取或写入的光盘驱动器855。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于:盒式磁带、闪存卡、数字通用光盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器841通常通过诸如接口840之类的不可移除存储器接口连接到系统总线821,光盘驱动器855通常通过可移动存储器接口(例如,接口850)连接到系统总线821。
替代地或另外地,本文所描述的功能可以至少部分地由一个或多个硬件逻辑组件执行。例如但不限于,可以使用的示例性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、程序专用集成电路(ASIC)、程序专用标准产品(ASSP)、系统级片上系统(SOC)、复杂可编程逻辑器件(CPLD)等等。
上面讨论并在图9中示出的驱动器及其相关联的计算机存储介质,提供了计算机可读指令、数据结构、程序模块和用于计算机810的其它数据的存储。在图9中,例如,将硬盘驱动器841示出为存储操作系统844、应用程序845、其它程序模块846和程序数据847。应当注意,这些组件可以与操作系统834、应用程序835、其它程序模块836和程序数据837相同或不同。这里,向操作系统844、应用程序845、其它程序模块846和程序数据847给出不同的数字,以说明它们至少是不同的副本。
用户可以通过诸如键盘862、麦克风863之类的输入设备和诸如鼠标、跟踪球或触摸板之类的指向设备861,将命令和信息输入到计算机810中。其它输入设备(没有示出)可以包括操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合到系统总线的用户输入接口860连接到处理单元820,但也可以通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构进行连接。视觉显示器891或其它类型的显示设备也经由诸如视频接口890之类的接口连接到系统总线821。除了监视器之外,计算机还可以包括通过输出外围接口895连接的其它外围输出设备,例如扬声器897和打印机896。
使用到一个或多个远程计算机(例如,远程计算机880)的逻辑连接,在联网环境中操作计算机810。远程计算机880可以是个人计算机、手持设备、服务器、路由器、网络PC、对等设备或其它公共网络节点,并且通常包括上面相对于计算机810描述的许多或所有元件。图9中描绘的逻辑连接包括局域网(LAN)871和广域网(WAN)873,但也可以包括其它网络。这种网络环境在办公室、企业范围的计算机网络、内联网和互联网中是常见的。
当在LAN网络环境中使用时,计算机810通过网络接口或适配器870连接到LAN871。当在WAN网络环境中使用时,计算机810通常包括调制解调器872或者用于通过WAN 873(例如,互联网)建立通信的其它单元。调制解调器872可以是内置的或外置的,可以通过用户输入接口860或其它适当的机制连接到系统总线821。在联网环境中,相对于计算机810或者其一部分描述的程序模块可以存储在远程存储器存储设备中。举例而言而非做出限制,图9将远程应用程序885示出为驻留在远程计算机880上。应当理解,所示出的网络连接是示例性的,可以使用在计算机之间建立通信链路的其它手段。
还应当注意,可以以不同方式组合本文所描述的不同实施例。也就是说,一个或多个实施例的一部分可以与一个或多个其它实施例的一部分组合。所有这些都在本文中进行了考虑。
示例1是一种计算系统,包括:
计算机处理器;
通过网络接口与第一域计算系统和不同于所述第一域计算系统的第二域计算系统进行通信的通信系统,所述第一域计算系统和所述第二域计算系统通过相应的网络接口相互通信;以及
事件处理程序协调器服务,其用于在所述第一域计算系统中存储与第一事件处理程序相对应的第一事件处理程序记录,所述第一事件处理程序记录包括用于标识运行所述第二域计算系统的调用进程引发的感兴趣事件的过滤标准,当所述第二域计算系统中的所述调用进程引发了所述感兴趣事件时,所述事件处理程序协调器服务接收到来自所述调用进程的调用,并且向所述调用进程返回所述第一域计算系统中与所述第一事件处理程序相对应的端点,以用于调用所述第一事件处理程序。
示例2是任何或者所有先前示例所述的计算系统,其中,所述事件处理程序协调器服务包括:
事件处理程序交互逻辑,其被配置为接收来自所述第一域计算系统中的所述第一事件处理程序的调用,并且基于所述调用,在所述第一事件处理程序记录中存储与所述第一事件处理程序相对应的所述端点和与所述第一事件处理程序相对应的过滤标准,所述过滤标准指示在所述第二域计算系统中运行的所述调用进程引发的所述第一事件处理程序的感兴趣事件。
示例3是任何或者所有先前示例所述的计算系统,其中,所述事件处理程序协调器服务在不同的域计算系统中存储与不同事件处理程序相对应的多个不同事件处理程序记录,每个事件处理程序记录具有指示所述对应的事件处理程序的感兴趣事件的过滤标准。
示例4是任何或者所有先前示例所述的计算系统,其中,所述事件处理程序协调器服务包括:
事件处理程序记录过滤逻辑,其被配置为在引发了所述第一事件处理程序的感兴趣事件时,接收来自所述调用进程的所述调用,来自所述调用进程的所述调用包括用于标识所引发的事件的事件标识符,并且所述事件处理程序记录过滤逻辑被配置为基于所述过滤标准和所述事件标识符来过滤所述事件处理程序记录,以识别所述第一事件处理程序记录。
示例5是任何或者所有先前示例所述的计算系统,其中,所述事件处理程序协调器服务包括:
事件处理程序记录检索逻辑,其被配置为从所述第一事件处理程序记录中获取用于调用所述第一事件处理程序的所述端点,并且响应于来自所述调用进程的所述调用,将所述端点返回给所述调用进程。
示例6是任何或者所有先前示例所述的计算系统,其中,所述事件处理程序交互逻辑被配置为:从所述第一域计算系统中的所述第一事件处理程序接收所述调用,并且基于所述调用,在所述第一事件处理程序记录中存储事件有效载荷指示符,所述事件有效载荷指示符指示基于所述调用进程引发的所述第一事件处理程序的感兴趣事件,在所述调用进程调用时,将由所述第一事件处理程序使用的数据。
示例7是任何或者所有先前示例所述的计算系统,其中,所述事件处理程序记录检索逻辑被配置为:从所述第一事件处理程序记录中获取所述事件有效载荷指示符,并且响应于来自所述调用进程的所述调用而将所述事件有效载荷指示符返回给所述调用进程。
示例8是任何或者所有先前示例所述的计算系统,其中,所述事件处理程序交互逻辑被配置为:从所述第一事件处理程序接收更新调用,并且基于所述更新调用来改变所述第一事件处理程序记录。
示例9是一种计算机实现的基于引发的事件来调用事件处理程序的方法,所述方法包括:
在第一域计算系统上运行的进程中引发事件;
通过网络接口,生成对事件处理程序协调器服务的调用,所述调用包括所引发的事件的指示;
从所述事件处理程序协调器服务中并且响应于所述调用而接收与第二域计算系统中的事件处理程序相对应的端点;
使用所述端点,通过所述网络接口来调用所述事件处理程序;
等待执行与所引发的事件相对应的其它操作,直到接收到响应于调用所述第二域计算系统中的所述事件处理程序的响应为止;
接收来自所述第二域计算系统中的所述事件处理程序的所述响应;以及
基于来自所述第二域计算系统中的所述事件处理程序的所述响应,执行与所述事件相对应的其它操作。
示例10是任何或者所有先前示例所述的计算机实现的方法,还包括:
从所述事件处理程序协调器服务接收用于指示所述事件处理程序将使用的数据的数据指示符。
示例11是任何或者所有先前示例所述的计算机实现的方法,其中,调用所述事件处理程序包括:
通过所述网络接口,向所述事件处理程序提供所述数据指示符所标识的所述数据。
示例12是任何或者所有先前示例所述的计算机实现的方法,其中,调用所述事件处理程序包括:
向所述事件处理程序提供指向所述数据指示符所标识的数据的链接。
示例13是任何或者所有先前示例所述的计算机实现的方法,其中,调用所述事件处理程序包括:向所述事件处理程序提供所述数据指示符所标识的所述数据的至少一部分,并且其中,从所述事件处理程序接收所述响应包括:接收对其它数据的请求。
示例14是任何或者所有先前示例所述的计算机实现的方法,还包括:
使用所述部分的数据和所述其它数据,响应针对其它数据的所述请求。
示例15是一种计算机实现的方法,包括:
当第一域计算系统中的调用进程引发事件时,通过网络接口从所述第一域计算系统中运行的所述调用进程接收事件处理程序协调器服务处的调用,所述调用包括用于标识所述调用进程引发的所述事件的事件标识符;
访问与一组事件处理程序相对应的一组事件处理程序记录,所述事件处理程序中的至少第一事件处理程序位于第二域计算系统中,所述事件处理程序记录中的每一个均包括用于标识所述对应的事件处理程序的感兴趣事件的过滤标准;
基于所述事件标识符和所述过滤标准,对所述一组事件处理程序记录进行过滤,以识别包括有与所述事件标识符相对应的过滤标准的第一事件处理程序记录,所述第一事件处理程序记录对应于所述第一事件处理程序;以及
将在所述第一事件处理程序记录中标识的所述第二域计算系统中与所述第一事件处理程序相对应的端点返回给所述调用进程,以调用所述第一事件处理程序。
示例16是任何或者所有先前示例所述的计算机实现的方法,还包括:
在所述事件处理程序协调器服务处,接收来自所述第二域计算系统中的所述第一事件处理程序的调用;以及
基于所述调用,在所述第一事件处理程序记录中存储与所述第一事件处理程序相对应的所述端点和与所述第一事件处理程序相对应的过滤标准,所述过滤标准指示在所述第一域计算系统中运行的所述调用进程引发的所述事件。
示例17是任何或者所有先前示例所述的计算机实现的方法,其中,在所述事件处理程序协调器服务处接收来自所述第一事件处理程序的调用包括:接收来自所述第二域计算系统中的所述第一事件处理程序的所述调用;并且基于所述调用,在所述第一事件处理程序记录中,基于所述调用进程引发的所述事件,存储用于指示在所述调用进程进行引发时将由所述第一事件处理程序使用的数据的事件有效载荷指示符。
示例18是任何或者所有先前示例所述的计算机实现的方法,还包括:
从所述第一事件处理程序记录中获取所述事件有效载荷指示符;以及
响应于来自所述调用进程的所述调用,将所述事件有效载荷指示符返回给所述调用进程。
示例19是任何或者所有先前示例所述的计算机实现的方法,还包括:
在所述事件处理程序协调器服务处接收来自所述第一事件处理程序的指示对所述第一事件处理程序记录的更改的更新调用;以及
基于所述更新调用,更改所述第一事件处理程序记录。
示例20是任何或者所有先前示例所述的计算机实现的方法,其中,所述事件处理程序记录中的每一个包括:用于指示所述相应的事件处理程序记录的启用状态的相应启用/禁用指示符、以及用于指示引发所述过滤标准所标识的感兴趣事件的调用进程的域的域指示符,其中过滤包括:
基于所述启用/禁用指示符和所述域指示符,对所述事件处理程序记录进行过滤。
虽然利用特定于结构特征和/或方法动作的语言来描述了本发明,但应当理解的是,所附权利要求书中规定的主题并不是必需限于上面所描述的这些特定特征或动作。相反,只是将上面所描述的特定特征和动作公开成实现本发明的示例性形式。
Claims (15)
1.一种计算系统,包括:
计算机处理器;
通过网络接口与第一域计算系统和不同于所述第一域计算系统的第二域计算系统进行通信的通信系统,所述第一域计算系统和所述第二域计算系统通过相应的网络接口相互通信;以及
事件处理程序协调器服务,其用于在所述第一域计算系统中存储与第一事件处理程序相对应的第一事件处理程序记录,所述第一事件处理程序记录包括用于标识运行所述第二域计算系统的调用进程引发的感兴趣事件的过滤标准,当所述第二域计算系统中的所述调用进程引发了所述感兴趣事件时,所述事件处理程序协调器服务接收到来自所述调用进程的调用,并且向所述调用进程返回所述第一域计算系统中与所述第一事件处理程序相对应的端点,以用于调用所述第一事件处理程序。
2.根据权利要求1所述的计算系统,其中,所述事件处理程序协调器服务包括:
事件处理程序交互逻辑,其被配置为接收来自所述第一域计算系统中的所述第一事件处理程序的调用,并且基于所述调用,在所述第一事件处理程序记录中存储与所述第一事件处理程序相对应的所述端点和与所述第一事件处理程序相对应的过滤标准,所述过滤标准指示在所述第二域计算系统中运行的所述调用进程引发的所述第一事件处理程序的所述感兴趣事件。
3.根据权利要求2所述的计算系统,其中,所述事件处理程序协调器服务在不同的域计算系统中存储与不同事件处理程序相对应的多个不同事件处理程序记录,每个事件处理程序记录具有指示所述对应的事件处理程序的感兴趣事件的过滤标准。
4.根据权利要求3所述的计算系统,其中,所述事件处理程序协调器服务包括:
事件处理程序记录过滤逻辑,其被配置为在引发了所述第一事件处理程序的感兴趣事件时,接收来自所述调用进程的所述调用,来自所述调用进程的所述调用包括用于标识所引发的事件的事件标识符,并且所述事件处理程序记录过滤逻辑被配置为基于所述过滤标准和所述事件标识符来过滤所述事件处理程序记录,以识别所述第一事件处理程序记录。
5.根据权利要求4所述的计算系统,其中,所述事件处理程序协调器服务包括:
事件处理程序记录检索逻辑,其被配置为从所述第一事件处理程序记录中获取用于调用所述第一事件处理程序的所述端点,并且响应于来自所述调用进程的所述调用,将所述端点返回给所述调用进程。
6.根据权利要求5所述的计算系统,其中,所述事件处理程序交互逻辑被配置为:从所述第一域计算系统中的所述第一事件处理程序接收所述调用,并且基于所述调用,在所述第一事件处理程序记录中存储事件有效载荷指示符,所述事件有效载荷指示符指示基于所述调用进程引发的所述第一事件处理程序的感兴趣事件,在所述调用进程调用时,将由所述第一事件处理程序使用的数据。
7.根据权利要求6所述的计算系统,其中,所述事件处理程序记录检索逻辑被配置为:从所述第一事件处理程序记录中获取所述事件有效载荷指示符,并且响应于来自所述调用进程的所述调用而将所述事件有效载荷指示符返回给所述调用进程。
8.根据权利要求2所述的计算系统,其中,所述事件处理程序交互逻辑被配置为:从所述第一事件处理程序接收更新调用,并且基于所述更新调用来改变所述第一事件处理程序记录。
9.一种计算机实现的基于引发的事件来调用事件处理程序的方法,所述方法包括:
在第一域计算系统上运行的进程中引发事件;
通过网络接口,生成对事件处理程序协调器服务的调用,所述调用包括所引发的事件的指示;
从所述事件处理程序协调器服务中并且响应于所述调用而接收与第二域计算系统中的事件处理程序相对应的端点;
使用所述端点,通过所述网络接口来调用所述事件处理程序;
等待执行与所引发的事件相对应的其它操作,直到接收到响应于调用所述第二域计算系统中的所述事件处理程序的响应为止;
接收来自所述第二域计算系统中的所述事件处理程序的所述响应;以及
基于来自所述第二域计算系统中的所述事件处理程序的所述响应,执行与所述事件相对应的其它操作。
10.根据权利要求9所述的计算机实现的方法,还包括:
从所述事件处理程序协调器服务接收用于指示所述事件处理程序将使用的数据的数据指示符。
11.根据权利要求10所述的计算机实现的方法,其中,调用所述事件处理程序包括:
通过所述网络接口,向所述事件处理程序提供所述数据指示符所标识的所述数据。
12.根据权利要求10所述的计算机实现的方法,其中,调用所述事件处理程序包括:
向所述事件处理程序提供指向所述数据指示符所标识的数据的链接。
13.根据权利要求10所述的计算机实现的方法,其中,调用所述事件处理程序包括:向所述事件处理程序提供所述数据指示符所标识的所述数据的至少一部分,并且其中,从所述事件处理程序接收所述响应包括:接收对其它数据的请求。
14.根据权利要求13所述的计算机实现的方法,还包括:
使用所述部分的数据和所述其它数据,响应针对其它数据的所述请求。
15.一种计算机实现的方法,包括:
当第一域计算系统中的调用进程引发事件时,通过网络接口从所述第一域计算系统中运行的所述调用进程接收事件处理程序协调器服务处的调用,所述调用包括用于标识所述调用进程引发的所述事件的事件标识符;
访问与一组事件处理程序相对应的一组事件处理程序记录,所述事件处理程序中的至少第一事件处理程序位于第二域计算系统中,所述事件处理程序记录中的每一个均包括用于标识所述对应的事件处理程序的感兴趣事件的过滤标准;
基于所述事件标识符和所述过滤标准,对所述一组事件处理程序记录进行过滤,以识别包括有与所述事件标识符相对应的过滤标准的第一事件处理程序记录,所述第一事件处理程序记录对应于所述第一事件处理程序;以及
将在所述第一事件处理程序记录中标识的所述第二域计算系统中与所述第一事件处理程序相对应的端点返回给所述调用进程,以调用所述第一事件处理程序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/904,884 | 2018-02-26 | ||
US15/904,884 US10394628B1 (en) | 2018-02-26 | 2018-02-26 | In-line event handlers across domains |
PCT/US2019/018378 WO2019164774A1 (en) | 2018-02-26 | 2019-02-18 | In-line event handlers across domains |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111771191A true CN111771191A (zh) | 2020-10-13 |
CN111771191B CN111771191B (zh) | 2024-07-30 |
Family
ID=65529932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980015493.7A Active CN111771191B (zh) | 2018-02-26 | 2019-02-18 | 跨域的内联事件处理程序 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10394628B1 (zh) |
EP (1) | EP3759603B1 (zh) |
CN (1) | CN111771191B (zh) |
WO (1) | WO2019164774A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11726934B2 (en) * | 2021-09-08 | 2023-08-15 | Level 3 Communications, Llc | Systems and methods for configuration of sequence handlers |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1177666B1 (en) * | 1999-05-10 | 2009-12-16 | Telefonaktiebolaget LM Ericsson (publ) | A distributed system to intelligently establish sessions between anonymous users over various networks |
US20100332968A1 (en) * | 2009-06-26 | 2010-12-30 | International Business Machines Corporation | Generic Declaration of Bindings Between Events and Event Handlers Regardless of Runtime Structure |
CN103279380A (zh) * | 2012-01-05 | 2013-09-04 | 国际商业机器公司 | 信息处理系统和方法 |
US20170006135A1 (en) * | 2015-01-23 | 2017-01-05 | C3, Inc. | Systems, methods, and devices for an enterprise internet-of-things application development platform |
CN106878427A (zh) * | 2017-02-23 | 2017-06-20 | 北京工业大学 | 一种基于分时信任的微服务调度调度方法以及调度中间件 |
US9785482B2 (en) * | 2010-09-17 | 2017-10-10 | Oracle International Corporation | System and method for extending a web service environment to support scalable asynchronous clients |
US20180041467A1 (en) * | 2016-08-05 | 2018-02-08 | Oracle International Corporation | LDAP To SCIM Proxy Service |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5925108A (en) | 1995-11-03 | 1999-07-20 | Novell, Inc. | Event notification in a computer system |
AU4183900A (en) | 1999-04-02 | 2000-10-23 | Powerware Corporation | Systems, methods and computer program products for event and action management in data processing systems using event handler intermediaries |
US8239830B2 (en) | 2006-11-03 | 2012-08-07 | Accenture Global Services Limited | System for portal architecture |
US9589250B2 (en) * | 2008-01-11 | 2017-03-07 | Oracle International Corporation | System and method for asset registration workflows utilizing an eventing infrastructure in a metadata repository |
US9582314B2 (en) | 2009-09-25 | 2017-02-28 | International Business Machines Corporation | Managing data consistency between loosely coupled components in a distributed computing system |
US9886267B2 (en) | 2014-10-30 | 2018-02-06 | Equinix, Inc. | Interconnection platform for real-time configuration and management of a cloud-based services exchange |
US20170187785A1 (en) | 2015-12-23 | 2017-06-29 | Hewlett Packard Enterprise Development Lp | Microservice with decoupled user interface |
US10904074B2 (en) * | 2016-09-17 | 2021-01-26 | Oracle International Corporation | Composite event handler for a multi-tenant identity cloud service |
US10013275B2 (en) * | 2016-11-17 | 2018-07-03 | Red Hat, Inc. | Executing code referenced from a microservice registry |
-
2018
- 2018-02-26 US US15/904,884 patent/US10394628B1/en active Active
-
2019
- 2019-02-18 WO PCT/US2019/018378 patent/WO2019164774A1/en unknown
- 2019-02-18 CN CN201980015493.7A patent/CN111771191B/zh active Active
- 2019-02-18 EP EP19707681.3A patent/EP3759603B1/en active Active
- 2019-06-05 US US16/432,510 patent/US10684898B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1177666B1 (en) * | 1999-05-10 | 2009-12-16 | Telefonaktiebolaget LM Ericsson (publ) | A distributed system to intelligently establish sessions between anonymous users over various networks |
US20100332968A1 (en) * | 2009-06-26 | 2010-12-30 | International Business Machines Corporation | Generic Declaration of Bindings Between Events and Event Handlers Regardless of Runtime Structure |
US9785482B2 (en) * | 2010-09-17 | 2017-10-10 | Oracle International Corporation | System and method for extending a web service environment to support scalable asynchronous clients |
CN103279380A (zh) * | 2012-01-05 | 2013-09-04 | 国际商业机器公司 | 信息处理系统和方法 |
US20170006135A1 (en) * | 2015-01-23 | 2017-01-05 | C3, Inc. | Systems, methods, and devices for an enterprise internet-of-things application development platform |
US20180041467A1 (en) * | 2016-08-05 | 2018-02-08 | Oracle International Corporation | LDAP To SCIM Proxy Service |
CN106878427A (zh) * | 2017-02-23 | 2017-06-20 | 北京工业大学 | 一种基于分时信任的微服务调度调度方法以及调度中间件 |
Non-Patent Citations (1)
Title |
---|
DAVID CHAPPELL: "INTRODUCING THE AZURE SERVICES PLATFORM AN EARLY LOOK AT WINDOWS AZURE, .NET SERVICES, SQL SERVICES, AND LIVE SERVICES", pages 1 - 31, Retrieved from the Internet <URL:http://download.microsoft.com/download/e/4/3/e43bb484-3b52-4fa8-a9f9-ec60a32954bc/Azure_Services_Platform.pdf> * |
Also Published As
Publication number | Publication date |
---|---|
EP3759603B1 (en) | 2022-08-03 |
EP3759603A1 (en) | 2021-01-06 |
US10684898B2 (en) | 2020-06-16 |
US20190310901A1 (en) | 2019-10-10 |
WO2019164774A1 (en) | 2019-08-29 |
US10394628B1 (en) | 2019-08-27 |
CN111771191B (zh) | 2024-07-30 |
US20190266028A1 (en) | 2019-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110311983B (zh) | 服务请求的处理方法、装置、系统、电子设备及存储介质 | |
CN108431763B (zh) | 通过网络服务管理多个云存储装置 | |
US9342333B2 (en) | Backend custom code extensibility | |
US11991094B2 (en) | Metadata driven static determination of controller availability | |
EP3497586A1 (en) | Discovery of calling application for control of file hydration behavior | |
US8352442B2 (en) | Determination of an updated data source from disparate data sources | |
US20070118597A1 (en) | Processing proposed changes to data | |
US9563485B2 (en) | Business transaction context for call graph | |
US10223407B2 (en) | Asynchronous processing time metrics | |
CN114328097A (zh) | 一种文件监控方法、装置、电子设备和存储介质 | |
CN111771191B (zh) | 跨域的内联事件处理程序 | |
CN109074357B (zh) | 动态地管理服务的不同版本 | |
CN111818179A (zh) | 用户请求的处理方法、装置、计算设备和介质 | |
CN112005217A (zh) | 服务于请求的独立线程api调用 | |
US12067422B2 (en) | Dynamically acquiring scoped permissions to perform operations in compute capacity and resources | |
US8650548B2 (en) | Method to derive software use and software data object use characteristics by analyzing attributes of related files | |
US20190155790A1 (en) | Event-based synchronization in a file sharing environment | |
US10037242B2 (en) | Failure detection in a processing system | |
US20240089339A1 (en) | Caching across multiple cloud environments | |
CN116820354B (zh) | 数据存储方法、数据存储装置和数据存储系统 | |
CN115022053A (zh) | 访问区块链网络的方法、装置和系统 | |
CN115866064A (zh) | Redis集群的路由方法、装置、设备、存储介质和程序产品 | |
CN113641966A (zh) | 一种应用集成方法、系统、设备及介质 | |
CN118020066A (zh) | 生成和控制用于存储数据的弹性可伸缩的戳记数据结构 | |
CN113821519A (zh) | 一种数据处理方法以及领域驱动设计架构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |