CN1677979A - 通过网络在计算机之间共享对象的系统和方法 - Google Patents
通过网络在计算机之间共享对象的系统和方法 Download PDFInfo
- Publication number
- CN1677979A CN1677979A CNA2005100649272A CN200510064927A CN1677979A CN 1677979 A CN1677979 A CN 1677979A CN A2005100649272 A CNA2005100649272 A CN A2005100649272A CN 200510064927 A CN200510064927 A CN 200510064927A CN 1677979 A CN1677979 A CN 1677979A
- Authority
- CN
- China
- Prior art keywords
- computer
- linguistic context
- network
- message
- server
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- 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/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种共享可驻留在不同机器上的对象的方法和系统。这些对象可以使用诸如因特网的计算机网络来访问和共享。这些对象可以包括计算机编程对象,该对象包括应用编程接口(API)、编程对象库、计算机程序对象定义、和其它基于计算机网络的应用程序的信息,但不局限于此。该方法和系统不需要计算机服务器,这是因为本发明可以更象对等或多点计算机网络那样来操作。该方法和系统可以与对等网络和客户服务器网络一起工作,而不需要将网络中的计算机确定为服务器或非服务器(客户端)类型计算机。
Description
技术领域
本发明涉及通过网络在计算机之间共享信息,尤其涉及允许在计算机之间共享计算机对象的对等或多点网络。
发明背景
传统计算机对象共享环境示例性地使用客户服务器结构,其中,客户计算机访问中央服务器以便运行程序或检索数据。客户服务器结构是软件在服务器任务和客户任务之间分离的分布计算系统的普通形式。客户端可以按照某些协议发送请求给服务器,来请求信息或操作,并且,服务器可以响应于该请求。
客户服务器模型类似于顾客(客户端)以订单形式发送订单(请求)给分派货物和发票(响应)的供应商(服务器)。订单形式和发票是在此情况下进行通信所使用的“协议”部分。
现在参考图1,该图示出了传统客户服务器结构100,其中,服务器105提供第一、第二和第三客户计算机110A、110B、和110C以到驻留在服务器105上基于网络的对象115的访问。按照该示例客户服务器结构100,如果在该网络中,第一计算机110A希望发送视频文件到第二计算机110B,那么第一计算机110A就需要传送文件到服务器105。服务器105,依次,传送视频文件到第二计算机110B。在该文件传送的情况中,服务器105使得在第一和第二计算机110A和110B之间的信息传送变慢。
按照另一个示例性情形,当计算机110之一希望改变驻留在服务器105上基于网络的对象115时,计算机110必须等待服务器110发回消息给计算机110来确认已经做出改变。该等待周期可以被称作延迟。当希望对基于网络对象115进行即时改变时,延迟是很讨厌的。诸如,对于诸如需要“现场”改变或分发包括音频和计算机数据的信息的聊天程序和示出应用程序的实时协作应用程序,延迟可能是很具有破坏性的。
与传统客户服务器结构100以及对等编程应用程序相关的另一个问题在于,当程序编写使用了基于网络的对象时,必须指定有关该基于网络对象在其中产生通信的计算机结构的类型。换句话说,人们必须确定基于网络对象将在客户服务器结构100还是在对等网络(图1没有示出)内进行共享。这就意味着传统技术必须识别将使用什么样的通信协议来访问和操作基于网络的对象。
与传统技术相关的另一个问题在于,基于网络对象只能在一种类型计算机结构内共享,而不能跨越不同类型的网络结构,因为特定网络的通信协议类型必须在编写任何计算机代码时确定和提出。这就意味着,不能用传统计算机程序编写跨对等网络和客户服务器网络共享基于网络对象的程序。传统计算机程序必须只指定其中一种而不是两种类型的计算机结构。
因此,在现有技术中存在对于可以跨诸如客户服务器结构和对等型结构的不同类型计算机结构共享基于网络对象而无需指定跨不同结构通信所需的通信协议的方法和系统的需要。现有技术中还存在对于实质上降低或消除经常与在计算机之间共享基于网络对象相关的延迟以便改善计算机之间实时通信的需要。现有技术中的另一个需要是,可以使用标准面向对象技术编写计算机程序,而不考虑将拥有任何基于网络对象的计算机结构的类型。
发明概述
本发明可以包括用来共享可以驻留在不同机器并可以通过诸如因特网的计算机网络访问的对象的方法和系统。对象可以包括计算机编程对象,其包括但不限于应用编程接口(API)、编程对象库、计算机程序对象定义、和其它基于计算机网络的应用程序的信息。该系统和方法允许编写调用驻留在连接到计算机网络上的不同计算机上的基于网络对象的计算机程序。
本发明的一个优点在于,本发明可以更类似于对等计算机网络操作,因此,不需要计算机服务器。本发明的另一个优点在于,既使对等计算机是计算机服务器,本发明也可以以相同的方式来对待对等计算机。换句话说,本发明可以和对等网络和客户服务器网络一起进行工作,而无需确定计算机是服务器还是非服务器(客户)类型计算机。
本发明的应用可以包括实时协作(RTC),其与传统客户服务器结构相比可以允许通过网络连接的计算机实时并几乎同时地进行通信和共享信息。示例性RTC应用可以包括,但不限于,下面的例子:通过可驻留在不同计算机上的聊天程序交换信息,在可驻留于不同计算机的字处理程序内共享文档,在可驻留于不同计算机的电子数据表程序内共享电子数据表,在可驻留于不同计算机的示出应用程序内共享示出,在可驻留于不同计算机的游戏程序之间共享数据,和其它类似的有利于跨多个不同计算机实时共享数据的RTC应用。
为了提供这种跨网络中计算机的信息共享,支持RTC应用的基于网络对象或共享对象一般驻留在每个计算机上。然而,在某些情况下,需要使用基于网络对象的第一计算机可能没有基于网络对象的复本,并且第一计算机可以给出到驻留在第二计算机的基于网络对象的访问。如果第一计算机具有有限的内存,可能发生这种基于网络对象的共享,其中,第一计算机可以是诸如个人数字助理(PDA)的手持计算机。
当计算机程序调用基于网络的对象时,可以运行安全检查以便判定是否允许运行该程序的计算机访问特定基于网络对象。诸如,在运行该程序的计算机内可以本地运行安全检查来判定是否允许访问也本地存储在计算机上的基于网络对象。类似地,还可以对其它具有基于网络对象复本的计算机跨网络运行安全检查以便判定是否允许运行该程序的计算机访问基于网络对象。
如果允许调用基于网络对象的计算机访问该基于网络对象,那么该计算机可以将驻留在其内存中的基于网络对象和跨网络驻留在不同计算机上的所有相同的对象同步。在此方式中,访问特定基于网络对象并具有特定基于网络对象的复本的每个计算机可以接收对基于网络对象做出的所有最新更新,其中,这些更新可能正在实时发生。
对于使用基于网络对象的计算机编程应用程序来说,一旦创建了对象类,其中该类可以包括基于网络对象,那么就可以使用标准面向对象技术与包括任何基于网络对象的所有类的对象一起工作。本发明系统和方法可以拦截对于基于网络对象做出的方法调用并按照基于网络对象的网络属性处理该方法调用。
诸如,对于驻留在做出调用的计算机上的基于网络对象的调用可能直到所有具有该基于网络对象的复本并需要提供它们的确认接收的其它计算机接收到确认接收才执行或完成。如果该调用是对于具有其中方法步骤必须以特定顺序发生的全顺序方法的基于网络对象的,那么所有其它具有该基于网络对象复本的计算机可能需要在做出对于该基于网络对象调用的计算机上本地执行或开始该调用之前同意该顺序。
为了管理和跟踪基于网络对象,本发明系统可以使用语境。系统的每个基于网络对象可以具有一个相关的语境。并且每个基于网络对象可以是一个语境的一部分。每个语境可包括跟踪在多个系统网络对象之间的一个或多个关系和在具有对象复本和/或到对象的访问的计算机之间的关系的信息。
每个语境可以识别哪一个计算机具有一个或多个特定基于网络对象并且,它可以帮助管理作为特定语境部分的基于网络对象。语境可以帮助确保作为语境一部分的每个计算机具有构成该语境的一个或多个基于网络对象的相同版本。每个语境具有用来帮助判定哪一个计算机可以访问在语境列表中的某些基于网络对象和哪一个计算机可以改变语境中对象的安全子列表。
语境具有不同的状态。睡眠状态意味着具有作为特定语境一部分的基于网络对象的计算机可能没有正在使用基于网络对象。激活状态意味着具有基于网络对象的计算机正在以某种方式使用基于网络对象,并在语境中呈现的计算机之间正发生着有关基于网络对象的通信。
该系统和方法还可以在语境中的计算机之间的各种通信期间使用全排序的分组,因而保持了网络对象的一致性和整体性。
附图简述
图1是传统客户服务器计算机结构的框图。
图2是提供本发明示例性操作环境的网络个人计算机的框图。
图3是示出用于按照本发明的一个示例性实施例共享基于网络对象的示例性系统的功能框图。
图4A是示出用于按照本发明的一个示例性实施例通过网络在计算机之间共享对象的示例性高级系统结构的功能框图。
图4B是列出在按照本发明的一个示例性实施例在对象创建顺序期间可能存在的时间上的不同阶段的功能框图。
图5是示出按照本发明的一个示例性实施例可在语境中发现的示例性组件的功能框图。
图6A是示出按照本发明的一个示例性实施例在具有作为语境一部分的对象的计算机之间存在的各种不同会话的功能框图。
图6B是示出按照本发明的一个示例性实施例作为图6A的第一语境的一部分的第一会话的细节的功能框图。
图6C是示出按照本发明的一个示例性实施例作为图6A的第二语境的一部分的第二会话的细节。
图7是示出按照本发明的一个示例性实施例的系统网络对象的示例性结构的功能框图。
图8是示出按照本发明的一个示例性实施例用于通过网络在计算机之间共享对象的示例性过程的概括的逻辑流程图,其中第二计算机加入到与第一计算机的会话中。
图9是示出按照本发明的一个示例性实施例的共享对象以及该共享对象如何被计算机网络中的不同节点访问的示例性功能框图。
具体实施方式
该方法和系统可以共享驻留在不同计算机上的对象。这些对象可以使用诸如因特网的计算机网络来访问和共享。这些对象可以包括计算机编程对象,其包括,但不限制于,应用编程接口(API)、编程对象库、计算机程序对象定义、和其它用于基于计算机网络的应用程序的信息。该方法和系统象对等或多点计算机网络那样工作,而不是传统的客户服务器结构。
该方法和系统可以与对等网络和客户服务器网络一起工作,而不需要将网络中的计算机确定为服务器或作为非-服务器(客户)型计算机。该方法和系统的应用可以包括实时协作(RTC)应用,其允许通过网络连接的计算机实时并几乎同时地通信和共享信息。
示例性操作环境
此后参考附图描述本发明的示例性实施例,其中相同的标记在所有附图中表示相同的单元。图2示出了实施本发明的示例性操作环境200。
示例性操作环境200包括传统个人计算机120形式的通用计算设备。通常,个人计算机120包括处理单元121、系统存储器122、和连接包括系统存储器122的各种系统组件到处理单元121的系统总线123。系统总线123可以是多种总线结构中任意一种,包括存储器总线或存储器控制器、外设总线、和使用多种总线结构的任何一种的局部总线。系统存储器包括只读存储器(ROM)124和随机访问存储器(RAM)125。包含有助于在个人计算机120内的单元之间诸如在启动期间传送信息的基本例程的基本输入/输出系统(BIOS)126被存储在ROM 124内。
个人计算机120进一步包括用来读写硬盘(没有示出)的硬盘驱动器127、用来读写可移动磁盘129的磁盘驱动器128、和用来读写诸如CD-ROM或其它光介质的可移动光盘131的光盘驱动器130。硬盘驱动器127、磁盘驱动器128、和光盘驱动器130分别通过硬盘驱动器接口132、磁盘驱动器接口133、和光盘驱动器接口134连接到系统总线123。
虽然在此描述的示例性环境使用了硬盘127、可移动磁盘129、和可移动光盘131,但是本领域技术人员应该理解,在该示例性操作环境中也可以使用可以存储能够由计算机访问的数据的其它类型的计算机可读介质,诸如,磁带盒、闪存卡、数字视频盘、柏努利(Bernoulli)录音盒带、RAM、ROM等等。驱动器和它们相关的计算机可读介质提供了计算机可执行指令、数据结构、程序模块、和其它个人计算机120数据的非易失存储。
大量的程序模块可以存储在硬盘127、磁盘129、光盘131、ROM 124、或RAM 125中,包括操作系统135、包括包含程序模块的基于网络对象315的应用程序410。程序模块可以包括例程、子例程、程序、对象、组件、数据结构等,但不局限于此,它们执行特定任务或实现特定抽象数据类型。
用户可以通过诸如键盘140和定点设备142的输入设备输入命令和信息到个人计算机120。定点设备包括鼠标、跟踪球、和可以与电子书写板结合使用的电子笔。其它输入设备(没有示出)包括麦克风、游戏杆、游戏垫、卫星盘、扫描仪等等。这些和其它输入设备通常通过连接到系统总线123的串行端口接口146连接到处理单元122,但是也可以通过其它接口连接,诸如并行端口、游戏端口、通用串行总线(USB)等。示出设备147也通过诸如视频适配器148的接口连接到系统总线123。除了示出器之外,个人计算机一般包括其它外围输出设备(没有示出),诸如,扬声器和打印机。
个人计算机120可以工作在使用逻辑连接到一个或多个远程计算机149的网络化环境中。远程计算机149可以是另一个个人计算机、服务器、客户端、路由器、网络PC、对等设备、或其它普通网络节点。虽然远程计算机149一般包括与个人计算机120相关的上述多个和所有的元件,但是在附图中只示出了内存存储器设备150。在附图中所示的逻辑连接包括局域网(LAN)151和广域网(WAN)152。这种组网环境在办公室、企业范围计算机网络、企业内部网络和因特网中是很普遍的。
当用在LAN组网环境中时,个人计算机120通常通过网络接口或适配器153连接到局域网151。当用在WAN组网环境中时,个人计算机120一般包括用来在诸如因特网的WAN 152上建立通信的调制解调器154和其它设备。调制解调器154可以是内置或外置的,通过串行端口接口146连接到系统总线123。在网络化环境中,与个人计算机120相关描述的程序模块或其部分可存储在远程内存存储器设备150中。应该理解,所示网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它手段。
而且,本领域熟练技术人员应该理解,本发明可以用其它计算机系统配置来实现,包括手持设备、多处理器系统、基于微处理器或可编程家电、网络个人计算机、小型机、大型计算机等等。本发明还可以在分布式计算环境中实施,在这种环境中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程内存存储器设备中。
系统示例性概括
现在参考图3,该图示出了用来通过网络在计算机310之间共享对象315的示例性系统300。每个计算机310可以通过链路305连接到另一相应的计算机310。链路305可以包括通过因特网做出的连接或诸如电话线的直接连接。链路305还可以是将在下面根据图4讨论的传输抽象层(TAL)的一部分。
每个计算机或机器310可在诸如象硬盘一样的存储设备或各个计算机310内的存储器中本地存储一个或多个对象。除了第五计算机310B之外,每个计算机310可以存储诸如第一对象X 315的相同的对象。而且,每个计算机310还可以存储诸如第二和第三对象Y和Z的不同对象315。如图3所示,第二和第三对象Y和Z没有驻留在所有的计算机310上。
本发明的方法和系统300允许每个计算机310相互之间以系统可以形成计算机在其中共享虚拟对象325的可感知共享空间320的直接而且无缝的方式来进行通信。换句话说,从编程的角度考虑,编写访问本发明的对象315的计算机代码行可以感知对象315为驻留在共享空间320而不是其它计算机中的虚拟对象325。使用本发明的对象315的计算机代码不需要确定对象是否驻留在对等网络或服务器上。任何使用本发明对象315的计算机代码都无需将自己与构成网络300的计算机310之间的通信机制相关。
如上所述,本发明可以与任何一种类型的计算机310一起工作,无论该计算机是诸如服务器310D的服务器还是象第一、第二、第三和第五计算机310A-C和E-F的独立客户端或单独计算机。另外,本发明系统300允许进行对象通信,而不管计算机310是否可以存储对象315。诸如,第三计算机310C可以充当对于第二计算机310B的虚拟服务器,这是因为第二计算机310B可以包括诸如不具有存储网络300支持的任何对象315的能力的个人数字助理(PDA)的低存储器设备。
图3示出了计算机310如何用它们的链路305互联。诸如,第三计算机310C可以通过链路305连接到低存储器第二计算机310B。第三计算机310C可以通过附加链路305连接到服务器310D和第五计算机310E和第六计算机310F。第二、第三、第五计算机(310B、310C和310E)和服务器310D每一个可以具有诸如对象X和Y的相同的两个对象驻留本地。同时,第三计算机310C可能不具有与第六计算机310F一样的两个对象X、Y 315C1和315C2。即,第三计算机310C可能不具有驻留在计算机上的第三对象Z,而第六计算机310F可能具有驻留在该计算机上的第三对象Z。
虽然每个对象315不可能驻留在每个计算机310上,但是,如果允许特定计算机310访问非本地对象315,那么没有特定对象315的计算机310可以访问在其它计算机310上的非本地对象315。允许访问任何对象315(包括非本地对象315)可以保持在语境500中,如将在下面关于图5进一步详细讨论的那样。
系统的示例性高层结构
现在参考图4,该图示出了用于通过计算机网络在计算机310之间共享对象315的系统的示例性高层结构400。每个计算机310具有可以形成上面根据图3所讨论的链路305的一部分的传输抽象层(TAL)。连接到传输抽象层305的可以是如图3所述的系统网络对象(SNO)315。
系统网络对象(SNO)315可以支持应用程序410,其可以包括,但不限于,实时协作(RTC)程序,用来:通过可驻留在不同计算机上的聊天程序交换信息,在可以驻留于不同计算机上的字处理程序内共享文档,在可以驻留于不同计算机上的电子数据表程序内共享电子数据表,在可以驻留在不同计算机上的示出应用程序之间共享示出,在可以驻留在不同计算机上的游戏程序之间共享数据,和其它的有利于跨多个不同计算机实时共享数据的RTC应用程序。
传输抽象层305可以包括可以允许一个计算机310与在网络中的一个或多个其它计算机310进行通信的一组接口。传输抽象层可以使用诸如TCP、对等网络、HTTP、或任意其它允许计算机310跨网络发送消息到其它计算机310或从其它计算机310接收消息的通信技术,但不局限于此。传输抽象层305可以在驻留在不同计算机310上的系统网络对象315之间形成虚拟链路或会话415。会话415将在下面进行描述。
在网络中的计算机之间共享对象315的示例性过程流程和方法
下面根据所有的逻辑流程图描述的处理和操作可以包括处理器对信号的操作和驻留在一个或多个存储器设备上的数据结构内的这些信号的维护。为了在此讨论的目的,过程通常可以设想为产生所需结果的一系列计算机可执行的步骤。
这些步骤通常需要物理量的物理操作。通常,虽然不是必需的,这些量表现为能够进行存储、传送、组合、比较、或其它操作的电、磁或光信号的形式。本领域熟练技术人员约定俗成地称这些信号的表示为比特、字节、字、信息、单元、符号、字符、数字、点、数据、条目、对象、图像、文件等。然而,应当记住这些和类似的术语与计算机操作的合适物理量相关,并且,这些术语仅仅是应用于存在于计算机操作内或期间的物理量的代表标志。
还应该明白,在计算机内的操作通常称作这样的术语,诸如创建、添加、计算、比较、移位、接收、确定、识别、组装、载入、执行、等经常与操作人员执行的手动操作相关的操作。在此所述的操作可以是结合由与计算机交互的操作人员或用户提供的各种输入执行的机器操作。
此外,应该明白,在此所述的程序、过程、方法等与任何特定计算机或装置无关而且不限于任何特定的计算机或装置。相反,按照在此所述的方法各种类型的通用机器可用于下面的过程。
本发明可以包括计算机程序或硬件或它们的结合,它实施在此所述和在所附流程图中所示的功能。然而,很明显,存在多种以计算机编程或硬件设计实施本发明的不同方式,并且本发明不应该解释为限于任何一组计算机程序指令。
另外,熟练编程人员能够基于例如流程图和在应用文本中的相关描述容易地编写这种计算机程序或识别实施所公开发明的合适硬件电路。因此,特定程序代码指令组或详细硬件设备的公开并不应该认为是充分理解如何制造和使用本发明所必需的。在下面的描述中,将结合示出其它过程流程的剩余附图更详细地解释所要求的计算机可实施过程的发明功能。
进一步,在下面所有逻辑流程图中描述的过程或过程流程中的某些步骤自然必须在本发明其它步骤之前如所述那样起作用。然而,本发明并不限于所述步骤的顺序,只要这种顺序或序列不改变本发明的功能。即,应该认识到,一些步骤可以在其它步骤之前、之后或并行执行,而不脱离本发明的范围和精神。
传输抽象层305
传输抽象层(TAL)305可以包括网张化的SNO 315可以使用来跨计算机网络与其它机器310进行通信的接口。计算机网络使用不同的标准和不同的协议来传输不同类型的数据。在传统技术中,需要与网络上其它机器310通信的应用程序410通常被迫遵守不同的标准/协议。诸如,一些网络在以太网上使用TCP/IP协议来进行可靠传输,而其它的在以太网上使用TCP/IP上的HTTP。
这就意味着应用程序410通常需要与不同种类的协议进行通信来传输它们的数据分组。与传统技术相反,TAL 305可以抽象化协议中的任何不同因而使用SNO 315的任何机器310都不需要修改各SNO 315来在不同的网络上工作或与不同的网络一起工作。相反,TAL 305可以映射到它们的网络。TAL 305可以通过使用其它开发者可以修改的简单接口抽象化网络协议,并提供特定于它们的需要实现方式。TAL 305可以直接映射到网络协议的能力。诸如,在TAL 305内的信道417(下面讨论)可以相应于TCP端口。
使用SNO 315编码网络应用程序的开发者一般需要创建在不同机器310之间建立基本联系的会话415。作为建立会话415的部分,应用程序410需要诸如交换签名/证书的认证来确定身份。一旦建立了会话415,SNO 315和SNO 315内的数据就可以被共享。对于要共享的每个SNO 315创建语境500,其中,SNO315注册于语境500内。下面将根据图6描述语境500的进一步细节。
现在,参考图6A-6C,每个SNO 315在其中具有一个信道417的语境500内共享。会话415可特征化为连接到其它机器310的大管道,而信道417可特征化为较小的子管道,其可以在机器310之间交换有关单个SNO 315的信息。按照一个示例性实施例,在会话415中的每个机器或节点310不需要加入会话415的所有信道417中。节点310的子集可以参与到一个信道417中,而不同或重叠的子集可能参与到不同的信道417中。
当在语境500中创建并共享SNO 315时,它可以串行化为网络可传输消息格式(潜在的二进制或XML-参见下面讨论的图9中的1130)并可以在信道417中使用称作IChannel.SendMessage的方法发送到其它机器310,该方法将在下面进一步详细描述。当对SNO 315进行修改并保存时,还可以使用IChannel.SendMessage方法发送新的变化。
为了在信道417和会话415内传送消息,在某些情况下,可以使用这些消息的完全排序,而在其它情况下,可以使用部分排序或不排序。完全排序、部分排序和不排序是计算机网络应用程序中使用的标准术语,并对于本领域普通技术人员是已知的。但是,为了清楚和完整起见,下面是这些词的示例性简单定义/示例:完全排序指的是节点A在时刻T1发送分组一而节点B在时刻T2发送分组二的情形(T2晚于T1)。在信道417的所有节点310看见分组二和二以它们被发送完全相同的顺序到达(即,分组一在分组二之前到达)。
部分排序指的是节点A在T1发送分组一和在T2发送分组二,并且节点B在T3发送分组三和在T4发送分组四的情形。不同节点可以以不同的顺序看见分组一、二、三和四,但是来自相同节点的所有分组将以它们发送的顺序到达。诸如,节点C首先接收分组三和四,然后接收分组一和二。但是它们在分组一之前不接收分组二,或在分组三之前不接收分组四。
不排序是不存在任何顺序保证的情形。分组可以从任何源以任意顺序到达。
ISession接口436
ISession接口436可以由应用程序410使用来创建网络通信会话415。应用程序410可以用在会话415中与它在一起的节点选择建立身份和认证证书。使用ISession接口436的SendMessage方法来交换会话相关的信息。
ISession接口436还可以包括用来接收什么时候另一节点与本地节点310通信的通知的机制。每个节点310可以注册一个管理任何所接收通知的处理程序。当创建会话时,发送SessionOpenedEvent通知到信道417内的节点310。当会话关闭时,发送SessionClosedEvent通知到信道417内的节点310。当接收到消息时,就发送SessionMessageEvent通知到信道417内的其它节点310。
多点会话415的例子包括用于会话管理的方法;象发送/接收消息,创建新信道和监视和维护会话的状态。
下面是用于公共接口ISession 436的示例伪代码。下面所使用的术语“(激发)fired”意味着消息被发送到在特定信道417上的所有节点310。本领域熟练技术人员将理解,在不脱离本发明的范围和精神的情况下,可以对此伪代码做出修改:
{
//当从另一节点接收消息时激发。
event SessionMessageEvent Message;
//当会话不能发送消息激发。
event SessionMessageErrorEvent MessageError;
//当会话打开时激发。
event SessionOpenedEvent Opened;
//当会话关闭时激发。
event SessionClosedEvent Closed;
//获取这个会话中由本地用户表示的节点。
INode MyNode
//获取指示会话是否打开的值。
bool IsOpen
//关闭会话。
void Close();
//检查节点的连接。
bool CheckConnection(INode who);
//创建新的未打开信道。
IChannel CreateChannel(string name);
//发送消息到会话中的一个单个节点。
IMessage SendMessage(object message,INode to,bool ordered,objectcookie);
//停止消息事件并排队流入消息。
void BeginDeferMessages();
//解除排队所有消息并恢复消息事件。
void EndDeferMessages();
}
IChannel 433:信道管理的方法
简单参考图4B,该图示出了能够存在于对象创建序列期间的时间上的不同阶段。在创建会话415之后,应用程序410可以创建一个或多个SNO 315并可以将IChannel接口433给予包含语境500的每个SNO 315。语境500可以使用ISession 436的CreateChannel方法来创建信道417。
IChannel 433包含用来进行信道管理的方法,诸如,关闭、监视信道的状态,发送/接收消息并识别节点。每个语境500可以将处理程序附着到由信道417暴露的事件,并在事件发生时通知它。当另一个节点加入并离开信道417时,分别激发ChannelJoinedEvent和ChannelLeftEvent。当已经接受节点加入到信道时,就激发Channel JoinRequestEvent。
下面是用于公共接口IChannel 433的示例性伪代码。下面所使用的术语“(激发)fired”意味着消息被发送到特定信道417上的所有节点310。本领域熟练技术人员将理解,在不脱离本发明的范围和精神的情况下,可以对该伪代码做出修改:
公共接口IChannel 433
{
//当信道接收消息时调用。
event ChannelMessageEvent Message;
//当信道不能发送消息时调用。
event ChannelMessageErrorEvent MessageError;
//当信道打开时调用。
event ChannelOpenedEvent Opened;
//当信道关闭时调节,所有节点340断开连接。
event ChannelClosedEvent Closed;
//当本地节点加入信道时调用。
event ChannelJoinedEvent Joined;
//当本地节点离开信道时调用。
event ChannelLeftEvent Left;
//当节点已被接受加入信道时调用。
event ChannelJoinRequestEvent JoinRequest;
//当节点加入信道时调用。
event ChannelNodeJoinedEvent NodeJoined;
//当节点离开信道时调用。
event ChannelNodeLeftEvent NodeLeft;
//当信道没有SNO对象的相同版本时调用。
//数据丢失可能已发生,引起信道中的SNO变成彼此不同的版本。
event ChannelSynchronizationFailureEvent SynchronizationFailure;
//当信道从同步失败恢复时调用。
event ChannelSynchronizationRecoveryEvent SynchronizationRecovery;
//获取信道的唯一名字。
string Name
//获取这个信道中由本地用户表示的节点。
INode MyNode
//获取在信道中的节点。
INode[]Nodes
//获取指示信道是否打开的值。
bool IsOpen
//打开信道。
void Open();
//使所有节点脱离信道。
void Close(object info);
//加入远程节点信道。
void Join(INode from,object info);
//断开信道。
void Leave(object info);
//发送消息到信道中的所有节点。
IMessage SendMessage(object message,MessageOrderingType orderingType,object cookie);
//发送消息到信道中的一个单个节点。
IMessage SendMessage(object message,INode to,bool ordered,object cookie);
//停止消息事件并排队流入消息。
void BeginDeferMessages();
//解除排队所有消息并恢复消息事件。
void EndDeferMessages();
}
INode接口
在会话415中的每个机器310通过INode接口来识别。该接口包括URI(统一资源识别符)和IIdentity接口。IIdentity是由.Net Framework定义的标准接口。
//为网络化节点的识别指定标准接口。
public interface INode
{
//节点的唯一URI。
string Uri
//节点用户的识别。
IIdentity Identity
}
消息排序类型:
下面的枚举指定了消息排序的类型。
Public enum MessageOrderingType
{
//不排序。
None,
//以发送的顺序接收从单节点发送的消息。
Partial,
//以相同的顺序接收从所有节点发送的消息。
Full,
}
IMessage:
单个多点(网络)消息;包含标识的属性:
//为消息收发指定标准接口。
public interface IMessage
{
//获取准发送了消息。
INode From
//获取消息的内容。
object Message
//获取消息的顺序类型。
MessageOrderingType Ordering
//获取消息的可选Cookie。
object Cookie
}
TAL 305的概述及其与SNO 315的关系
为了使用SNO 315,通常需要单独实现TAL接口,这是因为SNO 315使用TAL 305来与网络上的其它机器310进行通话。
为了提供一种TAL 305的实现方式,需要实现一种版本的网络协议。如果不存在一个可用的版本,那么操作人员就应该考虑:识别将用来与其它机器310进行通信的标准网络协议。诸如,如果将与web服务器进行通信,那么HTTP可能是优选的协议。然后,TAL接口305可以映射到HTTP接口。诸如,当创建会话415的TAL 305时,可以创建相应的HTTP会话。当子方法ISession.SendMessage被调用时,可以使用HTTP协议的put或get方法来发送该消息。
TAL 305提供了对SNO 315的一个级别的抽象,因此当需要SNO 315与不同网络协议一起使用时,无需变化。此外,如果网络协议匹配,有可能共享其它人的TAL实现方式或共享实现方式。
系统网络对象315的示例性语境500
现在参考图5,该图示出了在语境500中可以发现的示例性组件。系统的每个对象315可以具有一个相关的语境500。并且,每个对象315可以作为一个语境500的一部分。每个语境500可以包括跟踪在多个系统网络对象(SNO)315之间的一个或多个关系和在具有对象315复本或可以访问对象315,或者两者都可以的计算机310之间的关系的信息。每个语境500可以包括其自身的唯一标识符505,其可以包括多个或一系列字母或它们的组合。
每个语境500还可以包括下面的一个或多个:具有在语境500中的对象的每个计算机310的安全参数或许可的子列表510;可以包括加入或离开语境500的计算机310、诸如共享或不共享的对象指示,语境500中的对象的状态改变和语境500自身的状态改变的事件信息515;作为特定语境500的一部分的网络对象315的子列表520;作为语境500的一部分的每个计算机310的计算机标识符的子列表525。
安全子列表510可以包括一组主列表,其包括识别哪一个计算机310访问了语镜500中的对象315以及计算机310所具有的访问级别的许可列表。诸如,一个计算机310可能只具有关于特定对象315的只读权利,而另一计算机310可能具有关于特定对象315的读和写两项权利。
语境500可以识别哪个计算机310具有一个或多个特定对象315,并且它可以帮助管理作为特定语境500部分的对象315。每个计算机310具有该计算机作为其部分的语境500一部分的部分或全部复本。语境500可以帮助确保作为语境500一部分的每个计算机310具有构成该语境500的的一个或多个对象315相同版本。通过安全参数子列表510,语境500可以有助于判定哪一个计算机310可以访问语境500中的某些对象315和哪一个计算机310可以改变语境500中的对象。
语境500可以具有激活和睡眠状态。在激活状态中,可提供作为特定语境500一部分的每个计算机310对象315上的信息。诸如,如果对作为语境500一部分的对象315做出任何改变,那么就可以将该信息提供给具有所关心的该对象315复本的那些计算机310。在语境500的激活状态期间,每个计算机310可以传输(接收或发送)有关作为语境500部分的对象315的任何信息。
包括不同语境500的示例性会话415
现在,参考图6A,该图示出了在计算机1到4之间存在的会话415。会话415包含用于希望加入会话的机器310的唯一标识符。机器310可以同时处于多个会话中。会话415可以包括多个语境500。会话415代表了相互之间进行通信的机器310的集合。该通信可以通过会话中的各种语境500来发生。
现在参考图6B,该图示出了作为图6A的较大会话415部分的第一语境500A的细节。在语境500A中允许使用第一和第二对象315的所有计算机310具有第一和第二对象315的复本或至少访问到它们,而不管它们的位置。对于图6A和6B所示的示例性实施例,只有第一、第三和第四计算机310具有第一和第二对象315。机器2不是语境500A的部分,因此,机器2不能访问或得到对象二的复本(但是机器2作为图6A所示较大会话415的部分)。
现在参考图6C,该图示出了作为图6A的较大会话415部分的第二语境500B的细节。在语境500B中允许使用第一和第三对象315的所有计算机310具有第一和第三对象315的复本或至少访问到它们,而不管它们的位置。对于图6A和6C所示的示例性实施例,只有第一、第二和第四计算机310具有第一和第三对象315。机器3不是语境500A的部分,因此,机器3不能访问或得到对象三的复本(但是机器3作为图6A所示较大会话415的部分)。
系统网络对象315的示例性结构
现在,参考图7,该图示出了按照本发明一个实施例的系统网络对象315的示例性结构。系统网络对象315由在语境中的每个节点调用的共享方法、只有本地机器可以调用的本地方法、和特定于共享网络对象315的其它特殊同步代码构成。
用系统网络对象315创建语境500
首先,机器310通常必须加入会话415。这可以通过使用TAL 305来完成。可以创建并添加一组主列表到语境500。这些描述了由共享语境的语境列表管理器705维护的安全/访问列表,并被本地化强制实施。对于企业系统来说,可以从诸如微软活动目录的可信任位置或会话415中的可信任机器310获得该组主列表。将与语境相关的信道417可以使用会话415来创建。
跨多个机器310共享语境500
为了跨多个机器310共享语境500,可以从共享对象业务439调用称作“共享”的方法,其可以传递该信道417和语境500。在发生这种信息传递之后,语境500被认为是“共享的”。
加入语境500
为了加入语境500,可以从共享对象业务439调用称作“加入”的方法,传递信道417、语境500和其中连接是所需的节点310。通常,节点310必须已经存在于信道417中。并且加入的请求通常被发送到指定节点310。一旦节点310接收到该“OnJoinRequest”消息,该消息可以包括加入节点的证书/身份和由语境500的创建者指定的附加属性,那么接收节点310可以选择接受或拒绝该请求。
并且,在其它情况下,接收节点310通常发送完全排序消息到加入节点310,该节点包含指定到共享语境500的实现方式的附加信息。该消息通常是完全排序的,以便在该消息中发送的任何数据都将与正在信道417中发送的其它消息同步。这使加入的节点310可以同步状态开始其语境500。
示例性语境500可以使用该数据来发送语境500中的现有共享对象315到加入节点310,从而保持语境同步。加入节点310可以将该数据作为OnJoinResponse消息来接收。如果该消息包含到语境500的接受,那么就认为加入节点310现在“处于”语境500中。
语境500可以接收指示语境500中的每个节点310的状态的消息。节点状态可以包括,但不限于以下:连接、已连接、断开连接、已断开连接、和掉线。加入语境500的节点310的事件顺序几乎总是如下:已断开连接->连接->已连接。
为了从语境500断开连接节点310,事件的顺序通常如下:已连接->断开连接->已断开连接。在任何阶段,节点310可以进入掉线状态,指示节点310从语境出乎意料地掉线了。
在计算机之间共享对象的示例性方法-加入语境500
现在,参考图8,该图是示出用于在计算机310之间通过网络共享对象315的示例性过程800的概括的逻辑流程图,其中第二计算机310按照本发明的一个示例性实施例加入与第一计算机310的会话415。步骤803是示例性过程800的第一步骤,其中创建具有与至少第一计算机310相关的唯一标识符的语境500。在该步骤,第一计算机或节点310可以创建具有如以上关于图5所讨论的唯一希腊字母或数字或文字数字标识符的语境500。在步骤806,唯一语境标识符可以被记录在语境500。
在判定步骤8098,判定第二节点310是否已经发送请求来加入由第一节点310创建的语境500。如果判定步骤809的查询为否定,那么过程进入到“否(No)”分支,并循环返回到步骤809。如果判定步骤809的查询为肯定,那么就流向“是(yes)”分支而进入判定步骤812。
在判定步骤812,判定第二节点310是否具有所需的许可来加入到与第一节点310的会话中。在该步骤,第一节点310可以检查其语境列表500,尤其是语境500的安全子列表510来判定是否允许第一节点310访问语境500的对象315。
如果对于判定步骤812的查询为否定,那么流向“否(No)”分支而进入步骤815,在此,向第二节点310传输拒绝消息。接着,在步骤818,过程800随后结束。
如果对判定步骤812的查询为肯定,那么就流向“是(yes)”分支而进入到步骤821,在此,将第二节点的唯一标识符添加到语境500中。接着,在步骤824,产生对于加入请求消息的响应,并将其作为完全排序分组,该分组包括当前会话数据和来自会话415中的当前节点310的最后分组号列表。
最后分组号列表将用于下面进一步详细讨论的步骤839中。在步骤827,为包括最后分组号的第二节点310发出的响应被记录在语境500中。在步骤836,接着,将完全排序分组响应传送到第二节点310。
在步骤833,可以将第二节点310加入到环境500的消息发送给语境500中的任何其它节点。在判定步骤836,判定第二节点310处在语境500期间是否接收到任何分组。如果对于判定步骤836的查询为否定,那么,就流向“否(No)”的分支而进入步骤848。
如果判定步骤836的查询为肯定,那么就流向“是(Yes)”分支而进入判定步骤839,在此,判定所接收分组是否早于在来自第一节点310的完全排序分组中给出的分组号。换句话说,在判定步骤839,判定第二节点310是否正在接收在第二节点310加入到语境500之前发生的分组或信息。第二节点310不应该使用有关已经过时并且在第二节点310加入到会话415和语境500之前发生的语境500的对象315的信息。
如果对于判定步骤839的查询为肯定,意味着所接收的分组包含过期的信息,那么就流向“是(Yes)”分支而进入步骤842,在此,第二节点310忽略这些分组。如果对于判定步骤839的查询为否定,意味着,这些分组包含与第二节点310加入到语境500的时间相关的新信息,那么就进入“否(No)”分支,而进入步骤845,在此,第二节点310处理所接收的分组。
接着,在步骤848,第二节点310可以发送其加入语境500中的消息到语境500中的所有其它节点。接下来,在判定步骤851,判定是否有任何节点310离开或掉线会话415。如果对判定步骤851的查询为否定,那么就流向“否(No)”分支到达过程800结束处。
如果对判定步骤851的查询为肯定,那么就流向“是(Yes)”分支而进入例程857,并发送节点310已经离开语境500的消息到所有的节点310。在步骤860,离开的节点310的唯一标识符被记录在语境500中。接着,过程800结束。
共享对象315S的描述
现在,参考图9,提供了示出共享对象315S和该对象315S如何被在计算机网络中的不同节点310访问的示例性功能框图。共享对象315S可以包括可以是可代理的(即,在.net framework的情况中,为MarshaIByRef对象)并通常必须说明自己可共享的对象315。说明对象315可共享的示例性方法可以使用属性或实现接口。共享对象315S可以包括一组共享方法1105。共享方法1105可以包括这样的方法,当被调用时,其被连接到该语境500中共享对象315S的所有节点310所激活。
共享方法1105描述如何调用或选定共享方法的用属性来说明。这些属性可以被至少分成三类:消息排序标志、消息调用标志和消息确保。对于更多的属性分类,可以参见下面题目为“共享方法属性”的详细描述部分。
共享方法属性
“消息排序”标志可以描述这样一种方式,其中调用消息被跨共享语境500S发送到其它节点310。三种类型的消息排序可以包括:不排序、部分排序和完全排序,但不局限于此。这些消息排序类型如上面关于TAL 305说明所描述。本发明的示例性实施例可以包括完全排序作为缺省选项,因为,完全排序允许没有损失的同步。
共享方法调用标志可以定义共享方法1105应该何时被调用。共享对象315S可以在多个时间接收共享对象调用消息,每一次相应于消息排序阶段中的变化。消息排序,如在上述TAL 305说明中所述,通常按照如下顺序进行:不排序->部分排序->完全排序->已保证。在阶段中的任何一点,消息可能失败,从而将状态改变为“已失败”。
共享方法1105可以说明哪一种状态有可能被调用。共享语境500S通常不保证它将在任意阶段而不是或者失败阶段或者由方法顺序标志指定的阶段的最后阶段上调用共享方法1105。在调用期间,共享方法1105可以判定正在调用该方法的节点310、当前调用阶段和节点310所属的共享语境500S。
示例性实施例可以包括设置为“完全排序”和“已保证”的缺省值。这种缺省设置可以使得共享对象315S好像它存在于本地机器310并且不能够(变得失去同步)丢失其与其它节点310的镜像状态。将该值设置为“已保证”确保了共享方法1105将不被调用,除非能够在语境500中的每个节点310上被调用。“消息确保”是指示消息是否被传送到所有机器310的设置。
在语境500中注册和不注册共享对象315S
共享语境500S可以注册共享对象315S。当共享对象315S被注册时,一般需要唯一标识符。该标识符可以用来唯一地区别共享语境500S中的共享对象315。在该情况中,返回代理对象315P,并在语境500中连接共享对象315。代理对象315P通常必须由共享对象315P的客户端/节点310使用。调用代理对象315P的方法可以打包成方法调用消息,并发送到共享语境500S。当在共享语境500S中接收到方法调用消息1110时,就使用消息中的唯一标识符来发现该方法应该调用的共享对象315。但是,共享语境500S通常不立即调用共享的方法1105。
相反,共享语境500S通常首先在判定步骤1115检查安全参数和许可子列表510中的主列表组来判定是否允许发送节点310来调用共享方法1105。如果对判定步骤1115的查询为否定,那么就流向“否(no)”分支而进入步骤1120,在此,该消息被丢弃,并在共享语境500S上本地化地产生事件。否则,如果对判定步骤1115的查询为肯定,那么就流向“是(yes)”分支而进入步骤1125,在此,共享语境500S调用在共享对象315S上的方法。示例性系统可以使用.Net主列表作为安全主列表的工具。
应该明白,前面的描述仅仅涉及本发明的示例实施例,并且可以做出多种变化,而不脱离由下面权利要求书所定义的本发明的精神和范围。
Claims (18)
1、一种在计算机之间共享编程对象的方法,包括:
创建具有唯一标识符的语境;
接收来自第二计算机的加入具有第一计算机的语境的请求;
判定第二计算机是否具有加入到所述语境的许可;和
如果第一计算机具有许可,就发送包含语境数据的消息到第二计算机。
2、根据权利要求1的方法,其特征在于,接收来自第二计算机加入语境的请求进一步包括接收来自包括服务器的第二计算机的请求。
3、根据权利要求1的方法,其特征在于,接收来自第二计算机加入语境的请求进一步包括接收来自包括服务器的客户端的第二计算机的请求,并且其中所述服务器只与第二计算机相关,而与第一计算机不相关。
4、根据权利要求1的方法,其特征在于,接收来自第二计算机加入语境的请求进一步包括接收来自作为包括第一计算机的计算机网络的一部分的第二计算机的请求。
5、根据权利要求1的方法,其特征在于,发送包含语境数据的消息到第二计算机进一步包括发送与聊天室、字处理程序、电子数据表程序、幻灯片示出程序和游戏程序之一相关的信息。
6、根据权利要求1的方法,其特征在于,发送包含语境数据的消息到第二计算机进一步包括发送与实时协作相关的信息。
7、根据权利要求1的方法,其特征在于,接收来自第二计算机加入语境的请求进一步包括接收来自包括手持计算机的第二计算机的请求,并且其中所述第一计算机包括台式计算机和膝上型计算机之一。
8、根据权利要求1的方法,进一步包括产生具有完全排序分组的消息。
9、根据权利要求1的方法,进一步包括产生具有完全排序分组的消息,该分组包含语境数据和来自作为语境一部分的一个或多个节点的最后分组号列表。
10、根据权利要求1的方法,进一步包括:
用第二计算机接收分组;和
判定用第二计算机接收的分组是何时相对于所述语境数据创建的。
11、一种支持实时协作计算机应用的系统,包括:
用于在计算机之间共享的接收输入和提供输出的应用程序;
用于支持由应用程序做出的功能调用并可以由其它计算机跨网络访问的系统网络对象;和
用于建立和维护在跨网络分布的系统网络对象之间的通信的传输抽象层,无论系统网络对象驻留在服务器计算机上还是非服务器计算机上。
12、根据权利要求11的系统,其特征在于,所述传输抽象层包括一组接口。
13、根据权利要求11的系统,其特征在于,所述系统网络对象是语境的一部分。
14、根据权利要求13的系统,其特征在于,所述语境包括跟踪在多个系统网络对象之间的一个或多个关系和在可具有对象的复本之一和到对象的访问的计算机之间的关系的信息。
15、根据权利要求11的系统,其特征在于,所述应用程序包括聊天室应用程序、字处理程序、电子数据表程序、幻灯片示出程序和游戏程序之一。
16、根据权利要求11的系统,其特征在于,所述应用程序包括实时协作程序。
17、根据权利要求11的系统,其特征在于,跨网络计算机包括至少一个计算机服务器和至少一个对等网络。
18、根据权利要求11的系统,其特征在于,跨网络计算机是对等网络的一部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/816,319 US20050218739A1 (en) | 2004-04-01 | 2004-04-01 | System and method for sharing objects between computers over a network |
US10/816,319 | 2004-04-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1677979A true CN1677979A (zh) | 2005-10-05 |
Family
ID=34887760
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005100649272A Pending CN1677979A (zh) | 2004-04-01 | 2005-04-01 | 通过网络在计算机之间共享对象的系统和方法 |
Country Status (10)
Country | Link |
---|---|
US (1) | US20050218739A1 (zh) |
EP (1) | EP1583320A2 (zh) |
JP (1) | JP2005316993A (zh) |
KR (1) | KR20060045365A (zh) |
CN (1) | CN1677979A (zh) |
AU (1) | AU2005201341A1 (zh) |
BR (1) | BRPI0501296A (zh) |
CA (1) | CA2502855A1 (zh) |
MX (1) | MXPA05003553A (zh) |
RU (1) | RU2379755C2 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009079850A1 (en) * | 2007-12-21 | 2009-07-02 | Intel Corporation | Peer-to-peer streaming and api services for plural applications |
CN101361054B (zh) * | 2005-11-15 | 2011-07-06 | 蒂弗萨公司 | 识别对等网络软件应用程序的存在的系统 |
CN101686165B (zh) * | 2008-09-28 | 2012-08-22 | 联想(北京)有限公司 | 芯片装置及用该装置访问网络共享文件的方法 |
CN106325223A (zh) * | 2015-06-17 | 2017-01-11 | 派斡信息技术(上海)有限公司 | 控管电子装置的方法以及应用该方法的控制系统 |
CN110941425A (zh) * | 2018-09-25 | 2020-03-31 | 北京龙码科技有限公司 | 图形化协同编程方法、装置和系统、服务器及存储介质 |
CN114186922A (zh) * | 2013-11-29 | 2022-03-15 | 联邦快递服务公司 | 无线节点网络中的关联管理 |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7882253B2 (en) * | 2001-04-05 | 2011-02-01 | Real-Time Innovations, Inc. | Real-time publish-subscribe system |
TWI251149B (en) * | 2004-06-17 | 2006-03-11 | Mitac Technology Corp | Objectives selecting and transmitting method and device among plural computers |
US20060161785A1 (en) * | 2005-01-20 | 2006-07-20 | Christopher Conner | System and method for querying a network directory for information handling system user privileges |
US7552188B2 (en) * | 2005-02-21 | 2009-06-23 | Sony Computer Entertainment Inc. | Network system, element thereof and network visualization method |
FI120639B (fi) * | 2005-11-09 | 2009-12-31 | Balan Pillai | Tietointensiivinen järjestely hajallaan olevan tiedon käsittelemiseksi |
WO2007133294A2 (en) * | 2005-12-30 | 2007-11-22 | Bmo Llc | Ubiquitous navbar user interface across multiple heterogeneous digital media devices |
WO2007136423A2 (en) * | 2005-12-30 | 2007-11-29 | Bmo Llc | Digital content delivery via virtual private network(vpn) incorporating secured set-top devices |
KR100813972B1 (ko) * | 2006-03-08 | 2008-03-14 | 삼성전자주식회사 | 컨텐츠 스트리밍 클라이언트 장치 및 방법, 그 방법을수행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록매체 |
US7827559B1 (en) | 2006-04-24 | 2010-11-02 | Real-Time Innovations, Inc. | Framework for executing multiple threads and sharing resources in a multithreaded computer programming environment |
US8671135B1 (en) * | 2006-04-24 | 2014-03-11 | Real-Time Innovations, Inc. | Flexible mechanism for implementing the middleware of a data distribution system over multiple transport networks |
US7783853B1 (en) | 2006-04-24 | 2010-08-24 | Real-Time Innovations, Inc. | Memory usage techniques in middleware of a real-time data distribution system |
US7996789B2 (en) * | 2006-08-04 | 2011-08-09 | Apple Inc. | Methods and apparatuses to control application programs |
KR20080023026A (ko) * | 2006-09-08 | 2008-03-12 | 주식회사 프리챌 | 정보 공유 방법 및 정보 공유 시스템 |
US9148431B2 (en) | 2006-12-12 | 2015-09-29 | Qualcomm Incorporated | Systems and methods for caller identification customization and remote management of communication devices |
US8200764B2 (en) * | 2006-12-19 | 2012-06-12 | International Business Machines Corporation | System and method for achieving highly scalable real-time collaboration applications using HTTP |
US20080281718A1 (en) * | 2007-01-08 | 2008-11-13 | Barrett Morgan | Household network incorporating secure set-top devices |
US8079039B2 (en) * | 2007-03-09 | 2011-12-13 | Microsoft Corporation | Isolating, managing and communicating with user interface elements |
US8782527B2 (en) * | 2007-06-27 | 2014-07-15 | Microsoft Corp. | Collaborative phone-based file exchange |
EP2283691A4 (en) * | 2008-06-06 | 2014-10-22 | Samsung Electronics Co Ltd | METHOD AND SYSTEM FOR DATA MANAGEMENT IN A NAHFELD COMMUNICATION NETWORK |
US8589358B2 (en) * | 2008-06-26 | 2013-11-19 | Emc Corporation | Mechanisms to share attributes between objects |
US8943551B2 (en) | 2008-08-14 | 2015-01-27 | Microsoft Corporation | Cloud-based device information storage |
US20110010629A1 (en) * | 2009-07-09 | 2011-01-13 | Ibm Corporation | Selectively distributing updates of changing images to client devices |
US9277021B2 (en) | 2009-08-21 | 2016-03-01 | Avaya Inc. | Sending a user associated telecommunication address |
US9104715B2 (en) * | 2010-06-23 | 2015-08-11 | Microsoft Technology Licensing, Llc | Shared data collections |
US8527609B2 (en) * | 2010-11-04 | 2013-09-03 | Microsoft Corporation | Serializing document editing commands |
RU2459239C2 (ru) * | 2010-11-08 | 2012-08-20 | Кирилл Евгеньевич Чирков | Распределенная вычислительная система оптимальных решений |
KR101857563B1 (ko) * | 2011-05-11 | 2018-05-15 | 삼성전자 주식회사 | 네트워크 전자기기들 간 데이터 공유 방법 및 장치 |
US9195768B2 (en) * | 2011-08-26 | 2015-11-24 | Amazon Technologies, Inc. | Remote browsing session management |
WO2014046424A1 (en) | 2012-09-18 | 2014-03-27 | Samsung Electronics Co., Ltd. | Information transmission method and system, and device |
US9032106B2 (en) * | 2013-05-29 | 2015-05-12 | Microsoft Technology Licensing, Llc | Synchronizing device association data among computing devices |
US9716861B1 (en) | 2014-03-07 | 2017-07-25 | Steelcase Inc. | Method and system for facilitating collaboration sessions |
US10664772B1 (en) | 2014-03-07 | 2020-05-26 | Steelcase Inc. | Method and system for facilitating collaboration sessions |
US9766079B1 (en) | 2014-10-03 | 2017-09-19 | Steelcase Inc. | Method and system for locating resources and communicating within an enterprise |
US9955318B1 (en) | 2014-06-05 | 2018-04-24 | Steelcase Inc. | Space guidance and management system and method |
US9380682B2 (en) | 2014-06-05 | 2016-06-28 | Steelcase Inc. | Environment optimization for space based on presence and activities |
US11744376B2 (en) | 2014-06-06 | 2023-09-05 | Steelcase Inc. | Microclimate control systems and methods |
US10433646B1 (en) | 2014-06-06 | 2019-10-08 | Steelcaase Inc. | Microclimate control systems and methods |
US9852388B1 (en) | 2014-10-03 | 2017-12-26 | Steelcase, Inc. | Method and system for locating resources and communicating within an enterprise |
US10733371B1 (en) | 2015-06-02 | 2020-08-04 | Steelcase Inc. | Template based content preparation system for use with a plurality of space types |
US9921726B1 (en) | 2016-06-03 | 2018-03-20 | Steelcase Inc. | Smart workstation method and system |
US10264213B1 (en) | 2016-12-15 | 2019-04-16 | Steelcase Inc. | Content amplification system and method |
US12118178B1 (en) | 2020-04-08 | 2024-10-15 | Steelcase Inc. | Wayfinding services method and apparatus |
US11984739B1 (en) | 2020-07-31 | 2024-05-14 | Steelcase Inc. | Remote power systems, apparatus and methods |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2172517C (en) * | 1993-09-24 | 2000-02-15 | Sandeep Jain | Method and apparatus for data replication |
US5572582A (en) * | 1995-02-24 | 1996-11-05 | Apple Computer, Inc. | Method and apparatus for establishing communication between two teleconferencing endpoints |
US5806074A (en) * | 1996-03-19 | 1998-09-08 | Oracle Corporation | Configurable conflict resolution in a computer implemented distributed database |
US6327630B1 (en) * | 1996-07-24 | 2001-12-04 | Hewlett-Packard Company | Ordered message reception in a distributed data processing system |
US6192394B1 (en) * | 1998-07-14 | 2001-02-20 | Compaq Computer Corporation | Inter-program synchronous communications using a collaboration software system |
US6584493B1 (en) * | 1999-03-02 | 2003-06-24 | Microsoft Corporation | Multiparty conferencing and collaboration system utilizing a per-host model command, control and communication structure |
US6430576B1 (en) * | 1999-05-10 | 2002-08-06 | Patrick Gates | Distributing and synchronizing objects |
US6549937B1 (en) * | 1999-07-21 | 2003-04-15 | Microsoft Corporation | System and method for multi-protocol communication in a computer network |
US20010039548A1 (en) * | 2000-04-27 | 2001-11-08 | Yoshitake Shinkai | File replication system, replication control method, and storage medium |
US6809749B1 (en) * | 2000-05-02 | 2004-10-26 | Oridus, Inc. | Method and apparatus for conducting an interactive design conference over the internet |
US7203755B2 (en) * | 2000-12-29 | 2007-04-10 | Webex—Communications, Inc. | System and method for application sharing in collaborative setting |
WO2003021798A2 (en) * | 2001-09-04 | 2003-03-13 | Soft2B Llc | Browser-to-browser, dom-based, peer-to-peer communication with delta synchronization |
US6983370B2 (en) * | 2001-11-27 | 2006-01-03 | Motorola, Inc. | System for providing continuity between messaging clients and method therefor |
US7234117B2 (en) * | 2002-08-28 | 2007-06-19 | Microsoft Corporation | System and method for shared integrated online social interaction |
US6976092B1 (en) * | 2002-09-17 | 2005-12-13 | Bellsouth Intellectual Property Corp. | System that using transport protocol objects located at agent location to generate session ID and to provide translation between different instant messaging protocols |
US7185059B2 (en) * | 2002-09-17 | 2007-02-27 | Bellsouth Intellectual Property Corp | Multi-system instant messaging (IM) |
US7743022B2 (en) * | 2003-02-28 | 2010-06-22 | Microsoft Corporation | Method and system for synchronizing data shared among peer computing devices |
US7222305B2 (en) * | 2003-03-13 | 2007-05-22 | Oracle International Corp. | Method of sharing a desktop with attendees of a real-time collaboration |
US20050044145A1 (en) * | 2003-08-20 | 2005-02-24 | International Business Machines Corporation | Collaboration method and system |
US7296023B2 (en) * | 2004-01-15 | 2007-11-13 | International Business Machines Corporation | Method and apparatus for persistent real-time collaboration |
US20060085923A1 (en) * | 2004-10-04 | 2006-04-27 | Alain Lagrange | Dye composition comprising a naphthoylene-benzimidazolium direct dye, process for dyeing keratin fibers and uses thereof |
-
2004
- 2004-04-01 US US10/816,319 patent/US20050218739A1/en not_active Abandoned
-
2005
- 2005-03-29 AU AU2005201341A patent/AU2005201341A1/en not_active Abandoned
- 2005-03-30 EP EP05102513A patent/EP1583320A2/en not_active Withdrawn
- 2005-03-31 RU RU2005109315/09A patent/RU2379755C2/ru not_active IP Right Cessation
- 2005-03-31 BR BR0501296-1A patent/BRPI0501296A/pt not_active IP Right Cessation
- 2005-03-31 CA CA002502855A patent/CA2502855A1/en not_active Abandoned
- 2005-03-31 KR KR1020050027116A patent/KR20060045365A/ko not_active Application Discontinuation
- 2005-04-01 CN CNA2005100649272A patent/CN1677979A/zh active Pending
- 2005-04-01 JP JP2005106534A patent/JP2005316993A/ja active Pending
- 2005-04-01 MX MXPA05003553A patent/MXPA05003553A/es not_active Application Discontinuation
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101361054B (zh) * | 2005-11-15 | 2011-07-06 | 蒂弗萨公司 | 识别对等网络软件应用程序的存在的系统 |
WO2009079850A1 (en) * | 2007-12-21 | 2009-07-02 | Intel Corporation | Peer-to-peer streaming and api services for plural applications |
US9535733B2 (en) | 2007-12-21 | 2017-01-03 | Intel Corporation | Peer-to-peer streaming and API services for plural applications |
CN101686165B (zh) * | 2008-09-28 | 2012-08-22 | 联想(北京)有限公司 | 芯片装置及用该装置访问网络共享文件的方法 |
CN114186922A (zh) * | 2013-11-29 | 2022-03-15 | 联邦快递服务公司 | 无线节点网络中的关联管理 |
CN106325223A (zh) * | 2015-06-17 | 2017-01-11 | 派斡信息技术(上海)有限公司 | 控管电子装置的方法以及应用该方法的控制系统 |
CN110941425A (zh) * | 2018-09-25 | 2020-03-31 | 北京龙码科技有限公司 | 图形化协同编程方法、装置和系统、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
MXPA05003553A (es) | 2005-10-06 |
EP1583320A2 (en) | 2005-10-05 |
RU2005109315A (ru) | 2006-10-10 |
AU2005201341A1 (en) | 2005-10-20 |
BRPI0501296A (pt) | 2005-11-16 |
JP2005316993A (ja) | 2005-11-10 |
RU2379755C2 (ru) | 2010-01-20 |
CA2502855A1 (en) | 2005-10-01 |
KR20060045365A (ko) | 2006-05-17 |
US20050218739A1 (en) | 2005-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1677979A (zh) | 通过网络在计算机之间共享对象的系统和方法 | |
CN1183717C (zh) | 桥连HAVi子网络和UPnP子网络的方法及实施所述方法的装置 | |
CN1231028C (zh) | 在不同网络的匿名用户之间智能建立会话的分布式系统 | |
CN1148668C (zh) | 面向对象的邮递服务器框架机构 | |
CN1310152C (zh) | 交换方法和交换设备 | |
CN1142489C (zh) | 信息处理方法和服务器 | |
CN101060464A (zh) | 地址变换装置、消息处理方法及网络系统 | |
CN1309223C (zh) | 用于移动多媒体应用的通用服务质量适应构架 | |
CN1280716C (zh) | 计算机处理方法、分布式计算方法和网络计算方法 | |
CN1956452A (zh) | 一种实现数据同步的方法、系统、客户端及服务器 | |
CN1661598A (zh) | 协作服务器,协作系统,及协作服务器和系统用方法和程序 | |
CN1823332A (zh) | 用户通知的系统和方法 | |
CN1437812A (zh) | 对设置参数层进行组织及组合以生成与通讯网络相关的实体的整体文件 | |
CN1703048A (zh) | 网络服务应用协议和soap处理模型 | |
CN1503526A (zh) | 地址转换装置和地址转换规则的管理方法 | |
CN1677277A (zh) | 服务提供方法、服务提供商设备、信息处理方法和设备 | |
CN101044498A (zh) | 工作流服务体系结构 | |
CN1620783A (zh) | 用于在通信环上同时管理多个令牌的方法和系统 | |
CN1832473A (zh) | 一种在ims网络中处理会话消息的方法及装置 | |
CN1223936C (zh) | 网络应用程序分散执行系统,终端设备及其网络应用程序执行方法,以及终端设备的操作方法 | |
CN1466720A (zh) | 代理程序系统 | |
CN1201942A (zh) | 报文处理方法和装置及用于存储控制程序的存储介质 | |
CN1113292C (zh) | 可由多个用户单元同时使用的程序进行的访问控制的方法 | |
CN1711523A (zh) | 用于管理多系统群集中资源争用的方法和装置 | |
CN1823492A (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 | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20051005 |