背景技术
计算机化电子系统越来越普遍,其部分原因是这种计算机化系统自动化了许多以前人们必须人工执行的任务。因此,计算机化系统在人们执行任务的能力上增加了一定的效率。
为计算机化系统产生计算机化指令(在此也称为“软件”或“程序”)的过程是有些棘手的。一般而言,软件开发者首先必须设想程序应执行的期望功能或结果,然后把相应的文本格式指令输入到通常为编程源程序形式的电子文本文件中。在使用诸如解释编程语言(例如Javascript、Perl等等)的有些情形中,计算机化系统直接解释被输入的文本格式指令,并执行期望功能。在使用诸如编译编程语言(例如C#-发音为“C sharp”、C++等等)的其它情形中,文本格式指令首先被编译成计算机化系统可执行的对象或机器码。
对于更复杂的程序,开发者有时会以众多互操作“组件”来实现程序功能性。一般而言,组件(或程序组件)是计算机可执行指令组,很像是较大的应用程序,尽管它们往往是比较小且不那么复杂,因为它们通常被调整来提供一个或少数功能。因为给定组件有时能像独立程序一样运行并且还能与其它组件通信,更为复杂的系统有时也能可互换地被称为“组件”。此外,组件可被泛指为“请求组件”或“目标组件”,尽管这种指定可能是随意的,取决于哪个组件或程序在访问其它组件或程序。
在任何情况中,程序设计者可设计计算机化系统上的一个组件,用来请求对任意数量计算机化系统的其它组件进行访问。目标组件可包括提供诸如用户姓名和年龄的基本信息、或提供诸如用户使用级别或给定应用程序精致度的更复杂信息的功能。软件组件还能提供系统功能,诸如执行指令来打开文件、指示通信协议从而使一个组件或程序可与其它组件交互等等。当然,可以理解:大型操作系统能包括可被配置为与多个不同程序一起运行的许多组件,反之亦然。
一般,请求组件具有对目标组件的引用(reference)。可能是请求组件指向目标组件的特定版本(严格引用)。指向目标组件的特殊定本可能在例如当请求组件的开发者对目标组件提前有所认知、并希望使请求组件明确依赖于目标组件特定版本时发生。例如,请求“组件1”可被配置成引用“组件3”的目标“版本1.1”,以使“组件1”明确依赖于“组件3”的“版本1.1”。另一方面,请求组件指向当请求组件被开发时可能存在或甚至还不存在的目标组件(松散引用)。因而,开发者引用目标组件而对其并没有提前认知。因此,请求组件可在运行时发现目标组件版本的存在。例如,在运行时“组件1”可能发现“组件3”的“版本2.1”。
不幸的是,不管请求组件是严格地还是松散地指向目标组件,在总体软件设计过程中实现程序组件都存在着不少缺点。例如,当用户更新被一个或多个请求组件引用的目标程序时,如果目标组件的更新版本变得与其不相容时,这一个或多个请求组件将无法运行。该问题会发生在当请求组件开发者不能预期相关目标组件开发者可能在未来所实现的改变的数量和类型时。相比之下,禁止目标组件更新或者禁止组件更新覆盖目标组件前版本的系统政策,会导致系统很快过时、或变得无效而臃肿。
有些克服这些问题的方法包括系统管理员尝试着在同一系统内管理对目标组件不同版本的严格和松散引用。在这种场景中,当给定目标组件安装到计算机系统中时或当其首次运行时,计算机化系统标识其版本号。然后,计算机化系统存储被标识目标组件信息以及也被安装于系统中的目标组件任意其它版本的信息。当计算机化系统请求对目标组件的访问时,计算机化系统则把请求组件按需匹配到目标组件的被请求版本。
不幸地,该类系统还是存在着不少缺点。例如,当目标组件被安装到系统上时,其仅有的可用信息可能是目标组件的版本。然而,系统不能标识出是否目标组件的特定版本是目标组件先前版本的更新。系统也不能标识出是否开发者在将来的某一时间点上打算更新目标组件的特定版本,因为该信息是未知的。该信息以及其它必要操作参数必须由系统管理员提供。
例如,系统管理员必须基于给定目标组件可用的少许信息,或管理员所预期的来尝试配置系统,并在给定目标组件安装或首次运行时把该有关目标组件的信息提供给系统。特别地,系统管理员必须常常提供不同目标组件的访问规则,这些访问规则指示是否访问其它目标组件特定版本时对一些请求组件有所要求,以及是否另外的其它请求组件被允许访问其它目标组件的更新版本,等等。系统管理员还必须在认识到请求和目标组件版本间的冲突时向系统提供任何其它信息。因而,当请求组件请求给定目标组件时,系统通常基于被请求目标的版本、存储在系统上的任何目标组件版本、和系统管理员提供的任何其它信息来授权对目标组件的访问。
然而,可以理解,这种把对目标组件的严格和松散引用相混合的系统对系统管理员而言是过分复杂了。由于当第三方开发者在编写给定目标组件时系统管理员对第三方开发者的思路并非总是知情,情况就更是这样了。此外,系统管理员不可能总是预见到是否某些目标组件被设计为与请求组件其它版本或类型相兼容。对大型系统而言更是这样,在大系统中,大量请求组件被配置成以任何给定方式访问各种各样的目标组件。
因此,用允许请求和目标组件的现在的和未来的版本按配置在计算机化系统中合作的系统、方法、和计算机程序产品可实现本领域中的一个优点。特别地,用自动地允许这种组件合作、使得只需系统管理员的很少输入甚至不需其输入程序和组件即能继续有效工作的系统和方法可实现本领域中的一个优点。
具体实施方式
本发明涉及使得程序开发者轻松适应组件、模块、和操作系统中的变化,而不削弱程序功能的系统、方法、和计算机程序产品。特别地,揭示了允许通过静态或动态引用相互访问的程序和组件在操作系统中可相容地共存的系统。本发明的诸实施例可包括具有各种计算机硬件的专用或通用计算机,在下面进行更详细的讨论。
本发明范围中的实施方式还包括用于承载或具有存储于其上的计算机可执行指令或数据结构的计算机可读介质。这种计算机可读介质可以是能被通用或专用计算机访问的任意可用介质。作为示例,且非限制,这种计算机可读介质可包括能以计算机可执行指令或数据结构的形式被用来执行或存储所需程序编码、及能被通用或专用计算机访问的RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁性存储设备、或任意其它介质。
当信息通过网络或另一通信连接(硬接线、无线、或硬接线或无线的组合)被传送或提供给计算机,计算机适当地将该连接视为计算机可读介质。因此,任何这种连接被适当地称为计算机可读介质。以上组合也应被包括在计算机可读介质的范围内。计算机可执行指令包括例如使通用计算机、专用计算机、或专用处理设备执行一定功能或功能组的指令和数据。
图1示出了实践本发明实现的示例性计算机架构,其中确定模块100从请求组件105接收一个或多个访问诸如组件120、125和130的另一组件或程序的请求。在本说明书和权利要求中,“确定模块”100能包括具有可执行指令的任何类型的模块,其被配置以例如标识指向目标组件的引用(包括组件名称和原始指定版本)、以及选定将用来满足该请求的适当目标组件。在部分情形中,这可包括判定没有这种目标组件可用,使得确定模块100会被配置为返回错误。如此后将要详细描述的,确定模块100还能被配置用来标识其它信息,诸如在计算机系统、过程或子过程中有哪些其它组件已经可用。
另外,在本说明书和权利要求中,“组件”将被理解为包括能在计算机化系统上运行的任意形式的可执行指令,诸如已解释文本格式文件、已被编译成机器可读指令的文件。因此,术语“组件”既能包括提供许许多多各种功能的较大应用程序和系统,也能包括向其它组件或程序提供特定功能性的的较小程序和/或系统组件。此外,尽管在本说明书中有时在“应用”、“应用程序”、“程序”和组件之间做了区分,但这些区分通常仅仅是为了澄清一组可执行指令是正在发出或是接收访问另一组件的请求,因为其每一个都可适当地被称为组件。因而,术语“请求组件”和“目标组件”能包括任意前述可执行指令,此后将更详细地描述。
本发明的诸实施例能访问被分类为“平台”(platform)或“库”(library)组件的组件。“平台”组件是可被计算机化系统中的多个其它组件或程序访问的组件。平台组件通常仅以最新形式或升级后的形式被访问,使得请求组件仅可一般地请求目标组件或请求目标组件的最小版本,而不是请求目标组件的特定版本。因而,确定模块可例如被配置为提供平台组件版本而不是最新版本。理论上,当接收到升级时平台组件可被组件升级覆盖掉,尽管有在实践中可以没这么做的理由。平台组件有时也可被称为“二元相容”组件。相比之下,仅当库组件的相同版本被精确地引用时,库组件才能被另一组件或程序访问。
如图1所示,确定模块100可从请求组件105接收访问诸如组件120、125和130的目标组件的请求或声明。在本说明书和权利要求中,术语“目标组件”指的是请求组件寻求对其访问的组件。然而,可以理解,组件是目标组件或请求组件主要是一个看问题的角度,取决于哪个组件请求对其它组件的访问。这样,在本说明书和权利要求中适于目标组件的讨论同样适于请求组件,反之亦然。
在任何情形中,请求组件105可通过确定模块110启动组件访问请求110,其中该请求指示请求模块105被配置为访问目标组件120、125和130的给定版本。在一些实现中,请求110是当请求组件105被首次安装到给定计算机化系统(未示出)上时在请求组件105的源程序中发现的引用。可选地,请求110可由请求组件105在运行时当请求对诸如组件120、125和130的目标组件特定版本的访问时做出。
在本说明书和权利要求中,“版本化政策”包括可从目标组件(例如120、125、130)传送到确定模块100的给定属性组中的任意属性。版本化政策131、132或133指定是否目标组件120、125、130可分别代替有较低版本号的给定目标组件。版本化政策可包括打算用于确定模块100中的附加信息,以确定是否目标组件可在给定配置中使用。因而,当请求的是版本1.1时,版本化政策130可指定目标组件125(版本1.2)可以使用。在部分实施例中,版本化政策可在目标组件中预定位置找到。在其它实施例中,当组件被安装到系统中或对给定组件作访问的首次请求时,版本化政策能被传送到确定模块100。
因此,通过请求目标组件的特定版本,请求组件可请求对目标组件的访问,例如请求110对“组件1”“版本1.1”的请求。如果请求组件105请求目标组件的特定版本或被配置成用其工作,取决于目标组件中出现的版本化政策131、132、133,确定模块100能向请求模块105提供对组件特定版本的访问。如图1所示,例如,请求组件105通过发送请求110请求“组件1”的“版本1”。因而,确定模块100向请求组件105授予对“组件1”的“版本1.1”的访问,即使“组件1”的更近的版本例如“版本1.2”125在系统中存在。
相比之下,在部分实施例中,对组件一个版本的请求会导致对组件另一版本(例如更新过的或更近的版本)的访问。例如,请求100可以是访问“组件1”的“版本1”的请求。然而,版本化政策131可指示“版本1.1”是平台组件(因此,“组件1”的最新版本被作为对请求的响应而提供)。此外,在部分实现中,系统上仍然有给定平台组件的多个版本。
这样,请求组件还可在请求中包括指示请求组件105能接受的平台目标组件的最低可能版本的信息。例如,可能请求组件105请求“组件1”的“版本1.4”,而“组件1”的更低版本不会响应该请求而被返回。因此,即使“版本1.1”和“版本1.2”也是可访问的,确定模块100可向请求组件105提供对“组件1”的“版本3”的访问。
当请求组件的所有可能版本的版本号比指定请求版本低时,确定模块100可向请求组件返回适当响应(例如错误信息)。例如,当确定模块100无法访问“组件1”的“版本3”时,响应于对“组件1”的“1.4或以上版本”的请求,确定模块100会向请求组件105发送错误信息。
版本号可能包括两部分:版本和维修(a version and a servicing)。具有指示更新维修的版本号的组件被允许用来替换具有指示较旧维修的版本号的组件。利用维修值来推动组件替换对实现较小改变是特别有利的:降低了因改正与库组件或平台组件相关的程序缺陷或安全问题而导致与其它组件不相兼容的可能性。即,维修值有助于给组件版本“打补丁(patching)”。例如,如果目标组件120被标识为库组件(使得目标组件的版本1.1不会被替换),开发者仍能通过更新(例如,递增)组件版本号中的维修值来更新目标组件120。因此,更新后的目标组件120基本上会是与“版本1.1”不同的维修。
图2A示出了接收现有组件较新版本的示例计算机架构。即,确定模块100可接收对已经驻留于相应计算机化系统的目标组件的升级。例如,确定模块100从与网络240相连的网络服务提供者(未示出)处接收组件215和210。作为在相应计算机化系统(或网络服务提供者)上执行安装程序的结果,确定模块100能接收组件215和210。
组件210和215如上所述包括版本化政策信息,诸如升级的组件210是“组件2”的“版本3”升级,且该组件是平台组件。组件215也具有版本化政策形式的信息,即组件215是库组件,或者组件215以其它方式配置,使得请求组件可访问组件215表示的特定版本。
响应于接收到组件210和215,确定模块100确定是否保留每个接收到的升级组件的先前版本(可称为“并行”(side-by-side)更新)或替换每个接收到的升级组件的先前版本(可称为“就地”(in-place)更新)。例如,如图2A所示的组件220和235分别是库组件和平台组件。更具体地,响应于接收到组件215,确定模块100可标识其它程序或组件可被特别配置为访问“组件1”的“版本1”,因为“组件1”是一个库组件。因此,确定模块100能确定组件215和组件220都要被保留。
更具体地,响应于接收组件210,确定模块100可标识请求程序和组件将访问组件2的最新版本,因为“组件2”是一个平台组件。因此,确定模块100能确定组件235要被组件210替换。
图2B所示是在确定模块已确定要保留的组件版本之后的图2A的示例计算机架构。如图2B所示,组件1的“版本1”(组件220)和“版本2”(组件215)都被保留在系统中(并行更新)。同样如图2B所示,仅有“组件2”(组件210)的“版本3”被保留在系统中(就地更新)。
图3所示是根据本发明实现在不同处理级别将组件范围分层的示例性计算机架构。分层是以应用到目标组件的组件范围为基础的。作为示例而非限制,图3指示了范围的三个级别,即“机器”级330、“过程”级340及“子过程”级350。然而,在阅读本说明书和权利要求书之后可以理解,可按需有更多或较少级别。特别地,本发明的诸方面允许目标组件提供一种版本化政策,其要求在每一个给定级别上仅有目标组件的一个版本可用(即在整个机器上仅有一个版本或在给定过程中仅有一个版本或在给定子过程中仅有一个版本)。
例如,关联于给定目标组件300的版本化政策可包括一组组件范围。再简要地回顾图1,组件范围可指示请求组件105必须访问给定过程级别上目标组件300。如图3所示,例如“组件1”的“版本1”300被标识作机器级访问。由于目标组件300被配置作机器级访问,任何安装在系统中请求访问目标组件300的请求组件必须使用“组件1”的“版本1”。与其它版本化政策属性一样,该过程级别的限制可在组件在给定系统中安装之前由目标组件的开发者说明。
组件范围还能指示目标组件300、310、315、320和325的更大或较小范围。例如,在给定组件310中标识的“版本化政策”指示目标组件310的给定版本仅在某些过程342、345,或子过程352、355中需要。如图3所示,例如,任何请求访问组件310给定版本的请求组件105可在过程342中这样做,而不需要其它(系统中的)请求组件在其它过程315中使用该相同目标组件。同样,组件310可在过程342中使用,而组件315可在过程345中使用。此外,当过程A342还未选定特定版本,则依赖于过程340的子过程350可使用组件310的不同版本,诸如组件320和325。因此这种对不同组件的颗粒式访问(granular access)级别可在给定组件开发时被指明,而不是由系统管理员在给定组件在系统上安装时指明。确定模块100能组合每个目标或请求组件的任意标识的组件范围,以向请求组件提供适当的目标组件访问。
因此,目标组件适当版本的标识可基于其它诸如组件的政策。因此确定模块在适当时可基于任意标识政策,诸如指定目标组件的版本化政策和组件范围以及任意其它由系统管理员所提供的政策,来标识目标组件的适当版本。
本发明还可按照包括功能步骤和/或非功能动作的方法进行描述。图4、5A和5B示出允许计算机化系统中其它程序或组件进行组件访问的示例性流程图。图4、5A和5B的方法将就前面图中所示的程序模块进行讨论。
图4所示是根据本发明的实现用于提供组件访问的方法的示例流程图。图4的方法包括接收对目标组件版本的请求的动作400。动作400包括接收对访问目标组件特定版本的请求,该请求从请求组件接收。例如,请求组件105可请求通过确定模块100对诸如组件120、125和130的目标组件进行访问。该请求也可能包括目标组件版本的版本化政策。
该方法还包括提供适当目标组件的面向功能结果的步骤440。步骤440可包括任意数量的实现本发明的相应动作。然而,如图4所示,步骤440包括标识版本化政策的动作410。动作410包括标识目标组件特定版本的版本化政策。如果版本化政策被包括在请求中,则确定模块100可标识这种被包括的版本化政策。可选地,确定模块100可指向目标组件的一个或多个版本,并标识存储在目标组件的这一个或多个版本中的版本化政策。例如,确定模块100标识:组件的多个版本在系统上存在,诸如同一“组件1”的“版本1”120和“版本2”125,每个版本都分别有版本化政策131、132和133。软件开发者可在目标组件120、125和130中包括版本化政策,从而使确定模块100通过编译、安装和/或运行开发的程序或组件来标识版本化政策。
步骤440还包括提供目标组件的适当版本的动作430。动作430包括基于指定目标组件的版本化政策来标识目标组件的适当版本。例如,确定模块100可向请求组件105提供诸如组件120的被请求目标组件(库组件)的特定版本。可选地,确定模块100可向请求组件105提供诸如组件130的组件(平台组件)的更近版本。
图5A所示是根据本发明的实现用于管理组件升级的方法的示例流程图。图5A的方法可这样实现,使得访问目标组件的请求组件在目标组件被升级后继续有效运行。如图所示,图5A中的方法包括接收组件升级的动作500。动作500还包括标识目标组件被请求组件所访问。例如,仍参阅图1,确定模块100可连接于或包含登记表或数据库,其在请求组件105安装后标识出所安装的程序或组件或组件105被配置为访问诸如“组件1”的“版本1”120的目标组件特定版本。该确定模块100可基于包含在所安装程序中以及包含在该程序被配置要来访问的任意组件中的任意版本化政策来获取该信息。
图5A中的方法包括标识版本化政策的动作510。动作510包括标识目标组件先前版本和目标组件的升级版本的版本化政策。例如,确定模块100标识任意目标组件120、125和130中的版本化政策,其如前所述能指示目标组件120、125和130的版本,并能指示目标组件被设为平台组件还是库组件。
图5A中的方法包括至少部分地基于版本化政策把组件升级添加到系统中的动作520。动作520包括基于所标识的版本化政策删除目标组件先前版本和/或添加目标组件的升级版本。例如,如果组件的特定先前版本220需要被另一程序或组件访问,诸如如果组件为库组件,确定模块100将不覆盖先前版本220。确定模块100将简单地添加组件的新版本215,使得请求该组件新版本215的程序或组件可访问它。类似地,要求该组件先前版本220的程序或组件还可访问该版本,这就保持了请求程序或组件的完整性。相比之下,如果没有程序或组件被标识为要求给定组件(平台组件)的特定版本,则确定组件100可简单地用组件的新近版本210覆盖先前版本235。
图5B所示是根据本发明的实现用于提供在一个或多个过程级别上对组件的访问的方法的示例流程图。图5B的方法可实现用来组织一个或多个目标组件,从而限制对一个或多个目标组件的访问。图5B中所示方法包括标识版本化政策的动作550。动作550包括在目标组件中标识版本化政策。例如,确定模块100可从请求组件接收组件访问请求,且可从现有目标组件220、225等等的已接收升级215、210中标识版本化政策。如前所述,版本化政策可帮助系统标识目标组件的版本号,以及是否目标组件220、225和230被设为库组件或平台组件。
在图5B中的方法包括标识与组件相关联的组件范围的动作560。动作560包括标识与目标组件相关联的组件范围,其中该组件范围标识与可配置成对目标组件进行访问请求组件相关联的属性。例如,目标组件或请求程序或组件可关联到指示目标组件版本可被机器层、子过程层等等之一上访问的特定组件范围。然而,如在此所述,可以理解取决于开发者的优选,有组件的访问可被限制于其中的各种级别。
图5B中的方法包括基于组件范围和版本化政策而允许目标组件访问的动作570。动作570包括基于关联于请求组件和被标识版本化政策的访问属性,允许一个或多个请求组件的至少一个访问目标组件。例如,如果一个或多个程序或组件300被指示适于全机器范围的过程330,则仅有组件300的那个版本将对任意给定过程级别的任意给定请求组件可用。相比之下,如果目标组件被标识为过程级访问,则确定模块100允许其它请求模块按需访问给定相应过程或子过程的相同目标组件的不同版本。
图6及以下讨论旨在提供本发明可在其中实现的适当计算环境的简要、一般描述。尽管未作要求,本发明可以计算机可执行指令的一般上下文进行说明,诸如由计算机执行的程序模块。通常,程序模块包括执行具体任务或实现具体抽象数据结构的例程、程序、对象、组件、数据结构等等。计算机可执行指令、相关联数据架构和程序模块代表执行在此揭示的方法步骤的程序编码。这种可执行指令或相关联数据架构的特定序列代表实现这些步骤中所述功能的相应动作的示例。
本领域技术人员将理解,本发明可在具有多种计算机系统配置的网络计算环境中实践,包括个人计算机、手持式设备、多处理器系统、基于微处理器或可编程消费电器、网络PC、迷你计算机、大型计算机等等。本发明还可在分布式计算环境中实现,其中本地和远程处理设备执行任务并通过通信网络链接(硬接线链接、无线链接、或硬接线或无线链接的组合)。在分布式计算环境中,程序模块可置于本地和远程存储器存储设备中。
参照图6,实现本发明的示例性系统具有通用计算机620形式的通用计算设备,包括处理单元621、系统存储器622以及把包括系统存储器在内的各种系统组件耦合到处理单元621的系统总线623。系统总线623可能是若干总线结构类型中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用多种总线架构的任一种的本地总线。系统存储器包括只读存储器(ROM)624和随机存取存储器(RAM)625。包含有助于如起动时在计算机620的元件间传送信息的基本例程的基本输入/输出系统(BIOS)626通常存储在ROM 624中。
计算机620还包括读取和写入磁性硬盘639的硬盘驱动器627、读取或写入可移动磁盘629的磁盘驱动器628、和读取或写入诸如CD ROM或其它光学介质等可移动光盘631的光盘驱动器630。硬盘驱动器627、磁盘驱动器628、光盘驱动器630分别通过硬盘驱动器接口632、磁盘驱动器接口633、光盘驱动器接口634连接至系统总线623。诸驱动器及其相应的计算机可读介质为个人计算机620提供计算机可执行指令、数据结构、程序模块和其它数据的非易失储存。尽管所述示例性环境采用了磁性硬盘639、可移动磁盘629和可移动光盘631,但也可使用其它类型的能够存储数据的计算机可读介质,如磁带、闪存卡、数字式视频盘、Bernoulli盘、RAM、ROM等等。
包括一个或多个程序模块的程序编码,包括操作系统635、一个或多个应用程序636、其它程序模块637和程序数据638,可以存储在硬盘639、磁盘629、光盘631、ROM6 24或RAM 625中。用户可通过输入装置如键盘640和定位装置642或诸如话筒、游戏杆、游戏垫、卫星接收器、扫描仪或等等的其它输入装置(未示出)向个人计算机620输入指令和信息。这些和其它输入装置通常通过与系统总线623耦合的串行端口接口646连接到处理单元621。可选地,输入装置也可通过其它接口相连,如并行端口、游戏端口或通用串行总线(USB)。监视器647或其它类型显示装置也通过接口,如视频适配器648和系统总线623相连。除了监视器,个人计算机通常包括其它外围输出装置(未示出),如扬声器和打印机。
个人计算机620可以在使用与一台或多台远程计算机,诸如远程计算机649a和649b的逻辑连接的网络化环境中运行。每台远程计算机649a和649b可以是另一台个人计算机、服务器、路由器、网络PC、同等装置或其它普通网络节点,而且通常包括上述与个人计算机620相关的许多或全部部件,尽管在图6中仅显示了存储器存储装置650a和650b及其相关联应用程序636a和636b。图6中所描绘的逻辑连接包括在此显示作为示例且非限制的局域网(LAN)651和广域网(WAN)652。这样的网络化环境在办公室或企业范围计算机网络、企业内部互联网和因特网上是常见的。
当用于LAN网络环境中时,个人计算机620通过网络接口或适配器653与LAN 651连接。当用于WAN网络环境中时,个人计算机620可包括调制解调器654或其它用于在广域网652,如因特网中建立通讯的装置。可以是内置式或外置式的调制解调器654,与系统总线623通过串行端口接口646连接。在网络环境中,所述与个人计算机620相关的程序模块或其一部分,可以存储在远程存储器存储装置中。可以理解,所示网络连接是示例性的,也可以使用其它用于在广域网652上建立通信的方法。
本发明可包含其它特定形式,而不背离其精神或基本特征。所述诸实施例在所有方面中都被视为仅是说明性的,而非限制性。因此,本方面的范围由所附权利要求书而不是由前面的说明书指示。所有在权利要求书等同体含义和界限内的变化都可被包括在其范围内。