具体实施方式
图4是一个描述了包括一个或多个网络设备的计算机网络系统400的框图,其中所述一个或多个网络设备包括作为计算机网络430的节点的一台或多台客户计算机410、412以及一台或多台专用服务器计算机420、422。因此,其中某些网络计算机配置为服务器,而某些网络计算机则配置为客户机。计算机网络430可以包括一个像因特网这样的互连网络集合,并且可以包括处于每一个节点410、412、420、422的一个或多个局域网。这里使用的术语“因特网”指的是一个互连(公共和/或私有)网络集合,这些网络通过一组标准通信协议连接在一起,从而形成了一个全球性的分布式网络。
客户计算机410、412可以在网络430上向服务器计算机420、422之一发送关于数据的请求,其中将服务器计算机配置成以一种众所周知的方式来将数据经由网络430发送到客户计算机。如本领域技术人员所了解的那样,服务器计算机420、422可以包括或以通信方式连接到对方或是其他服务器,例如数据库服务器和/或应用服务器。尽管图4只显示了两台客户计算机410、412以及两台服务器计算机420、422,但是应该了解,网络系统400可以包括多台客户计算机410、412以及服务器计算机420,422。在这里,有时也将服务器计算机420、422与客户计算机410、412合在一起称为网络计算机。
网络系统400支持一个由计算机程序组成的多用户应用440,其中多个用户可以借助所述应用并且使用连接到计算机网络430的网络设备(例如客户计算机410,412)而在联机会话中进行交互。所述应用440安装在每一台计算机上,这意味着应用440的操作实例保存在运行(执行)该应用的每一台客户计算机410、412的存储器中。对每一台将要参与所述多用户应用的一个联机会话的服务器计算机来说,所述计算机同样保存了所述应用440的一个实例。出于说明的目的,虽然其中显示服务器420、422都安装了应用440,但是在这里假设第一服务器计算机420是一个用于客户机410、412所执行的多用户应用的服务器。在执行过程中,在应用440的实例之间进行了数据交换,并且可以通过在每一台网络计算机上建立网络套接字(networksocket)来启用所述交换。在图4中,所述套接字在每一台相应的网络计算机上都是作为方框来表示的。本领域技术人员将会理解,所述网络套接字即为网络系统400上运行的两个或更多程序之间的多向通信链路的一个末端。
如下文更详细描述的那样,应用440可以在依照多种通信结构的网络系统400的网络设备上运行,此外可以将与不同应用相关的处理职责分配到网络430中的不同计算设备。较为优选的是使用一个应用开发接口来开发应用440,以下对此进行了更详细的描述。通过操作所述应用,可以使相关的网络计算机使用一种通信结构来执行图1、图2和图3所示的任何一种通信模式。
多用户应用440可以是用户在与计算机网络430相连的网络计算机上运行的任何类型的应用。当在客户计算机410、420上运行应用440时,用户可以通过其他那些同样运行应用440的网络计算机来与其他用户进行交互。网络计算机420可以充当一个中心网络“会合点”,通过所述会合点,用户可以建立联系、维护数据并发起应用440的一个联机会话。通常,应用440会使它所操作的网络设备与设备410、412、420之类的另一个网络设备建立通信,由此发起一个联机会话。在所述联机会话中,网络计算机按照所述应用440的程序特征来进行交互并且交换数据。
当加载应用440并在那些经过适当配置的计算机之间建立一个联机会话时,所述应用能使计算机以多种通信结构来进行交互。在本描述中,有时是在一种线上游戏的情况中描述应用440的,其中应用440包括一个可以由多个用户通过使用客户机计算机410、412来进行访问和运行的计算机游戏。在这种情况下,应用440建立一个联机会话,其中包含了一个有网络计算机参与的游戏。然而应该了解的是,应用440还可以涉及游戏之外的其他那些涉及计算机网络上多台计算机之间交互的情况,例如在线银行或在线旅游计划。
多用户应用440可以通过操作而使某些执行所述应用的客户计算机410、412能依照客户机-服务器结构来进行通信,而其他计算机则是依照端到端的结构来进行通信的。所述应用可以确定何时从一种结构改变到另一种结构。此外还可以将多用户应用440配置成一个授权访问游戏或终端用户程序这类终端用户应用的网络通信管理器,例如游戏门户或程序门户。作为选择,通信管理功能和终端用户程序也可以并入多用户应用440之中。在任何一种上述情况中,多用户应用440都可以确定最适合所述终端用户应用的恰当通信结构(例如客户机-服务器或端到端结构)。举例来说,如果只有数量相对较少的用户进行联机会话,例如有一群固定或为六个的用户参加游戏,则所述应用可以选择端到端的通信结构,而在包含大量用户的时候,例如在包含了数百名玩家的大型联机会话或角色扮演游戏中,所述应用可以选择客户机-服务器通信结构。作为选择,所述应用也可以根据可用带宽来确定恰当的通信结构,这样一来,即使很小的用户群也可以最佳匹配于客户机-服务器结构。如果需要的话,也可以在单独等级上应用可用带宽选择标准,以便将带宽有限的用户限制成客户机-服务器结构中的客户机角色,同时其他用户则以端到端的方式来进行操作。
在应用440执行的时候,它会识别一个会话主站,对于在联机会话中所进行的计算机之间的交互而言,所述会话主站是一台为所述应用执行多种管理和行政功能的网络计算机。所述应用的一个联机会话是结合一个包含用户标识这类信息的数据存储器来使用一个注册或登录进程的。所述登录进程授权进一步参与所述应用的网络环境。优选地,会话主站功能是在客户机计算机410这类运行应用440的客户计算机登录到服务器计算机420上,以便开始一个联机会话的时候分配的。然而,所述应用本身确定了何时和如何进行这种分配的细节,由此可以在不脱离本发明教导的情况下实施多种会话主站分配方案。
处于发起应用的一个联机会话的客户计算机410上的应用操作实例称为主计算机。主计算机上的应用把会话主站功能分配给服务器计算机420或主计算机410之一。当新的客户计算机登录(注册)服务器计算机420,以便参与联机会话的时候,服务器计算机420向新客户告知已被分配的会话主站计算机的身份。
如下文更全面描述的那样,会话主站功能允许在应用440操作时所处的不同网络通信结构之间进行平滑转换。会话主站功能还使应用440在特定网络计算机中集中负责涉及应用的任务,或者在两台或更多网络计算机之间分发这种职责。任务的分配可以在分配会话主站功能的同时由其中一台网络计算机上的应用440的一个实例执行,并且可以将会话主站的任务分配给网络430上的一台或多台计算机,以便提供必要的功能。在这里,分配了会话主站职责的一台或多台计算机称为相应的会话主站功能“所有者”。如果这些计算机一起执行会话主站功能,则需要将有关唯一会话主站的引用理解为应用于一个计算机群。因此,会话主站任务的分配是根据应用开发者的规定并按照应用规定的方式来进行。
如上所述,会话主站提供了操作方面的优势,其中一个优势是在参与联机会话的计算机之间分发某些职责。例如,与应用440关联的某些任务可能具有大型数据处理需要,这有可能耗费一台网络计算机的大量处理能力。在其中一台网络计算机上,应用440的一个实例可以将某些任务分配给会话主站,并且将会话主站所有权分配给最适合所述任务的特定计算机。应用440还可以在若干计算机之间维护多个会话主站,其中为每一台计算机都分配了涉及所述联机会话的某些任务。由此可以在多台计算机之间分发任务,以使单个计算机不会因为负担所有任务而出现超负载的情况。
如下文更详细描述的那样,会话主站功能还通过使用消息过滤职责来提供有效的网络带宽利用。此外,当拥有会话主站功能的网络计算机离开联机会话时,处于剩余网络计算机之一的应用440的一个实例可以将先前会话主站计算机的会话主站职责重新分配给另一台网络计算机,由此能在不中断会话主站所执行操作的情况下在所述联机会话中执行平滑变换。所述操作还能使得应用440将会话主站职责从一台计算机重新分配到另一台计算机,从而切换运行时的通信结构,例如在联机会话中从服务器420切换到客户计算机410。这样一来,在一个联机会话中,应用440将在不同的通信结构中进行动态切换,例如从客户机-服务器的结构切换到端到端的结构,反之亦然。
其中一类会话主站职责涉及特定于应用的功能,所述功能是那些特定类型的应用440所特有的功能。举例来说,如果应用440是一个游戏类型的应用,那么会话主站或会话主站群可以记录诸如游戏计分和在游戏中的停留时间这样的游戏类型数据,并且可以执行游戏功能,例如在游戏结束时终止会话。此外还可以将会话主站分配为记录具体的游戏数据,例如游戏环境中的足球、海洋、树木等对象的状态。这些职责可以集中在单独的会话主站中,也可以在若干个会话主站之间划分。在经典的客户机-服务器结构中,可以在联机会话中将会话主站所有权或会话主站分配给一个专用服务器。然后,如下文更详细描述的那样,处于其中一台网络计算机上的应用440的一个实例可以将会话主站所有权从专用服务器重新分配给客户计算机之一,由此所述结构切换成端到端的结构。
会话主站的另一类职责是消息过滤。在联机会话过程中,应用440可以使网络计算机发出涉及联机会话不同方面的通信消息。所述消息可以发生变化,并且举例来说,所述消息可以涉及到那些描述联机会话状态的消息、用户之间的聊天消息以及更新游戏时间的定时消息。此外,所述消息还可以包括网络计算机发送的更新消息,以便向其他网络计算机告知所述发送计算机仍旧参与所述联机会话。
在某些情况中,会话主站保持那些用于确定是否应将信息发送到某些网络计算机的过滤器。通过对应用440进行配置,可以首先将某些或全部消息发送到会话主站计算机,以便进行过滤分析。优选地,会话主站维护过滤器并且防止在不恰当的情况下发送信息。此外较为优选的是,会话主站维护一个过滤列表,其中会话主站通过查询所述列表来对消息的发送进行过滤。而所述过滤列表则为某些消息类型规定了哪些计算机不应该接收消息。
举例来说,在一个线上游戏的环境中,每一台客户计算机都可以结合所发送的消息来对一个在虚拟世界来回走动的人物负责,其中所述消息包含了涉及虚拟世界中的物品状态的数据。如果所述消息与某个人物认知范围之外的物品有关,则有必要更新与所述人物相关联的网络计算机。在这种环境下,对会话主站来说,较为理想的是通过过滤消息来防止将消息发送到计算机。这样做考虑到了有效的带宽使用,由此只会发送那些需要发送的消息。
主计算机执行的是与那些参与联机会话的计算机有关的管理功能。例如,每当网络计算机参与应用440的一个联机会话时,主计算机都会将一个标识索引编号分配给参与会话的计算机。所述主计算机则维护一个关于标识索引编号及其关联的网络计算机的列表。在发送消息的时候将会用到所述索引编号,此外还将所述索引编号用于维护那些关于会话主站功能的所有权记录。
如上所述,在一个联机会话中有可能存在一个以上的会话主站。分配会话主站的方式可以由所述应用依照应用的操作来加以确定。应用440还可以分配负责发送更新消息的会话主站,以便就涉及参与联机会话的所有网络计算机的状态来更新网络计算机。如下文更全面描述的那样,这种职责要求会话主站在新网络计算机参与联机会话或是当前参与者退出应用440的联机会话的时候通告那些参与其中的网络计算机。
主计算机将上述索引编号分配给每一台计算机,所述主计算机还维护了一个所有参与联机会话的网络计算机的列表。然后,应用440根据分配给计算机的索引编号来记录会话主站所有权。为了记录索引编号以及职责分配,举例来说,应用440可以维护一个采用了包含网络计算机索引列表的表格形式的数据结构,其中所述表格可以是如图5所示的表500。表500包含了一个与每一个参与联机会话的网络计算机相关联的索引编号,并且还包含了一个是否所有网络计算机都拥有会话主站功能的指示。优选地,包括表500在内的索引列表数据结构还规定了用于各个网络计算机的通信协议。图5显示了可以由不同网络计算机拥有的不同会话主站任务(C1,C2,C3)。
除了规定通信协议之外,所述数据结构还为每台网络计算机都规定了与通信协议关联的端口。应用440的每一个实例都能使参与联机会话的相关网络计算机开放多个通信端口,其中每一个端口都与一个特定的通信协议相关联。所述网络计算机使用一个特定端口和一个特定协议来与其他网络计算机进行通信,其中所述端口和协议是在包括图5所示的表500在内的数据结构中规定的。所述端口可以包括网络套接字,借助于所述套接字,应用400的实例可以经由网络来进行通信。优选地,网络计算机彼此之间可以在网络上周期性发送通信消息,由此传递端口/协议信息以及索引列表中包含的其他信息。
如下文中参考图5详细描述的那样,当网络计算机连接到服务器计算机420,以便建立一个联机会话的时候,在所述网络计算机上,应用400的实例可以将会话主站所有权分配给网络计算机之一。就这一点而言,非常优选的是,每一台网络计算机上的应用440的实例都维护一个参与了所述联机会话的所有网络计算机的列表,并且将上述索引编号关联到每一台计算机。然后,应用440根据分配给计算机的索引编号来记录会话主站所有权。
网络计算机可以保持一个以包含了网络计算机索引列表的表格为形式的数据结构,例如图5所示的表格500,其中所述表格包含了一个与每一台参与联机会话的网络计算机相关联的索引编号,此外还包括一个关于计算机是否拥有一个或多个会话主站功能的指示。优选地,这个索引列表数据结构还规定了用于各个网络计算机的通信协议。并且优选地,所有参与联机会话的网络计算机都保留了表格500的索引列表的一个拷贝。应该了解的是,表格500只是示范性的,应用440可以使用多种数据结构格式而以其他方式来记录网络计算机的索引编号、通信结构以及会话主站所有权。
在联机会话中,应用可以改变通信结构和协议。如上所述,确定使用哪一种通信结构可以取决于应用的特性(例如一对一的游戏相对于大规模的角色扮演游戏)或是联机会话参与者的数目,但也可以取决于可用带宽。举例来说,端到端的结构可能最适合数量相对较少的联机会话参与者,而客户机-服务器通信结构则有可能是用于一个在联机会话中包含了数百名用户的应用环境的唯一实用的情况。用于在一种通信结构上选择另一种通信结构的实际判定参数是根据应用的资源需要而发生变化的,并且所述参数会为应用开发者所知。
应用440可以根据不同方案或是方案组合来分配会话主站所有权。如图6所示,在第一方案中,应用440将会话主站600的所有权分配给一台单独的计算机,例如专用服务器计算机420。如应用440规定的那样,分配了会话主站600的所有权的计算机对所有关联于会话主站600的功能负责。在当前范例中,专用服务器计算机420拥有会话主站。因此,相对于会话主站功能而言,各个网络计算机上的应用440将在客户机-服务器的通信结构中操作,其中服务器计算机420将数据发送到涉及会话主站职责的客户计算机410。
应该理解的是,举例来说,倘若显示客户计算机410拥有一个在图6中用虚线显示的会话主站600a,那么任何参与到应用400的联机会话中的计算机都可以拥有会话所有权。此外,在为每个会话主站分配了具体职责并且为不同的网络计算机或同一网络计算机分配了每一个会话主站的情况下,应用440可以维护一个会话主站的若干实例。例如,图6显示了一种存在两个会话主站600和600a的情况,其中为每一个会话主站分配了某些与应用440的联机会话有关的功能。带有会话主站600的客户机410是作为一个综合服务器来操作的。
如图7所示,在另一个方案中,应用400是在若干台计算机之间分发会话主站600的所有权的。在所述实例中,两台客户计算机410都享有会话主站600的所有权。在这种情况下,这两台计算机都可以执行与会话主站相关联的功能,以使图7中的网络计算机处于端到端的结构中。因此,如果其中一台计算机退出联机会话,那么会话自身不会因为会话主站计算机的退出而终止。
会话主站还可以按照应用440所确定的不同模式来进行操作。在称为专用模式的第一种模式中,应用440将会话主站所有权固定分配给某台网络计算机。与会话主站相关联的应用功能由所述计算机维护并且只由所述计算机维护。因此,如果拥有专用会话主站的计算机发生故障或者断电,则不执行与会话主站相关联的任务。举例来说,如果会话主站负责维护联机游戏环境的某个方面,那么,倘若拥有专用会话主站所有权的计算机离开联机会话,则所述环境的这些方面将会终止。
另一种模式称为迁移模式,其中会话主站所有权可以从一台网络计算机迁移到参与联机会话的一台或多台其他网络计算机。例如,会话主站最初可以为服务器计算机420所拥有,这样一来,相对于会话主站的职责而言,应用440的联机会话处于客户机-服务器结构中。在图6中显示了这种情况,其中会话主站600是作为依附于服务器计算机420的实线方框来显示的。一旦出现某些状况,举例来说,如果服务器计算机420将要断电,则应用440可以将会话主站600的所有权迁移到例如客户计算机之一的另一台计算机。由此举例来说,可以在图6所示的经典的客户机-服务器结构中维护会话主站600,然后所述会话主站600在环境许可的时候变为另一种结构。举例来说,如果拥有会话主站600的计算机将要退出会话,那么会话主站600的所有权可以迁移到另一台计算机或在多台计算机之间得到共享。
图8所示的流程图描述了在此处理中发生的操作。所述处理是从运行了应用440的一个实例的客户计算机410的角度来进行描述的。在编号为805的流程图方框所表示的第一操作中,计算机410经由一个计算机网络连接到服务器计算机420。由此所述计算机410建立了应用440的一个联机会话。这台启动计算机则称为主计算机。优选地,主计算机的应用440为其自身分配了一个用于识别目的的索引编号。另一台同样运行应用440并随后连接到服务器计算机420的网络计算机也可以加入应用440的联机会话。
在接下来的操作中,如编号为810的流程图方框所示,会话主站所有权分配给了一个或多个网络计算机。主客户计算机410可以将其自身指定为会话主站,因为它是建立联机会话的计算机。作为选择,也可以将服务器计算机420指定为会话主站。所述应用本身将会确定用以分配会话主站功能的方式,由此可以在不脱离本发明教导的情况下实施各种会话主站分配方案。服务器计算机420和/或客户计算机410保持了一个对分配了会话主站功能的一台或多台计算机加以识别的记录。当其他网络计算机通过与服务器计算机420相连来加入联机会话时,会话主站计算机使用计算机索引编号来把会话主站的身份通告给其他计算机。
在由编号为820流程图方框所表示的下一步操作中,会话主站计算机在联机会话中执行与所述会话主站相关联的功能。所述功能可以包括如上所述的任何职责,其中包含了客户机仲裁、消息过滤以及特定于应用的功能,例如维护一个线上游戏环境的状态。
下一步操作是由编号为830的判定框来表示的,其中应用440判定会话管理器的所有权是否应该改变。换句话说,应用440确定是否应该在参与会话的网络计算机之间进行会话主站所有权方面的迁移。优选地,服务器计算机420上的应用440的实例负责做出判定,然后则通告参与联机会话的其他网络计算机。
会话主站功能所有权方面的改变还有可能在当前拥有会话主站的计算机退出联机会话的情况下出现,例如在计算机关机或是出现故障。会话主站退出联机会话的判定可以是基于任何一台网络计算机是否收到了来自会话主站计算机的通信消息。如果没有在预定数量的时间以内收到通信消息,或者如果会话主站没有在预定数量的时间以内响应通信消息,则将会话主站计算机判定为退出了联机会话。在这种情况下,服务器计算机420将一个通知发送到参与联机会话的计算机。这种情况导致从判定框830中输出“是”。
然后,根据来源于方框830的“是”,系统进程继续执行由编号为840的流程图方框所表示的操作,其中服务器计算机420使用其应用400的实例来将会话主站的所有权(以及关于相关会话主站功能的职责)重新分配给一个不同的网络计算机。这样一来,会话主站所有权及其相关职责将会迁移到另一台网络计算机,由此联机会话将会继续进行,而不会随着先前会话主站计算机的退出而终止。在这里可以将服务器计算机420上的应用440配置成以多种方式来重新分配所有权。举例来说,应用440可以只将会话主站所有权分配给计算机索引列表中的下一台网络计算机。作为选择,也可以对所述应用进行配置,以便根据一个预定的优先级方案来将会话主站所有权分配给一台专用计算机。
重新参考编号为830的判定框,如果不需要进行所有权改变,则其结果是输出“否”。在这种情况下,当前拥有会话主站的网络计算机只按照流程图方框820表示的操作来继续执行其主站所有权功能。这种处理会一直持续到联机会话终止或是所有权出现改变。
如上所述,在联机会话中可以改变通信结构。因此,会话可以始于端到端的网络结构之中,然后变为客户机-服务器结构。用于确定各种结构何时恰当的参数取决于所需要的资源并且会为应用440的开发者所知,但是举例来说,所述参数也可以包括联机会话中的用户数目、应用需求或是特定用户的可用带宽。
图12描述了改变通信结构的应用操作。所述操作是从运行了应用440的一个实例的客户计算机410的角度来进行描述的。在编号为1205的流程图方框所表示的第一操作中,计算机410经由计算机网络连接到服务器计算机420。由此计算机410建立了应用440的一个联机会话。这个启动计算机称为主计算机。如上所述,较为优选的是,主计算机的应用440为其自身分配一个用于标识目的的索引编号。同样运行应用440并随后连接到服务器计算机420的另一台网络计算机可以加入应用440的联机会话并由主计算机为其分配一个索引编号。
在编号为1210的流程图方框表示的下一步操作中将会判定通信结构。所述判定通常是联机会话中的参与者数目的一个函数,但是也可以由涉及操作的应用需求或是可用于所述应用的通信带宽来确定。然后,所述应用将会执行其操作,直到用户终止联机会话并结束所述应用。这个继续执行的操作是由编号为1220的流程图方框表示。
对通信结构改变所进行的检查是由编号为1230的判定框来表示的。这个检查可以在一个周期性的基础上执行,例如在所述应用检查可用带宽的情况下,但也可以根据需要而在联机会话启动时执行。此外,所述检查可以由一个请求或是在联机会话中接收的命令发起。而使用哪种方案以及应用哪些判定参数的选择则是由所述应用的开发人员做出的。
如果不需要对通信结构进行改变,则在判定框1230输出“否”,然后如返回方框1230的箭头所示,当前通信结构中的应用操作将会继续进行。如果要求进行结构方面的改变,则在判定框1230中输出“是”,然后在方框1240实施通信结构方面的改变,并在1220继续所述应用的操作。这个处理将会一直继续,直到联机会话终止或者下一次检查并改变通信结构。用于改变通信结构的方案取决于网络计算机使用的操作系统。即使没有进行更进一步的描述,本领域技术人员也能了解如何实现通信结构方面的改变。
优选地,应用440是使用一个提供了应用440中所用对象库和通信消息定义的软件开发工具包(SDK)来开发的。所述软件开发工具包包括一个应用接口,借助于此应用接口,可以使用SDK开发所述应用并且可以在一个诸如网络系统400这样的网络系统上运行所述应用。应用接口可以存在于诸如服务器420这样的中央网络服务器中,其中那些具有应用440的网络计算机可以登录所述服务器,以便运行所述应用的一个联机会话。通过使用SDK提供的对象和消息类型,可以开发出包含上述特征的应用440。所述SDK优选包括一个对象定义结构,其中提供了应用440所用对象的一个基于客户机的定义。所述对象定义包含了与每一个对象相关联的多个特征,并且这些特征由所述应用使用,以便对在计算机网络上与客户机所进行的交互作用产生影响。
一旦使用SDK开发出应用440,则可以将应用440加载到一台或多台网络计算机并且可以根据图9所示的操作来建立一个联机会话。在编号为910的流程图方框表示的第一操作中,加载所述应用440的网络计算机与一台在存储器中包含了应用接口软件的网络计算机相连。举例来说,图4所示网络系统400的一台或多台客户计算机410、412可以具有加载到其相应存储器中的应用440,并且服务器计算机420可以包括应用接口。在这种情况下,客户计算机410、412在网络430上与服务器计算机420建立通信连接。
在由编号为930的流程图方框表示的下一步操作中,应用440根据应用接口库中可用的对象定义来注册对象。如编号为920的流程图方框所示,应用440还注册了任何那些将要在联机会话中使用的消息过滤器。
在由编号为940的流程图方框所表示的下一步操作中,应用440定义了会话主站并且将会话主站所有权分配给网络计算机之一。在这里可以将会话主站所有权分配给一台计算机,但也可以将其分配给多台计算机。此外,应用440还规定了会话主站所有权是否专用于特定计算机或者所述所有权是否可以使用上文中参考图8所描述的方式而迁移到其他计算机。
在此操作中,应用440将客户机索引分配给每台参与联机会话的网络计算机并且建立了如上所述的索引表。此外还可以对应用440进行配置,以使第一台登录服务器计算机的网络计算机成为会话主站并取得一个值为1或0的索引。然后,后续登录的网络计算机将会取得后续的连续可用索引。如编号为950的流程图方框所示,在建立了会话主站所有权或会话主站之后,应用440的联机会话将被起动。
如上所述,由图4中的框图显示的网络计算机包括计算机网络系统400的节点。图10是图4系统400中的一台计算机的框图,它描述了其中一台计算机所包含的硬件部件。本领域技术人员将会了解,设备410和420可以具有相似的计算机结构或是具有符合这里所述能力的备选结构。
图10显示的是一个示范性的计算机1000,其中举例来说,所述计算机可以包括任何网络计算机。每台计算机1000都是在中央处理器(CPU)1002的控制下操作的,其中所述处理器可以是从位于美国加利福尼亚州圣克拉拉的Intel公司购得的“Pentium”微处理器以及相关的集成电路芯片。计算机用户可以从键盘或计算机鼠标1004输入命令和数据,并且可以在显示器1006上查看输入以及计算机输出。所述显示器通常是一个视频监视器或平板显示器。计算机1000还包括一个直接存取存储设备(DASD)1008,例如硬盘驱动器。存储器1010通常包含易失半导体随机存取存储器(RAM)。较为优选的是,每一台计算机都包含了一个接纳程序产品存储设备1004的程序产品读取器1012,其中程序产品读取器可以从所述程序产品存储设备中读出数据(并且它可以向其随意写入数据)。举例来说,程序产品读取器可以包括磁盘驱动器,程序产品存储设备可以包括可移动存储介质,例如磁软盘、CD-R盘片、CD-RW盘片或DVD盘片。
每一台计算机1000可以在计算机网络1020(例如因特网或是内部网)上经由网络接口1018而与其他计算机进行通信,其中所述网络接口能够经由网络1020与计算机之间的一个连接1022来进行通信。举例来说,网络接口1018通常包含了允许在各种网络上进行通信的网络接口卡(NIC)或调制解调器。
CPU 1002是在计算机1000的存储器1010临时保存的编程步骤的控制下进行操作的。在执行编程步骤时,所述计算机将会执行其功能。编程步骤由此实现了应用440的功能。所述编程步骤可以经由程序产品存储设备1014或是网络连接1022而从DASD 1008接收的。程序产品存储驱动器1012可以接收一个程序产品1014,读取其上记录的编程步骤,并将编程步骤传送到存储器1010中,以便由CPU 1002加以执行。如上所述,程序产品存储设备可以包含记录了计算机可读指令的多个可移动介质中的任何一个,其中包括磁软盘和CD-ROM存储盘片。其它适当的程序产品存储设备可以包括磁带和半导体存储芯片。由此可以在一个程序产品上实现依照本发明的操作所需要的处理步骤。
作为选择,程序步骤可以经由网络1020而被接收到操作存储器1010中。在这种网络方法中,在借助于无需进一步说明即可由本领域技术人员理解的公知方法而在网络连接1022上建立了网络通信之后,计算机会将那些包含程序步骤的数据经由网络接口1018接收到存储器1010中。然后则由CPU 1002来执行所述程序步骤,由此其中包含了一个计算机进程。
应该理解的是,图4描述的网络系统400的所有网络计算机的结构都可以与图10所示的结构相似,因此可以理解,相对图10中的计算机1000所描述的细节也适用于系统400的所有计算机。应该了解的是,只要计算机可以与图4所述的其它计算机进行通信并且可以支持这里描述的功能,那么任何一台网络计算机都可以具有备选结构。
举例来说,参考图11,客户计算机420可以包括一个计算机娱乐系统,例如视频游戏系统1100。图11是一个视频游戏机系统1100的示范性硬件结构的框图。
所述视频游戏系统1100包括一个与主存储器1105相关联的中央处理器(CPU)1100。CPU 1100是在由OS-ROM 1160保存或从游戏程序存储介质传送到主存储器1105的编程步骤的控制下进行操作的。在这里将CPU 1100配置成依照所述编程步骤来处理信息并执行指令。
CPU 1100经由专用总线1125而以通信方式耦合到一个输入/输出处理器(IOP)1120。IOP 1120将CPU 1100耦合到一个由保存操作系统这类程序指令的非易失存储器组成的OS ROM 1160。优选地,所述指令是在启动主机1100时经由IOP 1120传送到CPU的。
CPU 1100经由专用总线1115而以通信方式耦合到一个图形处理单元(GPU)1110。GPU 1110是一个绘图处理器,所述处理器经过配置来执行绘图处理并且根据从CPU 1100接收的指令来制定图像。举例来说,GPU 1110可以基于从CPU 1100产生并从CPU 1100接收的显示列表来渲染一个图形图像。所述GPU可以包括一个用于保存图形数据的缓存器。此外GPU 1110还将图像输出到音频-视频输出设备。
IOP 1120根据IOP存储器1130中保存的指令来对CPU 1100与多个外部设备部件之间的数据交换进行控制。所述外部设备部件可以包括一个或多个输入控制器1122,一个存储卡1140,一个USB 1145,以及一个IEEE1394串行总线1150。另外,总线1155以通信方式耦合到IOP 1120。总线1155则连接到若干个附加部件,其中包括OSROM 1160,声音处理器单元(SPU)1165,光盘控制单元1175以及硬盘驱动器(HDD)1180。
在这里将SPU 1165配置成根据从CPU 1100和IOP 1120接收的命令来产生声音,例如音乐、音效和语音。SPU 1165可以包括一个保存波形数据的声音缓存器。此外SPU 1165还产生声音信号并将所述信号发送到扬声器。
盘控制单元1175则配置为控制一个程序读取器,其中举例来说,所述读取器可以包括一个收容磁软盘、光学CD-ROM盘片、CD-R盘片、CD-RW盘片以及DVD盘片等可移动存储介质的光盘驱动器。
存储卡1140可以包括一个存储介质,其中CPU 1100可以向所述存储介质写入并保存数据。优选地,存储卡1140可以插入IOP 1120或是从中移除。用户可以使用存储卡1140来储存或保存数据。此外,较为优选的是,视频游戏系统1100具有至少一个可以写入或保存数据的硬盘驱动器(HDD)1180。
优选地,诸如IEEE1394串行总线1150或通用串行总线(USB)1145接口这样的数据I/O接口以通信方式耦合到IOP 1120,由此允许将数据传送到视频游戏系统1100或是从中将数据传送到例如图4的网络430。
因此,以上描述了一种用于为多用户网络应用执行动态结构切换方案的系统和方法。所述方案利用了这样一个事实,那就是与客户机-服务器网络通信相比,网络计算机之间的端到端通信关系提供了速度更快的通信的优点,同时也认识到某些例如大规模游戏这样的应用在端到端的关系中需要用到一个不能使端到端的结构切实可行的带宽。例如,在每个游戏中只有不到三至六个竞争对手的体育游戏可能适合端到端模式,但是包含数百名玩家的角色扮演游戏或动作游戏则不适合端到端模式,并且所述游戏必须在客户机-服务器模式中运行。在用户登录到一台应用服务器,以便进行所述应用的一个联机会话时,本发明的结构切换特性允许在端到端架构与客户机-服务器架构之间进行动态改变。
举例来说,参与某个游戏的游戏玩家可以全都与一个用于游戏管理的游戏服务器进行通信,并且与其他游戏玩家进行通信,以便共享游戏数据和玩家数据。在游戏中,玩家可以在端到端通信与客户机-服务器通信之间进行切换,以便与其他游戏玩家传递信息。这样一来,如上所述,游戏结构可以在由其中一个游戏客户机执行游戏服务器功能的综合服务器与每一个游戏玩家都保存游戏状态信息并与其他游戏玩家进行通信的端到端结构之间进行切换。所述系统还可以在端到端、综合服务器以及游戏服务器结构之间进行切换。这就允许在网络带宽和游戏应用适合的时候使用更快的端到端通信,并且在网络状况需要的时候使用客户机-服务器通信。
以上已经依照当前优选实施例而对本发明进行了描述,由此表述了对于本发明的理解。然而还存在着多种这里并未具体描述但却适合本发明的系统和应用的结构。因此,本发明不应视为局限于这里所述的特定实施例,与此相反,应该理解的是,相对于多用户应用而言,本发明通常具有很广阔的实用性。因此,落入权利要求的所有修改、变化或等价方案及实施方式都视为是在本发明的范围以内。