CN101952799A - 一致地信令状态变更 - Google Patents

一致地信令状态变更 Download PDF

Info

Publication number
CN101952799A
CN101952799A CN2009801066431A CN200980106643A CN101952799A CN 101952799 A CN101952799 A CN 101952799A CN 2009801066431 A CN2009801066431 A CN 2009801066431A CN 200980106643 A CN200980106643 A CN 200980106643A CN 101952799 A CN101952799 A CN 101952799A
Authority
CN
China
Prior art keywords
data
node
asked
structures
mapping
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
Application number
CN2009801066431A
Other languages
English (en)
Other versions
CN101952799B (zh
Inventor
C·A·西泽伯斯基
G·M·凯泽
J·R·威廉姆斯
J·D·多蒂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101952799A publication Critical patent/CN101952799A/zh
Application granted granted Critical
Publication of CN101952799B publication Critical patent/CN101952799B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

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)
  • Stored Programmes (AREA)
  • Hardware Redundancy (AREA)
  • Telephonic Communication Services (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明的信令系统提供了用于传递、报告,和/或以其他方式处理软件依赖关系链中的状态变更的同步方法。在第一阶段,信令系统标识软件组件之间的所有依赖关系,并还用第一表示来设置每一个节点的二进制指示符。在标识源节点中的任何变更(例如,值被更新)之后,系统将每一二进制指示符更新为第二设置。在第二阶段,系统基本上按从源节点,到中间节点,以及最终节点等的渐进次序,启动依赖关系链中的所有监听程序。一旦所有监听程序都有机会基于已更新的值来执行一个或多个进程,系统就可以丢弃依赖关系图,以允许为后续值变更构建新的依赖关系图。

Description

一致地信令状态变更
背景
在计算机化系统内使用的应用程序通常包括出于各种不同的原因而相互依赖的多个不同的组件或模块。例如,简单的计算器应用程序可以包括输出显示组件,该输出显示组件在它标识到从计算模块输出的一个或多个值的任何时刻立即刷新(即,显示新输出)。计算模块进而可被配置成在它接收到来自一个或多个输入组件的一个或多个数字和函数输入的任何时刻执行计算。由此,显示组件将不仅依赖于计算模块,而且还最终依赖于计算器应用程序中的各个输入组件中的每一个。
存在可在软件级配置这些依赖关系的多种不同的方式。例如,上文所描述的计算器模块可以“发布”其计算出的值,以使得正在“监听”该值的任何其他显示组件将在值被发布时标识该值并对其执行某一动作。为标识何时发布值,显示组件进而可以建立监听程序(例如,建立“事件”),该监听程序最终标识和/或接收已发布的值。在其他情况下,计算器模块本身可以被配置成将任何新计算出的值传递(例如,“信令”)给向计算器模块注册的特定其他组件。由此,可以理解,存在用于将数据从一个软件组件传递到另一个软件组件的多种“推”和“拉”样式的机制。
由此,在程序员想要创建模块或组件之间的依赖关系的任何时刻,程序员通常将需要在代码中编写依赖关系,并且有时甚至为该关系创建监听程序。例如,程序员可以编写一个监听程序,该监听程序不仅在一个组件发布值时检索该值,而且还将该值发送到依赖关系链中的另一个组件。程序员也可以或另选地编写其他逻辑,由此组件只在满足了某种特定条件时(例如,值具有特定大小)向上发送值。结果,可以理解,组件链中的每一监听程序都可以按不同的方式,并以不同的速度来处理值。
尽管将逻辑写入到每一监听程序中的能力可以提供某种编程灵活性,但是,它也将会导致过分复杂的依赖关系链,和/或难以保证其准确性。例如,复杂依赖关系链会具有许多不同的监听程序,每一监听程序都有效地以不同的方式,并以不同速率来响应一个或多个源节点中的相同变更。这会导致依赖关系链中的后续组件的竞争条件。具体而言,依赖于从同一个源接收到值的两个组件的依赖子组件最终可以处理来自一个父组件的已正确地更新的值,但是,使用过时的值来再次执行。或者,依赖子组件最终可能由于很有可能永远不会发生的条件而无限地挂起。这可能沿着依赖关系链具有更进一步的连锁反应。
除前面的内容之外,在常规系统的情况下,甚至可以在用于接收信息的更直接的路线可能是优选的情况下使用软件组件之间的相同依赖关系。例如,一个依赖关系链可能涉及从源节点A,到中间节点C,然后到最终节点D的依赖关系。然而,在其他情况下,节点A可能只需要来自最终节点D的值。例如,在第二执行上下文中,最终节点D可能只需知道源节点A已经变更,而不一定立即需要源节点A的值。在大多数情况下,甚至第二执行上下文仍将涉及将变更的实际值从A中继到C到D,即使D只需知道A已经变更。在较长的依赖关系链中,特别是涉及若干不同条件的依赖关系链,仅仅对于最终节点D发现源节点A已经变更将会有较大的、不必要的延迟。
用于克服这些问题的某些常规机制涉及简单地将频繁刷新速率编码到不同的监听程序中的每一个中。虽然在某些情况下有效,但是,可以理解,这在计算上是昂贵的且没有必要,特别是在可能涉及大量监听程序的情况下。例如,依赖关系链中的某些底层源组件可以经常变更,而其他底层组件可能很少或不经常变更。此外,某些其他组件甚至可能不在特定输出中涉及,并因此费力地传递(并计算)这些最终节点处的值将尤其没有必要。例如,电子表格上的只表示最终值但是由于某种原因当前没有显示在显示屏幕上的单元格,可能直到这些单元格在视图内才需要更新。
因此,均码(one-size fits all)方法通常可以是不必要的。此外,在当前的系统中往往充斥着低效,因为常常有依赖关系被注册两次的情况,还因为很少有上游监听程序一定在其他下游监听程序之前处理某些数据的保证。尽管这些类型的问题可能对于少数不经常变更的组件不成问题,但是,这些类型的问题可能不必要地减缓或挂起具有大量不断变更的显示的数据(例如,处理股票行情数据)的系统。此外,这样的问题还可能导致无响应组件,或其他不必要的处理延迟。
因此,存在可以解决的与报告复杂软件依赖关系中的值变更相关联的多个困难。
简要概述
本发明的实现提供确保用于传递、报告和/或以其他方式处理复杂软件依赖关系链中的状态/值变更的同步方法的系统、方法,以及计算机程序产品。具体而言,本发明的实现包括二阶段方法,其中系统建立对应于软件组件的依赖关系链的节点图,并且只在信令所有节点之后才调用节点图中的所有监听程序。由此,并且由于监听程序可以按照依赖关系链次序来调用,因此本发明的实现可以确保所有监听程序有效地基于相关源组件的相同状态,并按适当次序来接收值,由此确保一致性。
例如,根据本发明的一实现的用于处理依赖关系链中一个或多个值的一致集合的方法可以涉及创建对应于多个组件的多个节点,这些组件包括在依赖关系链中次序排序的一个或多个源组件和一个或多个依赖组件。该方法还可以涉及对于每一个节点,将二进制指示符设为指示一个或多个源组件包括初始状态的第一设置。此外,该方法还可以涉及在标识对一个或多个源组件中的后续状态的变更之后,将每一个节点的每一个二进制指示符都设为第二设置。此外,该方法还可以涉及调用已经向已创建的多个节点注册的一个或多个监听程序。在此情况下,一个或多个监听程序被同步,以基于一个或多个源组件中的后续状态来执行。
此外,根据本发明的一实现的用于只基于一组有保证的值来创建和更新存储器中数据结构的另一种方法可以涉及创建初始节点图。初始节点图对应于多个组件,这些组件包括依赖于一个或多个源组件的一个或多个依赖组件。在此情况下,初始节点图中的每一个节点都被设为第一设置。该方法还可以涉及在标识一个或多个源组件已变更为已更新的值时,高速缓存已更新的值,并启动向初始节点图注册的所有监听程序以基于已更新的值来执行处理。此外,该方法还可以涉及在所有已启动的监听程序都已经完成基于已更新的值的处理之后丢弃初始节点图。此外,该方法还可以涉及基于对一个或多个源组件的一个或多个后续变更来创建后续节点图。
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
本发明的附加特征和优点将在以下描述中叙述,且其一部分根据本说明书将是显而易见的,或可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些和其他特征将通过以下描述和所附权利要求书变得更加显而易见,或可通过对下文中所述的本发明的实践来领会。
附图简述
为了描述可获得本发明的上述和其它优点和特征的方式,将通过参考附图中示出的本发明的具体实施方式来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图仅描述本发明的典型实施例,从而不被认为是对其范围的限制,本发明将通过使用附图用附加特征和细节来描述和说明,在附图中:
图1A示出了其中根据本发明的一实现的信令系统标识依赖关系链中的节点的概略示意图;
图1B示出了其中根据本发明的一实现的信令系统信令依赖关系链中的每一个节点的概略示意图;
图1C示出了其中根据本发明的一实现的信令系统在信令依赖关系链中的各节点之后调用监听程序的概略示意图;
图2示出了根据本发明的一实现的用于确保依赖关系链中的依赖节点之间的一致性的方法的流程图;以及
图3示出了根据本发明的一实现的用于创建不同的依赖关系链结构以确保节点之间的一致性的的方法的流程图。
详细描述
本发明的各个实现涉及确保用于传递、报告和/或以其他方式处理复杂软件依赖关系链中的状态/值变更的同步方法的系统、方法,以及计算机程序产品。具体而言,本发明的实现包括二阶段方法,其中,系统建立对应于软件组件的依赖关系链的节点图,并且只有在信令所有节点之后才调用节点图中的所有监听程序。由此,并且由于监听程序可以按照依赖关系链次序来调用,因此本发明的各个实现可以确保所有监听程序有效地基于相关源组件的相同状态,并按适当次序来接收值,由此确保一致性。
由此处更加全面地理解的,可以至少部分地使用二阶段通知,以及至多一次通知传递来实现这些及其他优点。此外,如此处所描述的有向通知图按依赖次序提供状态变更通知(如图形状所示)。具体而言,状态变更的通知(而不必传递已变更的值)只在程序可以正确地确定所有过时的节点都是过时的之后才发生。由此,对于给定节点,通知只发生一次(解决了循环)。结果,本发明的这些及其他方面可以被理解为提供有关依赖状态的合理假设,并可以有助于在多线程环境中维护系统的保证。
图1A示出了概略示意图,其中信令系统100为依赖关系链中的依赖软件组件的至少一个集合准备节点图,以便确保一致的信令。例如,图1A示出系统100包括组件A 110、B 120、C 130、D 140、E 150,以及F 160。此外,图1A还示出组件A 110依赖于组件B 120和组件C,而组件B 120依赖于组件D140,且组件C依赖于组件E 150。此外,图1A还示出组件D 140依赖于组件F 160,并且组件D以及组件E有条件地彼此相关。例如,组件E可能只有在由组件D产生的值具有特定大小或长度等的情况下才计算值。
由此,软件组件A-F的这一集合通常可以被认为形成“依赖关系链”,该依赖关系链包括多个源节点、依赖节点,和/或最终节点。在此特定示例中,组件F 160本质上可以被理解为依赖关系链中的源节点。相反,组件B、C、D,以及E本质上可以被理解为中间节点,而组件A可以被理解为依赖关系链中的依赖节点。
然而,当然还可以理解,依赖关系链中的任何给定节点都可以被认为是相对于依赖关系链中的另一个节点的依赖节点、中间节点或源节点。例如,组件D 140可以被认为是对于组件B 120和/或组件E 150的源节点。类似地,组件E 150也可以被认为是对于组件C 130的源节点,等等。此外,还可以理解,所示出的依赖关系链可取决于各种执行上下文在几乎任何时刻延长、缩短,以及变得更复杂或更容易。例如,组件A可以包括用于在一个计算中涉及组件B-F的一个特定计算的输出模块,但在其他计算中涉及更多或更少的这样的组件节点。
图1A示出系统100可以准备对应于(或以其他方式表示)软件组件的依赖关系链的节点图113。一般而言,节点图113包括一组具有链接节点(110a、120a、130a、140a、150a以及160a)的存储器中数据结构,这些节点基于相关软件组件(例如,110、120、130、140、150、160)中的状态变更来创建和丢弃。例如,在请求通过组件A进行某种处理时,处理模块105为该特定请求遍历依赖关系链中的每一个软件组件110、120、130、140、150、160,并准备对应的节点图113。具体而言,图1A示出处理模块105准备包括节点110a、120a、130a、140a、150a,以及160a的节点图113,而这些节点分别对应于组件110、120、130、140、150,以及160。
除节点图113之外,图1A还示出处理模块105还在监听程序注册表170中注册每一个软件组件的每一个不同的监听程序。例如,在遍历各个组件110、120、130等以标识依赖关系时,每一组件也可以提供特定监听程序的指示。然后,处理模块105可以在标识到时并由此按依赖关系链中的适当或确切次序在监听程序注册表中注册每一个已标识的监听程序次序。例如,图1A示出组件B 120,D 145,以及E 155各自分别使用诸如监听程序B 125,D 145,以及E 155之类的监听程序。因此,图1A示出监听程序注册表170包括按相对依赖关系链次序的监听程序D 145,监听程序E 155,以及监听程序B 125的表示。
在任何情况下,系统100都可以创建和丢弃节点图113,以反映和管理软件组件状态的变更。例如,当源节点F等于一个值(例如,“0”或“状态1”165)时,处理模块105可能已经创建此特定节点图113。当源节点F从第一状态变更为另一个后续状态或值(例如,从“0”到“10”-未示出)时,系统100(例如,经由处理模块105)然后可以更新节点图113,以反映已经发生变更这一事实。然后,系统100可以使节点图113保持在此特定状态,直到诸如所有组件都有机会完成任何所需处理之类的时刻。一旦各种组件110、120、130完成处理源节点中的最初导致对节点图113的变更的变更,处理模块105然后就可以丢弃节点图113,并在必要时利用新的这样的节点图再次开始。结果,在组件110、120、130正在处理先前的变更(例如,从“0”变为“10”)时,系统100基本上禁止对应的节点接收新的状态更新。
软件组件中的处理的一致性和单一性至少部分地使用根据本发明的各个实现的一个或多个信令特征来启用。例如,图1A示出节点图113中的各个节点110a、120a等中的每一个都包括(或备有)二进制指示符,如二进制指示符117a、127a、137a、147a、157a和167a。在此特定图示中,二进制指示符被示为“+”号,以标识特定的初始或第一设置。具体而言,所示出的情况下的“+”号意味着依赖关系链所基于的给定软件源组件(例如,组件160,状态165)的、在已经处理任何变更之前的默认值。
由此,并且如此处更加全面地理解的,节点图113可以被设为二进制指示符中的变更链接到原始源节点的特定状态。例如,只要接收到组件F 160的状态变更(即,消息180),系统100就可以高速缓存新的值(例如,从“0”变为“10”),并自动将新的值链接到节点图113,而不管源组件F 160可能发生的任何其他后续变更。此外,系统100还可以在需要时将对源组件(例如,组件F 160)的值的任何后续变更链接到新的(或刷新的)节点图(未示出)。
由此,“二进制”指示符只能变为一个其他值,并且如此处所讨论的,只变更一次。由此,当处理模块105标识特定软件源组件(例如,160)的值的变更时,二进制指示符117a、127a等只更新一次以反映该变更。例如,图1A示出处理模块105接收指示组件F 160已经被更新的消息180。如图1B所示,处理模块105然后通过不同的节点110a,120a等中的每一个来发送信号185。信号185进而包括将二进制指示符从“+”状态变更为“-”状态的记法,并由此简单地将二进制指示符上的初始设置更新为后续设置。
此外,信号185基本上按照从源节点F 160a开始的依赖关系链次序发送。例如,图1B示出信号185首先被发送到节点F 160a,然后被发送到节点D 140a和E 150a等等,这导致二进制指示符从设置167a、157a,以及147a(即,“+”)分别变为设置167b、157b,以及147b(即,“-”)。最终,信号185将经过每一依赖关系,直到节点图113中的所有节点都接收到信号185。在大多数情况下,每一个节点都将只接收信号一次。然而,本发明的各个实现可以适应其中节点由于任何其他原因接收信号的重复(或任何其他信号)的情况,因为每一个二进制指示符变更“至多一次”。
具体而言,由于每一个二进制指示符147只可变更一次(即,“至多一次”),因此没有其他信号(或信号的重复)可以变更已变更的/已更新的节点的二进制指示符。即,在具体引用这些附图中所使用的术语的情况下,一旦被设为所示出的“-”号,则给定二进制指示符不能变回到“+”号。由此,所示出的节点图113的信令路径甚至在某些节点无意中来回循环特定信号185的情况下也将仍然起作用。当然,除了二进制指示符的“至多一次”变更的配置以外,节点本身可以被配置成避免这些种类的问题。例如,在至少一个实现中,节点图113中的每一个节点在创建时被配置成不具有到另一个节点的反向通道。由此,尽管节点F 160a将信号185至少中继到节点D 140a,但是节点F 140a不能接受来自节点D 140a的返回信号。
系统100还确保直到给定节点图中的所有节点都已经更新(经由信号185),该特定依赖关系链中的处理才会发生。例如,在至少一个实现中,系统100通过保持对监听程序125、145或155的调用来确保此一致性,直到在所有二进制指示符都已经被设置和更新之后,或直到在信号185已经到达节点图113中的所有节点至少一次之后。因此,在这样的实现中,节点图的初始创建(例如,图1A)将由于仅仅发现监听程序125、145以及155而不会导致任何处理。甚至在系统100接收到对组件F的更新(例如,消息180)时,系统100也不会调用监听程序125、145155中的任一个,直到二进制指示符被更新以反映源节点处的初始变更。
除在更新所有二进制指示符之后调用监听程序之外,系统100还可以通过按特定次序调用监听程序来增强一致性。例如,图1A-1C示出监听程序注册表170基本上以处理模块105标识监听程序125、145以及145的次序存储对这些监听程序的引用。具体而言,图1A-1C示出监听程序注册表170存储次序是首先监听程序D 145、监听程序E 155,以及监听程序B 125的这些特定监听程序的次序。结果,当处理模块105最终调用这些特定监听程序时,处理模块105只按近似的处理次序来这样做。例如,图1C示出处理模块105通过节点图113按近似的依赖关系链次序来应用消息190,以使得对应于节点D 140a和E 150a的监听程序D 145和E 155在对应于节点B 120a的监听程序B 125之前被调用。
当系统100调用这些监听程序中的每一个时,每一个对应的软件组件都可以基于源组件处的值变更来执行处理。例如,一旦监听程序145被调用,软件组件D 140就可以对与此节点图113相关联的高速缓存的值(例如,源组件F160的当前值)执行任何处理。一旦监听程序E 155和B 125被调用,组件E 150和B 120就可以检索已经从节点D处理和/或提供的任何值,该值基于来自消息180的对组件F的最近更新。
可以理解,由此系统100不仅对对每一监听程序的调用进行排序,而且还对沿着依赖关系链的连续值的处理进行排序。这显著地增加特定软件组件从另一个源/中间节点中检索到的每一个值只基于已经处理的最新值的可能性。此外,一旦已经基于组件F 160的所分配的状态调用了所有监听程序,并且所有处理都已经完成,则处理模块150然后就丢弃节点图113。如果需要的话,系统100还可以准备对应于组件F中的又一个变更的另一个节点图。
因此,图1A、1B和1C提供了一个或多个示意图或组件,其用于确保依赖关系链中的组件基本上以正确的次序有效地一次只处理源节点中的一个状态变更。这可以提供多个重要保证,并可以缓解或以其他方式消除有时由于这些特定情况下的竞争条件(在同一个链中的当前值和旧值的处理之间)而引发的顾虑。
除了上述内容之外,本发明的各实现还可以按照包括用于实现特定结果的一个或多个动作的方法来描述。例如,图2示出了处理依赖关系链中的一个或多个值的一致集合的方法的流程图。此外,图3还示出了只基于一组有保证的值来创建和更新表示依赖关系链的存储器中数据结构的附加或替换方法。图2和3的流程图中的动作在下文中参考图1A-1C的组件和示意图来描述。
例如,图2示出处理依赖关系链中一个或多个值的一致集合的方法可以包括标识依赖关系链中的节点的动作200。动作200包括创建对应于多个组件的多个节点,这些组件包括在依赖关系链中排序的一个或多个源组件和一个或多个依赖组件。例如,处理模块105从组件A 110接收处理请求,并遍历对应的依赖关系链以标识组件A所依赖的每一个不同的组件。然后,处理模块105然后创建对应的节点图113数据结构,该数据结构包括依赖关系链中的与已标识的A所依赖的组件相关的一个或多个节点。
图2还示出该方法可以包括为每一个节点设置二进制指示符的动作210。动作210包括对于每一个节点,将二进制指示符设为指示一个或多个源组件包括初始状态的第一设置。例如,图1A示出处理模块105为节点图113中的每一个节点创建并设置二进制指示符117a、127a、137a、147a、157a和167a。在一个实现中,该特定二进制指示符被设为初始状态(165),该初始状态(165)有效地阐明一个或多个源组件(例如,组件F 160)的值从建立节点图以来尚未变更。
此外,图2还示出该方法可以包括在源节点变更之后将所有二进制指示符都设为第二设置的动作220。动作220包括在标识对一个或多个源组件中的后续状态的变更之后,将每一个节点的每一个二进制指示符都设为第二设置。例如,如图1B所示,一旦处理模块105标识对节点F的变更,处理模块105就立即开始信令该变更,如通过首先将节点图113中的每一个二进制指示符都变更为替换、后续表示。具体而言,图1B示出处理模块105向节点图113中的每一个节点传递信号185,以便将“+”设置变更为“-”。
此外,图2还示出该方法可以包括调用依赖关系链中的所有监听程序的动作230。动作230包括调用已经向已创建的多个节点注册的一个或多个监听程序,其中该一个或多个监听程序被同步以基于一个或多个源组件中的后续状态来执行。例如,既然每一个二进制指示符都已经变为减号,图1C示出系统100调用每一个组件的每一监听程序,并按照最初在依赖关系链中标识这些监听程序的次序(例如,从最接近源节点向上至最接近最终节点)来这样做。例如,图1C示出系统100首先调用监听程序D 145,然后调用监听程序E 155,以及监听程序B 125,等等。
除前面的内容之外,图3还示出根据本发明的用于只基于一组有保证的值来生成依赖关系链的附加或替换方法可以包括基于第一状态来创建节点图的动作300。动作300包括创建对应于包括依赖于一个或多个源组件的一个或多个依赖组件的多个组件的初始节点图,其中初始节点图中的每一个节点都被设为第一设置。例如,图1A示出处理模块105在标识处理请求180之后遍历组件110、120、130、140、150、160,以创建包括对应的节点110a、120a等的节点图113。在此情况下,处理模块105还将每一个节点中的二进制指示符(117a、127a等)设为初始状态(即,“+”),以指示节点图113基于源节点组件F 160的初始状态(165)。
图3还示出该方法可以包括在已经复制状态变更之后调用所有监听程序的动作310。动作310包括,在标识一个或多个源组件已经变为已更新的值之后,高速缓存已更新的值并启动向初始节点图注册的所有监听程序,以基于已更新的值来执行处理。例如,图1B和1C示出在接收到用于更新组件节点F的消息180之后,处理模块105以替换指定变更所有二进制指示符,如节点图113中的147b、157b、167b(即,变为“-”),并且还调用注册表170中的所有监听程序。
此外,图3还示出该方法可以包括丢弃节点图的动作320。动作320包括在所有已启动的监听程序都已经完成基于已更新的值的处理之后丢弃初始节点图。例如,在如图3所示的每一监听程序都已经访问了对节点图113可用的最新近的值之后,处理模块105丢弃节点图113。由于不同的二进制指示符147b、157b等中的每一个都只能变更一次,因此没有其他对不同的组件或节点的后续变更可由任一个其他被调用的监听程序复制和处理。由此,系统100丢弃依赖关系节点图113。
此外,图3还示出该方法可以包括基于已更新的状态来创建新节点图的动作330。动作330包括基于对一个或多个源组件的一个或多个后续变更来创建后续节点图。由此,例如,在组件A 110接收到新的处理请求时,处理模块105然后可以再次遍历涉及该特定处理请求的依赖关系链的集合,并标识涉及新节点图(未示出)的新的节点集合。如同节点图113,虽然基于对对应的源节点的更新近的变更,但该新节点图也将是存储器中数据结构。具体而言,节点图可以包括如图1A所示的相同表示,但是也可以包括不同的组件或节点,因为执行上下文可能不同,并可能具有不同的依赖关系。
可以理解,该新节点图和新依赖关系链的创建可按需不断刷新,重新创建并丢弃。在任一种情况下,本发明的各实现由此确保在特定节点图上下文中,源节点值变更在整个依赖关系链中只被以一致的方式处理一次。因此,本发明的各实现甚至在软件组件的非常复杂的依赖关系链中也可以确保值处理的高度准确性和一致性。
本发明的各实施例可以包括其中包含各种计算机硬件的特殊用途或通用计算机,如下面比较详细地讨论的。在本发明的范围内的各实施例还包括用于携带或在其上存储计算机可执行指令和/或数据结构的计算机可读介质。这样的计算机可读介质可以是可以被通用或专用计算机访问的任何可用的介质。
作为示例而非限制,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁存储设备,或可以用来携带或存储所需要的以计算机可执行指令或数据结构的形式存在的程序代码装置并可以被通用或专用计算机访问的任何其他介质。当通过网络或另一种通信连接(硬连线、无线,或硬连线或者无线的组合)向计算机传输或提供信息时,计算机正常地将连接认为是计算机可读介质。由此,任何这样的连接被适当地称为“计算机可读介质”。上面各项的组合也应该包括在计算机可读介质的范围内。
计算机可执行的指令包括,例如,使通用计算机、专用计算机,或特殊用途处理设备执行某一函数或一组函数的指令和数据。尽管已经用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的本主题不必受公开的这些具体特征或动作的限制。相反,上文所描述的具体特征和动作是作为实现权利要求的示例形式来公开的。
在不偏离本发明的精神和基本特征的情况下,本发明可以以其他特定形式来实现。所描述的实施例在各个方面都只作为说明性的,而不是限制性的。因此,本发明的范围由所附权利要求书而不是由前面的描述指出。在权利要求的等效内的含义和范围内的所有更改都将包括在它们的范围内。

Claims (18)

1.一种在计算机化环境的面向对象的系统(100)中的方法,所述系统(100)包括使用对应于基于不同数据形状(135、140、145)的不同类型结构的一个或多个数据元素的一个或多个应用程序(120、125、130),所述方法使用公共数据结构(110)来自动向应用程序提供对不同结构类型的数据的访问,以使得使用不同结构类型的应用程序可以互操作,所述方法包括以下动作:
从应用程序(120)接收(340)对由一个或多个不同的应用程序(125、130)维护的数据(127、133)的一个或多个访问请求(180),其中所请求的数据对应于一个或多个不同的类型结构;
标识(350)对应于所述一个或多个不同的应用程序的一个或多个代理(165、170、175);
使用所标识的一个或多个代理来将所请求的数据映射(360)到公共数据结构(110),其中所标识的一个或多个代理创建将所请求的数据(127、133)映射到所述公共数据结构(110)的映射数据结构(195);以及
将所述映射数据结构(195)提供给作出请求的应用程序。
2.如权利要求1所述的方法,其特征在于,所标识的代理中的至少一个是由所述一个或多个不同的应用程序中的一个提供的。
3.如权利要求1所述的方法,其特征在于,所标识的代理中的至少一个是由所述系统(100)提供给所述一个或多个不同的应用程序中的一个的默认代理。
4.如权利要求1所述的方法,其特征在于,还包括将所述公共数据结构(110)中的多个结构类型中的一个分配给所请求的数据的动作。
5.如权利要求4所述的方法,其特征在于,还包括在所述一个或多个不同的应用程序(125、130)中的每一个中为所请求的数据标识一个或多个数据形状(135、140、145)的动作。
6.如权利要求4所述的方法,其特征在于,所述公共数据结构(110)包括对于操作的结构类型、对于序列的结构类型、对于记录的结构类型、以及对于具有不可识别的数据形状的数据的结构类型。
7.如权利要求6所述的方法,其特征在于,映射所请求的数据还包括以下动作:
确定所述一个或多个数据形状(135、140、145)中的一个数据形状对应于返回值的自变量或函数;以及
将对应于所述一个数据形状(135)的所请求的数据分配到操作结构类型。
8.如权利要求6所述的方法,其特征在于,映射所请求的数据还包括以下动作:
确定所请求的数据中的至少某些数据对应于未定义的数据形状;以及
将所述至少某些数据分配到对于未定义的数据形状的结构类型。
9.如权利要求6所述的方法,其特征在于,映射所请求的数据还包括确定所述一个或多个数据形状(135、140、145)中的一个对应于值的集合的动作。
10.如权利要求9所述的方法,其特征在于,还包括以下动作:
确定所述值的集合不具有可标识标签;以及
将所述数据集合分配到序列结构类型。
11.如权利要求9所述的方法,其特征在于,还包括以下动作:
确定所述值的集合具有一个或多个可标识标签;以及
将所述数据集合分配到记录结构类型。
12.如权利要求1所述的方法,其特征在于,还包括以下动作:
接收对所请求的数据中的至少某一些执行一个或多个操作的一个或多个请求;以及
通过所述映射数据结构(195)来处理所述一个或多个操作。
13.一种在计算机化环境中的应用程序(120)处的方法,所述计算机化环境包括面向对象的系统(100)以及安装在所述系统中的一个或多个应用程序(120、125、130),所述应用程序实现具有不同类型结构的一个或多个数据元素,所述方法通过公共数据结构(110)访问对应于一个或多个不同类型结构的数据,所述方法包括以下动作:
发送(300)对对应于一个或多个不同类型结构的数据(127、133)的一个或多个访问请求;
接收(310)一个或多个映射数据结构(195),所述映射数据结构(195)包括所述所请求的数据和公共数据结构(110)的一个或多个结构类型之间的映射信息(210、220、230);
请求(320)对所述一个或多个映射数据结构(195)的一个或多个操作(200),其中所请求的一个或多个动作被转换为所述一个或多个不同类型结构的数据(127、133);以及
接收(330)对对应于所述一个或多个不同类型结构的所请求的数据(127、133)的所请求的一个或多个动作已经完成的一个或多个确认。
14.如权利要求13所述的方法,其特征在于,所述一个或多个映射数据结构(195)指示所请求的数据(127、133)中的至少某一些包括一个或多个值的集合,其中所述集合被分配到记录结构类型。
15.如权利要求16所述的方法,其特征在于,所述请求一个或多个操作的动作(320)还包括:
请求对应于所述一个或多个值中的一个的记录的改变;
其中所述一个或多个确认标识所述改变是在所述记录中完成的。
16.如权利要求13所述的方法,其特征在于,所述一个或多个映射数据结构(195)指示所请求的数据(127、133)中的至少某一些包括被分配到操作结构类型的一个或多个函数。
17.如权利要求16所述的方法,其特征在于,所述请求一个或多个操作的动作(320)还包括:
请求对应于所述操作结构类型的一个或多个函数由维护所请求的数据(127、133)的不同应用程序(125、130)执行;
其中所述一个或多个确认指示所述一个或多个函数已被执行。
18.一种在计算机化环境的面向对象的系统(100)中的计算机程序存储产品,所述系统(100)包括使用对应于基于不同数据形状(135、140、145)的不同类型结构的一个或多个数据元素的一个或多个应用程序(120、125、130),在所述计算机程序存储产品上存储有计算机可执行指令,所述指令在被执行时使所述系统中的一个或多个处理器执行包括以下动作的方法:
从应用程序(120)接收(340)对由一个或多个不同的应用程序(125、130)维护的数据(127、133)的一个或多个访问请求(180),其中所请求的数据对应于一个或多个不同的类型结构;
标识(350)对应于所述一个或多个不同的应用程序的一个或多个代理(165、170、175);
使用所标识的一个或多个代理来将所请求的数据映射(360)到公共数据结构(110),其中所标识的一个或多个代理创建将所请求的数据(127、133)映射到所述公共数据结构(110)的映射数据结构(195);以及
将所述映射数据结构(195)提供给作出请求的应用程序。
CN2009801066431A 2008-02-25 2009-01-23 一致地信令状态变更 Active CN101952799B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/037,004 US7860900B2 (en) 2008-02-25 2008-02-25 Consistently signaling state changes
US12/037,004 2008-02-25
PCT/US2009/031890 WO2009108427A2 (en) 2008-02-25 2009-01-23 Consistently signaling state changes

Publications (2)

Publication Number Publication Date
CN101952799A true CN101952799A (zh) 2011-01-19
CN101952799B CN101952799B (zh) 2013-06-26

Family

ID=40999338

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009801066431A Active CN101952799B (zh) 2008-02-25 2009-01-23 一致地信令状态变更

Country Status (5)

Country Link
US (1) US7860900B2 (zh)
EP (1) EP2260378A4 (zh)
JP (1) JP5129351B2 (zh)
CN (1) CN101952799B (zh)
WO (1) WO2009108427A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110413632A (zh) * 2018-04-26 2019-11-05 腾讯科技(深圳)有限公司 管理状态的方法、装置、计算机可读介质及电子设备
CN111736836A (zh) * 2020-07-22 2020-10-02 平安国际智慧城市科技股份有限公司 基于关系图的组件配置方法、装置及计算机可读存储介质
CN112101560A (zh) * 2016-06-09 2020-12-18 谷歌有限责任公司 校准系统、方法和装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719841B2 (en) * 2007-11-16 2014-05-06 Microsoft Corporation Dispatch mechanism for coordinating application and communication medium state
US8505030B2 (en) * 2007-11-16 2013-08-06 Microsoft Corporation Coordinating resources using a volatile network intermediary
US9021503B2 (en) * 2007-11-16 2015-04-28 Microsoft Technology Licensing, Llc Coordinating application state and communication medium state
US7899798B2 (en) * 2008-02-25 2011-03-01 Microsoft Corporation Observing and reporting changes in complex software dependencies
US8301706B2 (en) 2009-06-15 2012-10-30 Microsoft Corporation Routing of pooled messages via an intermediary
US8549538B2 (en) * 2010-03-18 2013-10-01 Microsoft Corporation Coordinating communication medium state for subtasks
US8250234B2 (en) 2010-04-26 2012-08-21 Microsoft Corporation Hierarchically disassembling messages
CN101840230B (zh) * 2010-06-04 2012-02-01 浙江中控技术股份有限公司 一种监控和管理数据的方法及系统
JP2012088815A (ja) * 2010-10-15 2012-05-10 Toshiba Corp マイクロプロセッサ動作監視システム
EP2611158B1 (en) 2011-12-29 2019-12-18 Swisscom AG Method and system for optimized delta encoding
GB2506596A (en) 2012-10-02 2014-04-09 Ibm Managing a set of software modules in a runtime environment
US9880918B2 (en) * 2014-06-16 2018-01-30 Amazon Technologies, Inc. Mobile and remote runtime integration
US20210042167A1 (en) * 2019-08-07 2021-02-11 Microsoft Technology Licensing, Llc Dynamic Package Dependency(ies)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1573692A (zh) * 2003-06-20 2005-02-02 微软公司 基于依存关系的包部署
CN1617501A (zh) * 2003-10-23 2005-05-18 微软公司 向应用程序通知状态变化的灵活体系结构
CN1682196A (zh) * 2002-09-11 2005-10-12 国际商业器公司 分布式系统中的识别根原因和确定问题的方法和设备

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317734A (en) 1989-08-29 1994-05-31 North American Philips Corporation Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies
FR2681451B1 (fr) * 1991-09-13 1993-11-12 Bull Sa Procede de gestion d'objets structures.
DE69528749T2 (de) * 1995-02-17 2003-09-18 Ibm Objektorientierte Programmierschnittstelle zur Entwicklung und zur Ausführung einer Netzwerkverwaltungsapplikation auf einer Netzwerkkommunikationsinfrastruktur
US5808625A (en) 1995-08-04 1998-09-15 Silicon Graphics Incorporated System and method for using dependency graphs for the control of a graphics creation process
US6817019B1 (en) 1996-05-31 2004-11-09 International Business Machines Corporation Tracking and propagating updates to a message-driven system of interdependent components
US6718550B1 (en) * 1996-06-26 2004-04-06 Sun Microsystems, Inc. Method and apparatus for improving the performance of object invocation
US6256712B1 (en) 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
US6538651B1 (en) 1999-03-19 2003-03-25 John Hayman Parametric geometric element definition and generation system and method
US20030014513A1 (en) 2000-12-27 2003-01-16 Ruths Derek Augustus Samuel System and method for collaborative data resource representation
US7133874B2 (en) * 2001-12-13 2006-11-07 Microsoft Corporation Prototyping model for components of a software program
US20030140058A1 (en) * 2002-01-18 2003-07-24 Vitria Technology, Inc. Method and apparatus for sharing information between applications using common objects
CA2373211A1 (en) 2002-02-22 2003-08-22 Catena Networks Canada Inc. Fault notification filtering
US20040024807A1 (en) 2002-07-31 2004-02-05 Microsoft Corporation Asynchronous updates of weakly consistent distributed state information
WO2004086198A2 (en) * 2003-03-24 2004-10-07 Siebel Systems, Inc. Common common object
US7529823B2 (en) * 2003-03-27 2009-05-05 Microsoft Corporation Notifications for shared resources
US20040268302A1 (en) * 2003-06-26 2004-12-30 Microsoft Corporation Framework for determining and exposing binary dependencies
US7562346B2 (en) * 2003-09-02 2009-07-14 Microsoft Corporation Software componentization for building a software product
US7415706B1 (en) * 2003-12-01 2008-08-19 Cisco Technology, Inc. Dynamic handling of multiple software component versions for device management
US7568195B2 (en) * 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US7660805B2 (en) * 2003-12-23 2010-02-09 Canon Kabushiki Kaisha Method of generating data servers for heterogeneous data sources
US20050203920A1 (en) * 2004-03-10 2005-09-15 Yu Deng Metadata-related mappings in a system
US20070156737A1 (en) * 2005-12-15 2007-07-05 First Data Corporation Application integration systems and methods
US7904892B2 (en) * 2006-01-06 2011-03-08 Northrop Grumman Corporation Systems and methods for identifying and displaying dependencies

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1682196A (zh) * 2002-09-11 2005-10-12 国际商业器公司 分布式系统中的识别根原因和确定问题的方法和设备
CN1573692A (zh) * 2003-06-20 2005-02-02 微软公司 基于依存关系的包部署
CN1617501A (zh) * 2003-10-23 2005-05-18 微软公司 向应用程序通知状态变化的灵活体系结构

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112101560A (zh) * 2016-06-09 2020-12-18 谷歌有限责任公司 校准系统、方法和装置
CN110413632A (zh) * 2018-04-26 2019-11-05 腾讯科技(深圳)有限公司 管理状态的方法、装置、计算机可读介质及电子设备
CN110413632B (zh) * 2018-04-26 2023-05-30 腾讯科技(深圳)有限公司 管理状态的方法、装置、计算机可读介质及电子设备
CN111736836A (zh) * 2020-07-22 2020-10-02 平安国际智慧城市科技股份有限公司 基于关系图的组件配置方法、装置及计算机可读存储介质
CN111736836B (zh) * 2020-07-22 2020-11-17 平安国际智慧城市科技股份有限公司 基于关系图的组件配置方法、装置及计算机可读存储介质

Also Published As

Publication number Publication date
EP2260378A4 (en) 2012-10-31
CN101952799B (zh) 2013-06-26
US20090216793A1 (en) 2009-08-27
JP2011513835A (ja) 2011-04-28
US7860900B2 (en) 2010-12-28
WO2009108427A2 (en) 2009-09-03
EP2260378A2 (en) 2010-12-15
JP5129351B2 (ja) 2013-01-30
WO2009108427A3 (en) 2009-11-05

Similar Documents

Publication Publication Date Title
CN101952799A (zh) 一致地信令状态变更
CN108985937B (zh) 一种基于区块链技术的计算资源共享方法及区块链系统
CN111651471B (zh) 目标数据查询方法、装置、电子设备及存储介质
CN112698971A (zh) 基于规则引擎的参数转换方法、装置、设备及介质
CN114579654B (zh) 一种银行多支付结算系统的统一运营管理方法及平台系统
CN112131013A (zh) 分布式系统中调用链的监控方法、装置、设备及存储介质
CN104007973A (zh) 一种跨系统数据交互方法及平台
CN117336135A (zh) 数据传输方法、装置、存储介质以及电子设备
CN111651494B (zh) 数据处理方法、装置、设备及计算机可读存储介质
CN101930365A (zh) 一种基于元数据和反射机制的aop应用程序中结构冲突的处理方法
CN109829016B (zh) 一种数据同步方法及装置
CN114969071A (zh) 一种数据更新方法及装置
CN112416980A (zh) 数据业务处理方法、装置及设备
CN104298490A (zh) 一种基于面向服务的架构的服务发布方法及装置
CN108958840B (zh) 一种集群配置动态探测合并加载方法
CN113268478A (zh) 大数据分析方法、装置、电子设备及存储介质
CN106776035B (zh) 实现跨系统多单据算法的对接方法、系统及请求异构系统
CN112819606A (zh) 中台化的跨行业积分结算方法及系统
CN114219464A (zh) 自动充值方法、装置、电子设备及存储介质
CN113472880B (zh) 微服务架构中基于数据库配置的网关处理方法及系统
CN117172925B (zh) 一种交易处理方法、装置、设备及介质
CN113129027B (zh) 基于区块链的对象管理方法、装置、计算设备和存储介质
RU2815189C1 (ru) Способ временной синхронизации работы массивно-параллельной вычислительной системы с распределенной памятью
CN114244776B (zh) 一种报文发送方法、系统、装置、设备及介质
CN111159013B (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
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150508

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150508

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.