CN102893272B - 对象的共享和同步 - Google Patents

对象的共享和同步 Download PDF

Info

Publication number
CN102893272B
CN102893272B CN201180024482.9A CN201180024482A CN102893272B CN 102893272 B CN102893272 B CN 102893272B CN 201180024482 A CN201180024482 A CN 201180024482A CN 102893272 B CN102893272 B CN 102893272B
Authority
CN
China
Prior art keywords
machine
data object
program
data
shared
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.)
Active
Application number
CN201180024482.9A
Other languages
English (en)
Other versions
CN102893272A (zh
Inventor
M·S·奥古斯汀
J·博克哈德特
B·M·兰伯特
R·E·奥奇
J·E·施莱费尔
R·Z·斯派尔
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 Technology Licensing LLC
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 Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102893272A publication Critical patent/CN102893272A/zh
Application granted granted Critical
Publication of CN102893272B publication Critical patent/CN102893272B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Abstract

对象的共享可按照允许程序用与它们使用本地对象时大体相同的方式使用共享对象的方式实现。在一个示例中,程序通过会被用来创建本地对象的正常指令创建对象并设置属性。然后程序向共享对象模型注册对象,该模型可由共享对象服务器维护。对其上可使用对象的每个机器,共享对象运行时监视对于对象的变更,并将这些变更通知给服务器。服务器更新对象,并将对于对象状态的变更通知给其它机器。那些机器上的共享对象运行时接收关于变更的通知,并更新本地拷贝。

Description

对象的共享和同步
背景
随着计算机和其它设备的连接性的提高,通常是运行在不同计算机上的不同程序共享对相同信息的访问变得普遍。在互连计算的早期,数据单元通常是通过操作员指示的特定事件在程序和/或机器之间传输。例如,可通过电子邮件或文件传输协议(FTP)将数据文件从一处发送至另一处。管道是允许两个正在运行的程序之间共享数据的一种早期机制,但该技术相当受限制,因为它只允许一个正在运行的程序将其输出发送给另一个正在运行的程序作为输入。现代程序的体系结构通常要求程序之间对数据的更丰富且更复杂的共享。
当某些现代程序被设计为互相共享数据时,从程序员的角度,数据共享的实现会是相对复杂的。通常程序的实现者之一必须编写用于执行使得数据共享工作的各种任务的代码。例如,程序可包括用于监听传入数据和发送传出数据的代码。当两个程序以这种方式共享数据时,这些程序通常需要就数据交换的机制达成一致。所商定的机制的性质通常特定于被共享的数据的类型。例如,如果多个程序想要共享图形信息,它们通常需要实现一共享机制,该机制考虑将将在程序之间交换的信息的种类、传送此信息将使用的格式、数据之间的冲突将如何解决(例如,如果程序中的两个程序试图在同一时间更新同一数据会发生什么)以及其它问题。
因此,为了程序能共享数据,程序通常必须考虑到数据的共享而被实现,且通常必须包括实现数据共享的细节的代码。
概述
提供共享对象的系统,该系统允许程序以与创建并使用本地数据对象大体相同的方式创建并使用共享的数据对象。程序可包括用于创建对象并设置对象上的属性的代码。程序可将对象注册为对象模型内的共享对象。于是共享公共命名空间的程序可访问对象模型中的共享对象。换言之,程序可读、写及修改共享对象。从程序(及其程序员)的角度,访问共享对象像访问本地对象一样。
共享对象的能力在一个示例中可如下实现。对象服务器可维护共享对象的注册表。对象服务器还可维护共享对象的主拷贝,该主拷贝表示对象的“真值”。使用共享对象的每个机器和/或程序还可维护它所使用的共享对象的本地拷贝。每个机器上的共享对象运行时可监视这些本地拷贝以确定已经作了什么变更。如果变更作出,运行时将关于变更的通知发送给对象服务器。当对象服务器接收到变更的通知时,它更新对象的真值然后通知其它机器和/或程序使它们能够更新对象的本地拷贝。
当创建共享对象时,创建者可指定该对象上的、或者甚至是该对象的特定属性上的各种类型的控制。例如,对象(或对象的属性)可受到管控如何处理对于对象的并发变更的并发控制——例如,后写者胜出或乐观并发,在乐观并发中如果客户端更新了对象而没有访问最新真值,则该变更将会被拒绝且客户端得到通知。或者,对象(或对象的属性)可受到管控什么机器和/或程序可访问对象(或属性)的访问控制。或者,对象创建者可指定对象的某些属性将被共享,其它的属性不共享。或者,作为另一示例,对象创建者可指定锁住对象用于指定时间段的独占性写许可的能力。
共享对象的使用不限于任何特定的编程语言。在一个示例中,编程语言可允许共享对象以与本地对象相同(或近似相同)的方式被使用。因此,在此种示例中,程序员使用编程语言来读、写、修改、添加或删除共享对象,其方式与该编程语言允许程序员对本地对象执行这些操作的方式相同。以此方式,程序员能够创建可由其它程序或在其它机器上使用的对象,而不需要实现共享机制的细节,且不需要以与如果程序只使用本地对象时程序被编写的方式基本不同的方式来写程序。
提供本发明内容以便以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图简述
图1是其中对象的共享可发生的示例环境的框图。
图2是示例对象服务器的细节的框图。
图3是其中机器可创建和使用共享数据对象的示例过程的流程图。
图4是可由共享对象服务器执行以便于对象的共享的示例动作的流程图。
图5是可以结合本文描述的主题的实现来使用的示例组件的框图。
详细描述
在现代计算中,许多程序通过共享对相同数据集合的访问来互相交互。软件包可作为在公共数据集合上操作的较小程序的集合而被构建。或者,在其它方面互相不相关的程序想要共享数据以便使用户体验的某些部分流水线化。例如,会计软件包可作为执行不同会计功能但在公共财务数据集合上操作(其中财务数据可跨数个机器分布)的较小程序集合而被构建。或者,在另一示例中,允许远程用户实时地共享信息的在线会议程序可提供所有用户可同时在其上绘画的公共白板。在这种情况下,白板的内容实际上是在会议程序的实例间共享的数据集合(例如,按照某种顺序的笔划集合)。或者,用户可在台式计算机上运行台式邮件客户端并在智能电话上运行移动邮件客户端,且此二邮件客户端可共享对相同底层电子邮件箱的访问。因此,如果用户在一个客户端上删除了消息,删除操作可传播至电子邮件箱的底层服务器拷贝,然后传播至其它邮件客户端。有通过数据共享互相交互的程序的众多其它示例。
虽然存在其中程序共享数据的许多情形,数据共享的实现通常是复杂的且特定于情境的。相同底层数据片段可跨不同程序和/或机器被共享的概念是一种抽象。将此抽象付诸实践的机制并非不重要。例如,当一个机器上作出变更时,已经作出该变更的事实必须被传播至其它机器。有各种不同的信息可被传播的方式。变更在其上发生的机器可监视数据以确定数据何时变更了,并然后可将变更推送出去至其它机器。然后其它机器可监听关于这些变更的通知,并对其本地拷贝进行变更。如果不同的机器在同一时间对同一数据片段进行变更,规则必须就位以解决冲突的变更。在许多情况下,这些机制必须由这些程序的作者构建进程序中。此外,用于管理数据的共享的特定方式依赖于数据的性质。共享机制可被设计为共享保存特定类型的数据的特定数据结构。数据被共享的频率和/或可靠性可基于数据的特定性质。一般而言,想要共享数据的程序必须被构建为以某种方式管理这些问题。通常所采用的机制是不可重用的并必须针对每个程序定制。
本文所描述的主题提供数据对象可被跨机器共享的一般机制。本文所提供的机制允许程序创建共享对象和/或在该对象上设置属性,其方式与假如对象是本地对象时大体相同。然后独立于程序本身的共享机制管理如何使对象共享给其它程序和/或机器的机制。相反,这些机制还可将对由其它程序和/或机器创建的对象的访问提供给该程序,以便该程序可使用和/或修改这些对象。以此方式,创建可由许多程序和/或机器使用的共享对象模型。
本文所描述的机制允许程序在它所创建的对象之上实行各种级别的控制。例如,程序可选择特定对象(或对象的特定属性)是否可共享,或是否要保持为本地。如果对象要被共享,程序可指定什么程序和/或机器可使用该对象或属性,以及什么程序和/或机器不可。程序还可指定管控多少程序和/或机器可并发地操纵对象或属性的并发控制。(本文所描述的机制可被用来独立于对象本身是否可共享地控制对象的属性的共享。属性之上的这种精细粒度控制不仅仅涉及特定属性是否可被共享,还涉及什么并发和/或访问控制应用于属性。)
本文所提供的机制可允许程序员以与假如对象纯粹在本地时大体相同的方式创建并使用共享对象。此外,该机制的使用不是语言相关的,并可在支持对象模型的使用的任何语言中使用。因此,程序可按照特定编程语言所提供的正常方式创建对象并设置属性。然后程序可包含将对象注册为共享对象的指令。注册使对象成为对与创建者处于相同的共享的命名空间的任何实体可用的对象模型的一部分(除非程序指定特定实体对于对象的使用的限制,在这种情况下,共享对象的使用被限于那些被允许使用的实体)。
对象的共享可由服务器管理。服务器接收对象注册并维护对象模型的真值。当对于对象在本地作出变更时,变更可被传递给服务器,然后该服务器可更新对象模型的真值,并可将变更传递给共享对于对象的访问的其它程序和/或机器。可按照不依赖于对象的内容的方式执行对象的共享,由此允许对象被共享而不管对象中包含什么类型的数据的细节。
现在转到附图,图1显示了其中对象的共享可发生的示例环境。在示出的示例中,在机器104上创建数据对象102。在数据对象102上设置属性106。例如,如果数据对象102包含关于汽车的数据,那么属性106可包含汽车的厂商、型号、年份或者颜色。尽管图1中只示出一个属性106,数据对象可具有任何数量的属性。
例如,数据对象102可由在机器104上执行的程序创建。数据对象可使用支持对象模型的任何编程语言来创建,且支持对象模型任何编程环境可被配置为使用本文所描述的技术。本文的主题不限于任何特定的编程语言。因此,在一个示例中,程序员用诸如Java或C#的语言写程序,并且包含用于创建数据对象102和在数据对象102上设置属性106的指令作为程序的一部分。实际上用于创建对象和设置属性的指令可以是与在所应用的编程语言中创建本地属性会发出的指令相同的指令。
其中可创建数据对象102的程序还可包含用于将数据对象102注册为共享对象的指令。本文的主题允许对象保持为纯粹本地,但也允许对象被共享。因此,如果程序员想要使对象成为共享对象,程序员可发出用于将该对象注册为共享对象模型108的一部分的指令。为了实现对象的共享,机器104可具有共享对象运行时110,该运行时协商共享对象模型中对象的注册以及跨机器的对象同步。(注意,图1示出了在机器之间共享对象;但本文所描述的技术还可被用来允许同一机器上的多个程序共享对象。)因此,注册指令由共享对象运行时110处理,该运行时执行适当的动作以将对象102注册为共享对象模型108的一部分。程序员可用各种控制来注册对象。此类控制的示例是管控什么机器和/或程序可使用共享对象(或共享对象的特定属性)的访问控制,以及管控多少机器和/或程序可同时更新共享对象(或共享对象的特定属性)的并发控制。或者,可在没有这样的控制的情况下注册对象,由此使得对象可被与机器104共享命名空间的任何程序和/或机器访问。(以下更具体地描述访问和并发控制。)
共享对象模型108可由服务器112管理。服务器112可管理数个对象模型,尽管为简明起见只有对象模型108在图1中示出。服务器112维护对象模型的“真值”——即,关于当前存在什么对象以及它们的属性是什么的正确信息。在图1的示例中,对象模型108的真值指示对象模型108包含多个数据对象114(其中数据对象114的集合包括数据对象102)。另外,在这些数据对象的每一个上设置属性(诸如属性106,该属性在数据对象102上设置)。
为了让不同的机器和/或程序共享对于对象的访问,这些机器和/或程序共享公共命名空间。换言之,对将访问共享对象的所有实体,相同的名字指的是相同的对象。例如,命名空间116可包含名字118、120和122。如果机器124、126和128要共享对在机器104上创建的对象102的访问,那么这个对象的名字(例如,名字118)将在所有机器104、124、126和128上具有相同的含义。因此,如果对象有名字“ABCDE”,那么这个名字指的是同一个共享对象而不管该对象是否从机器104、机器124等上访问。
可以如下方式使用图1示出的组件。机器104上的程序创建对象102、设置属性106并将对象102注册为共享对象模型的一部分。该程序还可在对象102和/或属性106上设置并发和/或访问控制。然后所注册的对象的拷贝由服务器112存储。由服务器112存储的拷贝表示该对象的“真值”,这意味着该服务器拷贝所说的关于对象的内容与本地拷贝所说的关于对象的内容之间的差异将按有利于服务器拷贝的方式解决。
然后服务器将对象的真值传播至机器104以外的其它机器——例如,至机器124-128。这些其它机器可存储对象的本地拷贝。如果在任何机器上作了对于对象的变更(例如,通过改变对象上的已有属性、设置新属性、删除对象,等等),该机器上的共享对象运行时通知服务器112。(每个机器都可有共享对象运行时110的一个版本,其将在该机器上产生的对于对象的变更通知给服务器112。当服务器112通知该机器对于对象的状态变更已经在其它机器上产生时共享对象运行时110还可变更该机器上的对象的本地拷贝。)然后服务器112调整对象的真值以反映所作出的变更。如果两个机器同时对于对象作变更,那么冲突解决规则可被用来解决对于对象的不一致的变更。一旦服务器112确定了对象的真值,对象状态的更新被通知给各机器。如果对象上已经设置了访问控制,那么对象的当前状态只被提供给被允许访问对象的机器。否则,对象的当前状态被提供给相同命名空间中的所有机器。同样地,访问控制规则可被用来拒绝来自没有向对象写、删除对象等许可的客户端的任何更新。
当机器接收到对象的真值已经变更的通知时,每个机器上的共享对象运行时都更新对象在该机器上的本地拷贝以反映对象的真值。
共享对象可以与本地对象大体相同的方式被创建和/或访问。对象服务器和各种机器的共享对象运行时通过监视和更新对象在机器上的本地拷贝来管理对象的共享和同步。因此,本地拷贝可由程序以与如同本地拷贝未与其它机器共享和/或同步大体相同的方式访问。因而,即使共享对象运行时可确定对象已被变更并可将关于对象已被变更的事实的通知发送给共享对象服务器,程序也可继续操纵数据而不必考虑共享对象运行时的这些动作。实际上,通过使用根据本文的主题所构建的系统,程序可像它使用纯粹本地的数据一样简单地使用共享数据。
图2示出示例对象服务器112的细节。尽管对象服务器112可采用多个配置,在示出的示例中对象服务器112包括对象数据库202、通信组件204、接收器206、通知器208和状态组件210。
通信组件204将对象服务器112连接至各种机器124、126和128。例如,通信组件204可包括硬件和/或软件(例如,网卡及其驱动),这些硬件和/或软件允许服务器112与服务器112以外的世界通信。服务器112使用通信组件204来将关于对于对象114的状态变更的通知发送给机器124-128。另外,服务器112使用通信组件204接收来自机器124-128的关于这些机器上已经发生的对于对象的变更的通知。
当对于对象的变更在机器(例如,机器124)上产生时,该机器上的共享对象运行时生成给服务器112的通知。该通知由通信组件接收,然后被传递给接收器206。接收器206将关于变更的通知提供给状态组件210。状态组件210维护对象114的真值212。状态组件210基于通知确定对象的真值212是否要被变更。例如,如果在机器124上变更了对象(例如,通过将属性从一个值变更到另一个值)且服务器112得到该变更的通知,状态组件210可确定对象的真值已被变更。由此状态组件210通过对于对象数据库202中的对象作适当的更新来对于对象的真值作该变更。状态组件210还可实现用于解决冲突的规则。例如,如果两个机器同时试图变更同一对象,那么状态组件210可确定哪一个变更将被执行。或者,如果两个变更都将被执行,状态组件210可确定这些变更将如何被组合以产生对象的新真值。
另外,状态组件210可管理与并发214和/或访问控制216相关的问题。并发214确定多少实体可同时访问对象(或对象的属性)。访问控制216指定关于什么实体(机器或程序)可访问给定对象或给定对象的属性的限制(如果有的话)。可在将对象注册为共享对象时指定对象和/或属性的并发和访问控制。(在一个示例中,可将对象和/或属性设为默认地公开,除非该对象上已经指定了访问控制。)并发214可用时间限制来指定——例如,并发控制可指定特定实体只可要求有限时间量的对于对象的独占写访问,且在该时间量过期以后该独占访问约束停止生效。
当对象的真值变更时,通知器208可生成将发送给共享对于对象的访问的机器的通知。通知器208可使用通信组件204发送此类消息。例如,如果状态组件210确定对象的真值212已经变更了,那么通知器208可将通知发送出去给机器124、126和128。这些机器可分别维护它们共享访问的对象的本地拷贝218、220和222。响应于通知,机器可相应地更新其本地拷贝218-222。
图3示出其中机器可创建并使用共享数据对象的示例过程。在转向图3的描述之前,注意,参考图1和图2示出的组件作为示例地描述了本文包含的流程图(图3中和图4中),但这些过程可以在任何系统中实现,并且不限于图1和图2示出的场景。另外,图3和4中流程图的每一个示出了一个示例,其中按特定顺序来实现过程的各阶段,如连接块的线所示,但这些图中示出的各种阶段可以按任何顺序、或以任何组合或子组合来执行。
在302,指定数据对象。数据对象的指定可作为程序中指令的一部分而被执行。例如,如果编程语言为程序员提供用于创建对象和设置该对象的属性的机制,那么可使用该机制来指定数据对象。所使用的机制可与用来指定本地对象的机制是同一个。
在304,可将数据对象注册为对象模型的一部分。例如,可有如上所述的本地共享对象运行时,该运行时提供允许程序员发出用于将对象注册为共享对象模型的一部分的指令的编程接口。这样的指令可在304给出。
在306,可指定对象或对象的属性上的并发控制。例如,并发控制可指定一次只有单个实体可对给定对象(或对象的给定属性)进行写。或者,更一般性地,并发控制可指定一次有多少实体可访问给定对象。在308,可指定对象或对象的属性上的访问控制。访问控制可指定什么实体可(或不可)访问对象。
在310,可创建操纵对象的指令。对于对象的操纵包括对于对象的任何变更——例如,创建对象、删除对象、添加、删除或变更对象上的属性等。这些指令可通过用来写出使用该对象的程序的编程语言给出。在一个示例中,这些指令与操纵本地对象时会使用的指令相同。
图3描述的过程可在一个机器上执行。然而,作为此过程的一部分,在312可允许其它机器(可与图3的过程在其上执行的机器不同)访问对象。例如,该机器上的共享对象运行时可导致对象(及对于对象的任何变更)被传输给共享对象服务器。然后服务器可选定对象的真值,并可通知其它机器关于对于对象的真值的变更,如上所述。使用共享对象服务器是共享对象的一个实现。然而,还有由本文的主题所涵盖的对等实现。
注意,允许其它机器访问由程序创建的对象的动作可不需要该程序实现任何共享指令而发生。如上文所指出的,跨机器的数据共享通常涉及用于监视数据以获知变更、传输变更至其它机器、接收来自其它机器的变更等的机制。然而,这些机制可通过共享对象运行时实现。因此,从创建共享对象的程序的角度,该程序可对待对象如同它是一个本地对象,且程序本身可不包含实现用于共享对象的机制的任何特定代码。在一个示例中,程序可简单地通过发出用于将对象注册为共享对象模型的一部分的指令来共享对象,且程序可以其它方式对待共享对象,如同它是一个本地对象。换言之,程序能够共享对象而无需包含与对象的共享相关的任何指令(除了将对象注册为共享对象的初始指令)。另外,当对象的模式对客户端有意义时,服务器可不知对象包含的数据。
图4示出可由共享对象服务器执行以便于对象的共享的示例动作。
在402,服务器接收用于注册对象的请求。例如,该请求可来自机器104,在该机器上创建了具有属性106的数据对象102。
在404,服务器可确定在机器104上操纵了对象。例如,机器104上的共享对象运行时可监视对象在该机器上的本地拷贝。当对象以某种方式被操纵时,共享对象运行时可发送对象已被操纵的通知给服务器。该通知可由服务器接收。
当通知由服务器接收时,服务器可确定更新对象的真值以反映服务器得到通知的本地作出的变更。此更新可在406发生。在某些点,在其上作出对象的共享使用的机器可将监听请求发送给服务器,该请求要求服务器将关于对特定对象或对象集合的变更通知给这些机器。在408接收这些监听请求。(监听请求的接收被示为在408和410之间发生,但可在任何时间点接收要得到关于对象的变更的通知的请求;图4示出的序列不是对本文的主题的限制。)一旦确定了对象的真值,就可在410将对象的状态已被变更的通知发送至共享对于对象102的访问的其它机器(例如,机器124、126和128)。然后这些机器可更新它们自己的对象的本地拷贝。如果对于对象(或对于对象的属性)的访问控制就位,那么可将通知发送给对于对象(或属性)的访问在其上被许可的那些机器。
图5示出其中可以部署本文所描述的主题的各方面的示例环境。
计算机500包括一个或多个处理器502和一个或多个数据记忆组件504。处理器502通常是微处理器,如在个人台式计算机或膝上型计算机、服务器、手持式计算机或另一类型的计算设备中含有的那些微处理器。诸)数据记忆组件504是能够短期或长期存储数据的组件。数据记忆组件504的示例包括硬盘、可移动盘(包括光盘和磁盘)、易失性和非易失性随机存取存储器(RAM)、只读存储器(ROM)、闪存、磁带等等。数据记忆组件是计算机可读存储介质的示例。计算机500可包括显示512或与其关联,显示器512可以是阴极射线管(CRT)监视器、液晶显示(LCD)监视器或任何其它类型的监视器。
软件可以被存储在数据记忆组件504中,而且可以在一个或多个处理器502上运行。此类软件的一个示例是可以实现以上结合图1-4描述的一些或所有功能的对象共享软件506,但可以使用任何类型的软件。可以例如通过一个或多个组件来实现软件506,这些组件可以是分布式系统中的组件、分开的文件、分开的函数、分开的对象、分开的代码行等等。其中程序被存储在硬盘、被加载到RAM中并被计算机处理器上执行的计算机(例如,个人计算机、服务器计算机、手持式计算机等等)代表图5中所描绘的场景,但在此所描述的主题不限于这一示例。
在此所描述的主题可以被实现为被存储在数据记忆组件504中的一个或多个内并在一个或多个处理器502上执行的软件。作为另一示例,本主题可以被实现为存储在一个或多个计算机可读存储介质上的指令。诸如光盘或磁盘等有形介质是存储介质的示例。指令可以存在于非暂态介质上。此类指令在由计算机或其它机器执行时可以使得计算机或其它机器执行一种方法的一个或多个动作。执行动作的指令可以被存储在一个介质上,或可以开跨多个介质来分布,以使得这些指令共同出现在一个或多个计算机可读存储介质上而无论所有指令是否恰好是在同一介质上。
此外,作为方法的一部分,在此所描述的任何动作(无论是否在图中示出)可以由处理器(例如,一个或多个处理器502)执行。因此,如果在此描述动作A、B和C,则可执行一种包括动作A、B和C的方法。此外,如果在此描述动作A、B和C,则可执行一种包括使用处理器执行动作A、B和C的方法。
在一个示例环境中,计算机500可以通过网络508在通信上连接到一个或多个其它设备。体系结构上可类似于计算机500的计算机510是可被连接到计算机500的设备示例,但其它类型的设备也可以这样连接。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。

Claims (14)

1.一种用于跨多个机器共享数据对象的系统,所述系统包括:
处理器;
数据记忆组件;
在所述数据记忆组件中存储所述数据对象和所述数据对象的属性的对象数据库;
通信上将所述系统连接到数据对象在其上被操纵或使用的多个机器的通信组件;
在所述处理器上执行并从所述多个机器处接收关于所述数据对象何时及如何在所述多个机器上被操纵的指示的接收器组件;
在所述处理器上执行并在所述接收器组件接收所述指示时更新所述数据库中的所述数据对象及所述数据对象的所述属性的状态的状态组件;
在所述处理器上执行并在所述数据对象和所述数据对象的所述属性的所述状态已变更时通知所述多个机器的通知组件,在所述处理器上执行的程序,所述程序操纵所述数据对象而不管所述多个机器是否已被通知或将被通知关于对所述数据对象的操纵,所述程序包括代码,所述代码使用将被发出以操纵对所述程序而言本地的数据的相同指令来操纵数据对象,如同所述数据对象是对所述程序而言本地的数据。
2.如权利要求1所述的系统,其特征在于,所述接收器组件接收所述数据对象中的第一个或所述数据对象中的所述第一个的属性上的并发控制,并且所述系统确定所述多个机器中的多少个可以并发地访问所述数据对象中的所述第一个,或所述数据对象中所述第一个的属性。
3.如权利要求2所述的系统,其特征在于,所述并发控制独立于所述多个机器中的多少个可以访问所述数据对象中所述第一个地指定所述多个机器中的多少个可以并发地访问所述属性。
4.如权利要求2所述的系统,其特征在于,所述接收器组件接收所述并发控制上的时间限制,其中所述并发控制在所述时间限制过期以后停止生效。
5.如权利要求1所述的系统,其特征在于,由所述接收器组件接收的所述指示指示所述数据对象中的第一个已在所述多个机器中的第一个上被添加、修改或者删除,并且,响应于所述指示,所述状态组件更新所述数据对象的所述状态以反映对所述数据对象中的所述第一个的添加、修改或删除。
6.如权利要求1所述的系统,其特征在于,响应于指示所述数据对象中的第一个已在所述多个机器中的第一个上被添加、修改或删除的所述数据对象的所述状态的变更,所述通知组件向不同于所述多个机器中的第一个的所述多个机器中的第二个,通知所述数据对象中的所述第一个已被添加、修改或删除。
7.如权利要求1所述的系统,其特征在于,所述系统将关于所述数据对象的变更通知给所述多个机器,而不管所述数据对象的内容或类型。
8.一种共享对象的方法,所述方法包括:
接收用于注册包括第一属性的第一对象的请求,所述第一对象是具有名字的对象模型的一部分,该名字是跨第一机器和多个不同于所述第一机器的第二机器共享的命名空间的一部分;
确定所述第一对象已由所述第一机器上的第一程序操纵了;
将关于所述第一对象已在所述第一机器上被操纵的第一通知发送给所述多个第二机器,其中所述第一程序操纵所述第一对象而不管所述确定和所述发送是否已经或将要发生,所述第一程序包括代码,所述代码使用将被发出以操纵对所述程序而言本地的数据的相同指令来操纵所述第一对象,如同所述第一对象是对所述程序而言本地的数据;
从所述多个第二机器处接收关于所述第一对象已在所述多个第二机器之一上被操纵的第二通知;以及
根据所述第二通知在所述第一机器上变更所述第一对象。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
指定管控所述第一对象或所述第一属性是否可以在给定时间被多于一个的程序所操纵的并发控制。
10.如权利要求9所述的方法,其特征在于,所述并发控制独立于所述第一对象是否可以在给定时间被多于一个的程序所操纵地管控所述第一属性是否可以在给定时间被多于一个的程序所操纵。
11.如权利要求9所述的方法,其特征在于,所述方法还包括:
接收所述并发控制上的时间限制,其中所述并发控制在所述时间限制过期以后停止生效。
12.如权利要求8所述的方法,其特征在于,所述第一对象中的属性可被设为可共享或不可共享,并且所述方法还包括:
指定所述第一属性是否将被设为可共享或不可共享。
13.如权利要求8所述的方法,其特征在于,所述第一机器执行所述方法而不管所述第一对象的类型。
14.如权利要求8所述的方法,去特征在于,所述对所述多个第二机器的发送包括将所述第一通知发送给将所述第一通知发送给所述多个第二机器的服务器。
CN201180024482.9A 2010-05-19 2011-05-17 对象的共享和同步 Active CN102893272B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/782,751 US8719845B2 (en) 2010-05-19 2010-05-19 Sharing and synchronization of objects
US12/782,751 2010-05-19
PCT/US2011/036887 WO2011146540A2 (en) 2010-05-19 2011-05-17 Sharing and synchronization of objects

Publications (2)

Publication Number Publication Date
CN102893272A CN102893272A (zh) 2013-01-23
CN102893272B true CN102893272B (zh) 2016-01-20

Family

ID=44973549

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180024482.9A Active CN102893272B (zh) 2010-05-19 2011-05-17 对象的共享和同步

Country Status (6)

Country Link
US (1) US8719845B2 (zh)
EP (1) EP2572290A4 (zh)
JP (1) JP2013526750A (zh)
CN (1) CN102893272B (zh)
CA (1) CA2798138C (zh)
WO (1) WO2011146540A2 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104715B2 (en) 2010-06-23 2015-08-11 Microsoft Technology Licensing, Llc Shared data collections
WO2012094330A1 (en) * 2011-01-03 2012-07-12 Planetary Data LLC Community internet drive
US20130073692A1 (en) * 2011-09-15 2013-03-21 Ibromed Corporation Systems and methods for receiver-controlled data distribution
JP5831412B2 (ja) * 2012-09-14 2015-12-09 コニカミノルタ株式会社 情報共有システム及び共有端末並びに共有制御プログラム
FR3003717B1 (fr) * 2013-03-19 2016-08-19 Tamaplace Environnement informatique pour executer de facon partagee sur les postes clients des applications avec contenus et actions synchronises
US9936018B2 (en) 2013-09-27 2018-04-03 Mcafee, Llc Task-context architecture for efficient data sharing
WO2015066378A1 (en) * 2013-10-30 2015-05-07 Brigham Young University Cax model synchronization
US20150149745A1 (en) * 2013-11-25 2015-05-28 Markus Eble Parallelization with controlled data sharing
US10235333B1 (en) * 2014-04-11 2019-03-19 Twitter, Inc. Managing consistency models in a distributed database
US9864643B1 (en) * 2015-05-05 2018-01-09 EMC IP Holding Company LLC Using locks of different scopes in a data storage system to optimize performance and complexity
US10360287B2 (en) 2015-05-22 2019-07-23 Microsoft Technology Licensing, Llc Unified messaging platform and interface for providing user callouts
US20160344677A1 (en) 2015-05-22 2016-11-24 Microsoft Technology Licensing, Llc Unified messaging platform for providing interactive semantic objects
JP6545022B2 (ja) * 2015-07-10 2019-07-17 日本電産サンキョー株式会社 カード搬送システム及びカード搬送制御方法
CN106855794A (zh) * 2015-12-08 2017-06-16 平安科技(深圳)有限公司 应用于ios操作系统的多对象间的数据共享方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1737724A (zh) * 2004-08-19 2006-02-22 Sap股份公司 操控数据管理
US7543301B2 (en) * 2003-10-21 2009-06-02 Gemstone Systems, Inc. Shared queues in shared object space

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5862376A (en) 1996-06-24 1999-01-19 Sun Microsystems, Inc. System and method for space and time efficient object locking
US6141720A (en) 1997-06-12 2000-10-31 Cabletron Systems, Inc. Method and apparatus for coordination of a shared object in a distributed system
US6247025B1 (en) 1997-07-17 2001-06-12 International Business Machines Corporation Locking and unlocking mechanism for controlling concurrent access to objects
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US7743022B2 (en) * 2003-02-28 2010-06-22 Microsoft Corporation Method and system for synchronizing data shared among peer computing devices
US7577960B2 (en) * 2003-06-19 2009-08-18 Microsoft Corporation System and method for managing cached objects using notifications bonds
US7640506B2 (en) 2003-06-27 2009-12-29 Microsoft Corporation Method and apparatus for viewing and managing collaboration data from within the context of a shared document
US20050086656A1 (en) * 2003-10-20 2005-04-21 Gemstone Systems, Inc. Methods and systems for inter-process copy sharing of data objects
US7970823B2 (en) 2004-09-02 2011-06-28 Broadway Technology, Llc System for sharing data objects among applications
JP2006146292A (ja) * 2004-11-16 2006-06-08 Shimadzu System Solutions Co Ltd 分散型制御システム及び同システム用端末プログラム
US8015561B2 (en) * 2004-12-28 2011-09-06 Sap Ag System and method for managing memory of Java session objects
US7593943B2 (en) 2005-01-14 2009-09-22 Microsoft Corporation Method and system for synchronizing multiple user revisions to a shared object
US7933881B2 (en) 2006-03-17 2011-04-26 Microsoft Corporation Concurrency control within an enterprise resource planning system
KR101474353B1 (ko) 2007-11-23 2014-12-23 삼성전자주식회사 자바 레코드 관리 시스템을 이용한 위치서비스의 랜드마크정보를 공유하기 위한 방법 및 장치
US20090282043A1 (en) 2008-05-07 2009-11-12 Srinivas Ganesh Dharmavaram System And Method For Concurrency Control Of Logically Grouped Shared Objects In A Multi-User Environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7543301B2 (en) * 2003-10-21 2009-06-02 Gemstone Systems, Inc. Shared queues in shared object space
CN1737724A (zh) * 2004-08-19 2006-02-22 Sap股份公司 操控数据管理

Also Published As

Publication number Publication date
EP2572290A2 (en) 2013-03-27
JP2013526750A (ja) 2013-06-24
EP2572290A4 (en) 2016-10-26
US8719845B2 (en) 2014-05-06
CN102893272A (zh) 2013-01-23
CA2798138C (en) 2018-09-25
CA2798138A1 (en) 2011-11-24
US20110289514A1 (en) 2011-11-24
WO2011146540A3 (en) 2012-02-23
WO2011146540A2 (en) 2011-11-24

Similar Documents

Publication Publication Date Title
CN102893272B (zh) 对象的共享和同步
US9009292B2 (en) Context-based data pre-fetching and notification for mobile applications
US10558813B2 (en) Managing shared inventory in a virtual universe
CN109976667B (zh) 一种镜像管理方法、装置及系统
US8023934B2 (en) Synchronizing communications and data between mobile devices and servers
US8214409B2 (en) Adapter architecture for mobile data system
US20090037430A1 (en) Unwired enterprise platform
US6269473B1 (en) Method and apparatus for the development of dynamically configurable software systems
US7937432B2 (en) State transition management according to a workflow management policy
US20090063423A1 (en) User interfaces for service object located in a distributed system
CN105531688A (zh) 提供作为其它服务的资源的服务
WO2020215752A1 (zh) 图计算方法及装置
Picco et al. On global virtual data structures
US8832156B2 (en) Distributed computing management
CN107797849B (zh) 分布式事务处理的方法、装置与系统
EP2294793B1 (en) User interfaces for service object located in a distributed system
US11803373B1 (en) Application versioning and upgrade
US11755311B1 (en) Versioned schema
JP7334260B2 (ja) 複数のデータ構造を管理するための通信装置、通信方法、コンピュータプログラム、非一時的な記憶媒体および通信システム
US11093935B2 (en) System and methods for a resource-saving exchange protocol based on trigger-ready envelopes among distributed nodes
CN114064577A (zh) 信息交互方法、存储介质及电子设备
CN117751347A (zh) 用于分布式界面组件生成的技术
WO2008030494A2 (en) Managing client-to-server or peer-to-peer relationships in a private or virtual network

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150727

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

Effective date of registration: 20150727

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant