协议无关的客户端高速缓存系统和方法

文档序号:7590715阅读:183来源:国知局

专利名称::协议无关的客户端高速缓存系统和方法
技术领域
:本发明通常涉及计算机网络,尤其是网络环境中的数据存储。
背景技术
:网络服务器使用各种机构存储和提供对客户数据的访问,这些机构包括通常基于重定向器概念的机构,其中应用程序的文件相关请求被重定向至一适当的服务器。服务器接收每个请求,并执行所请求的文件操作,即,只要没有错误、访问权限违例或其它问题发生。服务器然后返回成功的状态连同任意相应的数据,诸如对于创建/打开请求的文件句柄、或对于读取请求的文件数据,它们由应用程序响应其请求时接收。因为计算机用户不是总连接在他们的网络文件服务器或其它服务器上,所以已开发了各种客户端高速缓存机构,当文件的网络版本不可用时,诸如因网络停用或故意断开连接,允许对本地文件拷贝的离线访问。一种这样的高速缓存机构称为公文包,其中用户通过到或从公文包拖拉文件来管理本地文件高速缓冲存储器,基本上手工决定高速缓存什么文件、什么时候高速缓存、以及解决任何合并(互相冲突的文件版本)问题。正如能容易地意识到的那样,公文包机构要求相当大量的用户交互,使得它对于用户相对不很方便。而且,公文包机构有其自己的、独立于文件系统名字空间的名字空间,例如,文件名可存在于公文包名字空间和文件系统名字空间,或者只存在于一个而不存在于另一个中。应用程序不直接或透明地受益于公文包机构,因为公文包是共享程序,而且不是应用程序赖以执行文件相关操作的操作系统和/或文件系统的一部分。在客户端高速缓存方面最新的改进被描述于美国专利申请序列号No.09/134,720,它一般是指向文件的持久性客户端高速缓存的。有了这一改进,网络客户能够使用同样的文件名并以与客户连接至网络时同样的名字空间访问文件的本地高速缓存的拷贝。提供自动高速缓存,(尽管手工配置仍有可能),因而减少了很多用户交互的需求。还有,在这一改进中,更多的客户端高速缓存技术成为CIFS(CommonInternetFileSystem)(公共互联网文件系统)重定向器的一部分,它使用CIFS远程文件访问协议,这是对众所周知的SMB(服务器消息块)协议公开的扩展。由于在重定向器中处理高速缓存,应用程序透明地得益于高速缓存。例如,当用户不连接在网络上时,所请求的文件操作可自动重定向到高速缓存的文件拷贝而不是服务器。尽管这种客户端高速缓存提供了许多好处,基本上通过在不连接网络或网络不通时提供所需文件的访问得到的,但当前客户端高速缓存机构还是有很多缺点。一个这样的缺点就是现有的高速缓存技术紧密结合CIFS重定向器。透明的客户端高速缓存因而不可用于具有其它协议的其它服务器类型,诸如基于WebDAV(或简单DAV,分布式创作与版本管理)和基于NFS(网络文件系统)的服务器/协议。为每个重定向器添加类似的高速缓存技术都要求各种重定向器组件的修改,如果不切实际,特别是对于第三方重定向器驱动器,这就不是所希望的。总之,所需要的是一种方法和系统,它们就客户端文件高速缓存而论是协议无关的,因而为用户提供跨服务器类型统一的离线技巧(experience)。该方法和系统应该对用户和现有应用透明,并克服相关于当前客户端高速缓存的其它缺点。
发明内容简言之,本发明提供自动而透明地处理网络文件数据的客户端高速缓存的系统和方法,它与任何远程文件处理协议无关。协议无关的客户端高速缓存机是作为处理指向网络的文件相关请求的一种服务插入的,并且尝试通过客户端高速缓存持久性存储器来满足该请求。为此,在一种结构中,当在线时,以代理提供器形式将客户端高速缓存机构插入到网络重定向器组件和缓冲服务之间的通信流中,重定向器调用缓冲服务以确定文件相关请求(例如,读取或写入)能否通过缓冲服务的内存储缓冲器执行。通常,在这种结构中,客户端高速缓存机构作为过滤堆栈中的过滤驱动器提供的,在某种意义上,使得客户端高速缓存机看来是对于缓冲服务的重定向器,又好象是对于重定向器的缓冲服务。完成这个将客户端高速缓存机构插入到通信流中,部分地是在在文件创建/打开请求结束时通过覆写重定向器设备对象数据(存在于用于文件的数据结构中),缓冲服务使用该数据来返回到调用提供器,因此缓冲服务改为调用客户端高速缓存机。为使客户端高速缓存机构能够处理网络文件相关的输入/输出(I/O)请求,客户端高速缓存机构用具有接收网络文件相关的I/O请求的系统组件注册为代理提供器,它在一种实现中称为多重UNC(通用命名约定)提供器或MUP。MUP在将任何文件相关请求提供给任何其它代理提供器或任何重定向器前,调用客户端高速缓存机构的预处理处理器。MUP还在将任何文件相关请求提供给任何代理提供器或任何重定向器之后,调用客户端高速缓存机构的后处理处理器。如此,对于文件创建,客户端高速缓存机构能生成和配置所需数据结构以处理进一步的请求。例如,对于文件创建(或打开),I/O管理器创建文件对象、分析名字,并当名字表示文件是远程对象时将请求传送到MUP。在发送创建请求到另一个代理提供器或任何重定向器之前,MUP在预处理操作中发送请求到客户端高速缓存机构(代理提供器)。客户端高速缓存机构预处理处理器创建关联于文件对象的数据结构,包括关于逻辑名字空间中文件拷贝的逻辑连接结构、以及关联于文件对象的基于相关文件的数据结构,它们如果在线可在客户端高速缓存机构的结构和重定向器的结构之间共享。在已知离线时,(例如从前一个创建请求得知),客户端高速缓存预处理处理器将完成该请求。当在线时或如果不知道连接状态时,客户端高速缓存机构返回“moreprocessingrequired”(要求更多处理)状态给MUP,它再接着调用DFS代理提供器,DFS代理提供器通常将与请求有关的名字空间从逻辑的改变成物理的。如果需要,MUP将调用重定向器,以如果存在在线连接则允许其中之一声明路径,并创建基于物理连接的、与网络服务器上的文件相关的数据结构。当调用客户端高速缓存机构后处理处理器时,后处理处理器将基于数据结构中的信息在适当时候完成其逻辑数据结构。后处理处理器还将决定这个文件是离线还是在线(例如,由重定向器声明的)。后处理处理器覆写重定向器相关数据(例如,指向文件控制块数据结构中重定向器分派表的指针),因此当在线时,缓冲服务将调用客户端高速缓存机构而不是重定向器。客户端高速缓存机构保存关联于文件的重定向器(指针)数据的拷贝,因此客户端高速缓存机构能在适当时候与重定向器通信,从而将自己插入缓冲服务和重定向器之间的通信流中。如果重定向器返回与网络相关的错误,客户端高速缓存后处理视文件为离线,因而对于文件的请求将尝试由客户端高速缓存满足,而不调用重定向器。如果(由服务器)禁止高速缓存,则客户端高速缓存机构后处理可使自己与文件对象解除关联,从而MUP将不传送任何关联于这个文件对象的请求。例如,通过不覆写文件控制块上与重定向器相关的数据,客户端高速缓存机构将不被包括在关联于这个文件对象的后续文件I/O的控制流中。在离线创建和在线创建两者中,对于同文件的创建请求在客户端高速缓存预处理中同步。为此,如果指向同文件的另一创建送至客户端高速缓存预处理,客户端高速缓存预处理挂起每个稍后的创建请求直到当前的一个完成。对于其它(非创建的)诸如读、写或关闭的文件请求,客户端高速缓存机构能在预处理中先看一下请求,并当适于诸如读和写请求的时候,可尝试通过调用缓冲服务在存储器中满足请求。如果相应的数据没有高速缓存在存储器中(发生高速缓存未中),且因而不能由缓冲服务立即读或写,缓冲服务挂起第一个请求,并生成另一个,第二请求(例如,由缓冲服务的高速缓存管理器/存储管理器)。当这个第二请求到达客户端高速缓存预处理,它调用缓冲服务,缓冲服务识别该请求为由高速缓存未中产生,并因而不检查高速缓存中的数据,而是调用客户端高速缓存机构。客户端高速缓存机构处理该请求并尝试从持久性存储器中的离线高速缓存拷贝获得所需数据,并返回数据至高速缓存管理器/存储管理器。然后高速缓存管理器/存储管理器能拷贝数据到内存高速缓存,并完成I/O请求,例如,为读请求返回数据或者为写请求改变高速缓存存储器中的数据。如果客户端高速缓存机构不能从它的存储器中获得所需数据,因为用于这个文件的连接是离线的,客户端高速缓存机构返回错误。这样,在高速缓存未中时,缓冲服务基于(由缓冲服务组件生成的)第二请求的客户端高速缓存机构的处理结果完成第一请求,为内存储高速缓存提供数据。对于非创建文件I/O请求,当在线时,客户端高速缓存机构预处理返回“要求更多处理”状态给MUP,MUP然后调用任何其它代理提供器,并随之传送请求至相应的重定向器。接着,重定向器调用缓冲服务(例如调用服务的缓冲子系统)尝试从存储器来满足请求。如果相应的数据未高速缓存在存储器中,缓冲服务挂起第一请求,且其组件(例如高速缓存管理器/存储管理器)生成另一个,第二请求。当这个第二请求到达重定向器时,它再调用缓冲服务,但这次缓冲服务识别请求为由高速缓存未中生成,且因此知道不再在高速缓存中查找数据。但是,尽管重定向器调用了缓冲服务的缓冲子系统,但因为客户端高速缓存后处理覆写了分派表中的重定向器指针,所以缓冲服务调用客户端高速缓存。如果请求能用持久性存储器中的离线高速缓存拷贝满足,则客户端高速缓存机构处理该请求。如果不能满足请求,客户端高速缓存机构(它保存了重定向器指针)调用重定向器来尝试从服务器满足该请求。重定向器返回到客户端高速缓存机构,它可在其本地持久性存储器中高速缓存由重定向器返回的数据高速缓存组件然后完成第一请求,并基于客户端高速缓存机构的(也可能是重定向器的)第二请求处理的结果将返回的数据高速缓存到内存储高速缓存中。在概念上,客户端高速缓存机构将自己插入,以便从缓冲服务截取到重定向器的调用,尤其是,来看所需数据是否能从客户端高速缓存离线存储器满足。当对具有在线连接的文件进行关闭时,MUP发送请求到客户端高速缓存机构预处理。客户端高速缓存机构然后检查是否存在还没有发往服务器的任何数据。如果这样,客户端高速缓存机构将任何没用的记录刷新至服务器。客户端高速缓存机构然后发送关闭请求至连接的重定向器、解除对其数据结构的参考、并完成请求。类似地处理其它请求。当连接是离线时,客户端高速缓存机在本地执行任务。如能看到的,由于客户端高速缓存机构在重定向器之外对网络文件相关请求起作用,客户端高速缓存机构是协议无关的,且能工作于任何重定向器协议,只要重定向器参与在缓冲服务(或类似的)结构中。其它优点将在结合附图时,从下列详细描述中变得显而易见,其中图1是方框图,表示示例性计算机系统,其中可包括本发明;图2是方框图,主要表示依照本发明的一方面的客户端高速缓存的方面用于实现的组件;图3是方框图,主要表示依照本发明的一方面用于实现客户端高速缓存和重定向到服务器的组件;图4是方框图,主要表示依照本发明的一方面,在网络在线状态中允许客户端高速缓存时用于实现客户端高速缓存的数据结构;图5是方框图,主要表示依照本发明的一方面,在禁止客户端高速缓存时用于通过网络处理网络文件相关请求的数据结构;图6是方框图,主要表示依照本发明的一方面,当在网络离线状态中运行时用于实现客户端高速缓存的数据结构;图7是流程图,主要表示依照本发明的一方面,用于调用注册的代理提供器的示例逻辑,包括在预处理调用中的客户端高速缓存机构(代理提供器);图8是流程图,主要表示依照本发明的一方面,用于调用注册的代理提供器的示例逻辑,包括在后处理调用中的客户端高速缓存机构(代理提供器);图9是流程图,主要表示依照本发明的一方面,用于处理在客户端高速缓存机构的预处理处理器中的创建调用的示例逻辑;图10是流程图,主要表示依照本发明的一方面,用于处理在客户端高速缓存机构的后处理处理器中的创建调用的示例逻辑;以及图11-13包括流程图,主要表示依照本发明的一方面,用于处理读取请求的示例逻辑。具体实施例方式典型操作环境图1示出了本发明可在其上实现的适合的计算系统环境100的示例。计算系统环境100只是合适的计算环境的一个示例,而不是希望建议对于本发明的使用或功能范围的任何限制。计算环境100不应解释为具有关于典型操作环境中所示各组件任何之一或结合的任何依赖性和需求。本发明可运行于许多其它通用或专用计算系统环境或配置。合适用于本发明的众所周知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持或膝上型设备、写字板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型机、主机计算机、包括任意以上系统或设备的分布式计算环境等等。本发明可在诸如程序模块的、或由计算机执行的计算机可执行指令的通用环境中描述。通常,程序模块包括例程、程序、对象、组件、数据结构等等,它们完成特定任务或实现特定抽象数据类型。本发明还可在分布式计算环境中实施,其中任务由通过通信网络连接的远程处理设备完成。在分布式计算环境中,程序模块可位于本地和远程两者的、包括存储器设备的计算机存储介质中。参考图1,实现本发明的示例系统包括以计算机110的形式的通用计算设备。计算机110的组件可包括,但不限于,处理单元120、系统存储器130和连接包括系统存储器在内的不同系统组件到处理单元120的系统总线121。系统总线121可以是几种总线结构类型的任何一或多种,包括存储器总线或存储控制器、外部设备总线,和使用多种多样总线结构的任何一个的局部总线。作为例子,但不是限制,这样的结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、扩展工业标准结构(EISA)总线、视频标准协会(VESA)局部总线,和外设部件互连(PCI)总线,它也被称为中间层(Mezzanine)总线。计算机110一般包括多种多样的计算机可读介质。计算机可读介质可以是任何能由计算机110访问的可用介质,且包括易失的和非易失的介质及可移动的和不可移动的介质。作为例子,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括在任何用于信息存储的方法或技术中实现的易失的和非易失的、可移动的和不可移动的介质,信息存储诸如计算机可读指令、数据结构、程序模块或其它数据。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光存储、盒带、磁带、磁盘存储器或其它磁存储设备,或者任何其它能被用于存储想要的信息和能由计算机110访问的介质。通信介质一般包含计算机可读指令、数据结构、程序模块或调制数据信号中的其它数据,诸如载波或其它传输机制,并包括任意信息传输介质。术语“调制的数据信号”指具有以这样一种关于编码信号中信息的方式设置或改变的一或多个特征的信号。作为例子,但不是限制,通信介质包括有线的介质,诸如有线网络或直接线连接,以及无线的介质,诸如声音的、RF(射频)、红外线和其它无线介质。上述各项的任意组合也应包括在计算机可读介质的范围之内。系统存储器130包括以诸如只读存储器(ROM)131和随机访问存储器(RAM)132这样的易失的和/或非易失存储器的形式的计算机可读介质。基本输入/输出系统(BIOS)133,包含帮助在计算机110内各部件之间传送信息的基本例程,诸如在起动期间,一般被存储于ROM131。RAM132一般包含由处理器单元120立即访问的和/或目前所运行的数据和/或程序模块。作为例子,图1示出的操作系统134、文件系统135、应用程序136、其它程序模块137和程序数据138。计算机110还可包括其它可移动的/不可移动的、易失的/非易失的计算机存储介质。作为例子,图1示出用于从不可移动的非易失的磁介质读写的硬盘驱动器141、用于从可移动的非易失的磁盘152读写的磁盘驱动器151,以及用于从诸如CD-ROM或其它光介质的可移动的非易失光盘156读写的光盘驱动器155。其它可用于典型操作环境的可移动/不可移动的、易失/非易失的计算机可读介质包括,但不限于,磁带、闪存卡、数字通用盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141一般通过诸如接口140的不可移动存储器接口连接到系统总线121,而磁盘驱动器151和光盘驱动器155一般都由可移动存储器接口诸如接口150连接到系统总线121上。磁盘驱动器及其关联的计算机可读介质,以上讨论并示于图1,为计算机110提供计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,示出硬盘驱动器141存储了操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件能够相同或不同于操作系统134、应用程序136、其它程序模块137和程序数据138。这里给操作系统144、应用程序145、其它程序模块146和程序数据147以不同的数字以说明他们至少是不同的拷贝。用户可通过诸如手写板(电子数字化仪)164、话筒163、键盘162和定位设备161,通常指鼠标、跟踪球或触摸垫这样的输入设备将命令和信息键入计算机110。其它输入设备(未示出)可包括操纵杆、游戏垫、卫星天线、扫描仪或类似的设备等。这些或其它输入设备通常可通过连接到系统总线的用户输入接口160连接至处理器单元120上,还可通过其它接口和总线结构连接,诸如并行接口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也能通过诸如视频适配器190的接口连接至系统总线121。监视器191还可与触摸屏面板或类似的部件集成在一起。注意,监视器和/或触摸屏面板能够物理地连接到一个机箱上,其中计算设备110是一体化的,诸如平板型个人计算机。此外,诸如计算设备110的计算机还可包括其它外围输出设备,诸如扬声器195和打印机196,它们可通过输出外围接口194或类似的接口连接。计算机110可在一个使用逻辑连接至一或多个远程计算机诸如远程计算机180的网络化环境中运行。远程计算机180可以是个人计算机、服务器、路由器、网络计算机、对等设备或其它普通的网络节点、游戏控制台等等,并且一般包括上面相对于计算机110所述的部件的许多或全部,尽管在图1中只示出存储器设备181。图1中所示的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但还可包括其它网络。这样的网络环境在办公室、企业级计算机网络、企业内部互联网和因特网中是很普通的。例如,在本发明中,计算机系统110可包括源计算机,数据从它迁移,而远程计算机180可包括目的计算机。但注意源和目的计算机不需要通过网络或其它方式连接起来,相反,数据可通过能够由源平台写入并由一或多个目的平台读取的任何介质迁移。当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至LAN171。当在WAN网络环境中使用时,计算机110一般包括调制解调器172或用于建立在WAN173诸如因特网上的通信的其它工具。调制解调器172,可以是内置的或外置的,可通过用户输入接口160或其它适当的机制连接至系统总线121。在网络化环境中,相对于计算机110所述的程序模块,或其一部分,可存储在远程存储器设备中。作为例子,但不是限制,图1示出远程应用程序185为驻留在存储设备181上。将意识到所示的网络连接是典型的,并且可使用用于在计算机之间建立通信链路的其它方法。客户端高速缓存系统和方法将在Microsoft(微软)公司的WindowsXP操作系统背景中描述本发明,使用基于协议的重定向器,NTFS文件系统和其它组件,(例如,I/O管理器,高速缓存管理器和存储器管理器)。尽管如将理解的,事实上可用任何操作系统和/或文件系统实现本发明。转到附图的图2,在这里示出用于实现本发明的示例结构200,其中用户模式应用程序202可通过应用编程接口(API)层204调用各种系统功能。对于访问网络资源,应用程序202通过I/O管理器206进行指向网络资源的文件输入-输出(I/O)API调用。例如,在基于Windows的操作系统中,应用程序能通过使用UNC(统一命名协定)标准与Win32功能以直接寻址远程资源,例如以\\server\share的形式或者通过映射到网络共享文件夹等等的驱动器字母,检查或访问在远程系统上的资源。应用能访问网络资源的另一种方法是通过调用网络API,(例如,Windows2000操作系统中Win32窗口网络(Win32WindowsNetworking)(WNet)API),诸如有关在浏览时列举服务器的文件。通过这些WNetAPI,应用和/或操作系统能列举远程计算机输出用于共享的计算机和资源。为此,用户模式网络提供器210-213每一个包括软件代码,软件代码建立操作系统作为远程网络服务器的客户,在本发明中,作为客户端高速缓存的客户(通常充当服务器)。例如,网络提供器执行的有些操作包括建立和断开网络连接和查询网络资源状态。因此,由网络提供器提供的典型功能包括性能功能和设备重定向功能,性能功能允许调用者确定网络提供器的性能,设备重定向功能允许网络提供器重定向驱动器字母、MS-DOS设备和LPT端口。其它功能包括提供器专用的对话功能、管理功能和列举功能,对话功能允许网络提供器显示或表现网络专用的信息,管理功能允许网络提供器显示或表现专用的网络目录,列举功能允许浏览网络资源。例如,通过SMB网络提供器211,操作系统能列举在SMB服务器311(图3)上的网络共享。在一个实现中,当应用程序调用API204的网络例程时要确定要调用哪个网络提供器,该调用传递至多个网络提供器路由器或MPR216,可作为动态链接库(DLL)安装MPR216。通常,MPR216确定哪个用户模式网络提供器识别正在访问的资源。为此,在MPR216下每个安装的网络提供器提供集中地被称为网络提供器接口的一组功能,网络提供器接口允许MPR216确定应用正在尝试访问哪个网络,以及将请求指向合适的网络提供器软件。例如,用于SMB的网络提供器包括LANMAN(局域网管理器)网络提供器211,如在系统注册表项等等中规定的。在所述的实现中,当被调用以连接远程网络资源时,MPR216检查注册以确定载入哪个网络提供器。MPR216随后轮询它们,诸如按照在注册中列出它们的顺序每次一个,哪个是可配置的,以及每个网络提供器(例如,DAV网络提供器213)可进一步与相应的内核模式组件(例如,DAV重定向器225)通信,直到资源被识别或者直到可用的网络提供器已经被轮询。因此,在指向网络资源的网络API调用的事件中,例如,通过作为调用参考传递至DAV服务器的URL,MPR216将轮询DAV网络提供器213,它依次通过RPC(远程过程调用)调用到一服务中以与内核模式DAV重定向器225联系以判定是否能处理这个API,例如所指定的DAV共享是否确实是可访问的DAV服务器312(图3)。如果是,则由DAV重定向器组件225处理这个API。应用也可透明地通过UNC名字或先前映射到资源的驱动器字母访问网络资源。当用远程路径/文件名诸如UNC名字调用文件I/OAPI(例如文件创建/打开请求),这个文件I/O在I/O管理器206被接收。要处理这个远程名字,I/O管理器206调用多重UNC提供器或MUP230,(例如,包括内核模式驱动器)它是作为UNC提供器向系统注册的。通常,MUP230算出哪个网络提供器(例如,提供器210-213组中的)和相应的内核组件诸如网络重定向器223-225中的一个处理那个具体的名字。注意,在本例中只示出三个重定向器,然而在一给定系统中更少或更多数量的重定向器是可行的。要为所请求的文件创建路径确定正确的重定向器,MUP230实际上轮询已注册的提供器/重定向器,直到一个提供器/重定向器声明这个创建请求中所提供的路径。在一个实现中,MUP230通过异步I/O请求分组或IRP轮询,并且每个能处理这个名字的重定向器应答回来。如果多于一个肯定地应答,则MUP230根据优先级顺序(例如,至少在一个系统注册表项等等中保存的)确定哪一个具有处理该请求的优先权。一旦该路径被声明,当应用程序202使用一I/OAPI访问该远程文件时,MUP230知道要调用哪个重定向器处理请求。当至少一个重定向器应答并高速缓存这个路径时,MUP驱动器230高速缓存与应答的重定向器相关联的路径信息,(如果多于一个,它高速缓存具有优先权的那个的信息),由此在没有轮询操作的情况下,将以那个路径串开始的更多的请求直接送到那个重定向器。注意,作为对MUP206的应答的部分,识别该名字的每个重定向器指示该名字对于其的唯一性程度。例如,如果该名字是UNC名字\\SERVER\SHARE\foo\barl.doc并且SMB重定向器223将该名字识别为能够处理,以及如果服务器是SMB服务器,则SMB重定向器223通过高速缓存串“\\SERVER\SHARE”为其自己的。因此,将来指向相应于这个被高速缓存的串的网络共享的SMB请求在不轮询的情况下被传递至SMB重定向器223,以及SMB重定向器223将那些SMB请求分组成能够通过网络送到远程SMB服务器的数据结构。依照本发明的一个方面,在合适的时候,客户端高速缓存(CSC)机构221以代理提供器的形式在重定向层次上透明地处理来自CSC离线存储器215的网络请求,与任何特定的网络协议无关。在一个实现中,CSC机构221从开始起被包括在通信的流中。为此,当收到UNC或基于驱动器字母的网络I/O请求时,MUP230通过对CSC预处理处理器226的预处理调用,与CSC机构221通信。CSC机构221从预处理调用用状态信息返回,如下所述。例如,如果预处理处理器226知道连接是离线的,即,对于这个文件在创建时没有连接到网络,则客户端高速缓存(CSC)代理提供器221可声明路径并用成功状态完成这个调用。否则,CSC可返回“要求更多的处理”状态,在该事件中,MUP230同样地在调用(调用)一或多个重定向器215-217之前,放置对分布式文件系统(DFS)代理提供器216的一个预处理调用。注意,CSC机构221能以已知的方式确定网络连接状态(象其它组件一样),诸如通过检查现有的连接数据状态,注册涉及网络的事件等等,如由连接状态250在图2中一般表示的。CSC机构221因此为指向网络的任何UNC和基于驱动器字符的I/O接收预处理调用。注意,要由MUP230调用的CSC机构221将其本身注册为一代理提供器,由此MUP230知道为指向网络提供器和/或它们相应的重定向器的IRP和FASTIO调用,用预处理调用以及还有后处理调用来调用CSC机构221。在用返回要求更多处理状态的预处理调用CSC机构221之后,MUP230调用DFS代理提供器218。通常,DFS将一逻辑路径/文件名转换成物理路径/文件名,并提供建立在许多不同服务器之外的一个单一的、统一的名字空间的系统。然后重定向器能为这个特定的重定向器处理的文件声明合适地命名的路径。在一高层次上,DFS通过在响应结点(junctionpoint)时向包括DFS名字空间的独立服务器请求参考(referral)来工作。作为例子,DFS可被用于为一程序的版本提供一单一的名字空间,它由遍及一个部门(division)的不同的服务器建立的,例如,名字\\progbuilds\release\lab01\release\x86fre是到\\robvbl1\release的一个结点。在这个例子中,要打开\\progbuilds\release\lab01\x86fre\latest_tested_build.txt,\\progbuilds服务器将返回参考为\\robvbl1\release\latest_tested_build.txt并告诉客户再尝试这个请求。如能理解的,处理结点的一般算法修改名字的左边部分。一个名字能经过多个结点,在最终联系目的地服务器之前,导致多个名字修改。正当服务器改变客户提供的名字以处理结点时,将文件名标识符放到右边允许该标识符保存在名字中。因此,在图2的结构中,并且也如在图3中一般表示的,在MUP230作为UNC提供器注册的情况下,由MUP230产生UNC调用,它接着将它们传递给合适的代理提供器中的第一个,即CSC机构221。取决于返回的状态,MUP230可将UNC调用传递到一或多个其它代理提供器(例如222),以及到重定向器223-225,这些重定向器通过网络传输层301等等与相应于重定向器的协议的服务器311-313通信数据。因为预处理和后处理调用方案,CSC机构221过滤通过MUP230的调用,因而允许CSC机构221有能力对用于被认为合适的无论什么路径名的高速缓存操作作出决定。在概念上,CSC机构221在MUP230处理的每个调用的路径中,允许CSC机构221进行CSC机构221需要的无论什么预处理和后处理,以执行合适的客户端高速缓存功能,如下面一般描述的。而且,在这个结构中,因为CSC机构221在DFS代理提供器222之前操作预处理调用(和在DRS之后操作后处理调用),任何DFS操作对于CSC是透明的,如CSC机构221看到的名字是逻辑名字而不是物理名字。如在图2的结构中表示的,CSC机构221和DFS代理提供器222是在MUP230的一般层次上。依照本发明的另一个方面,客户端高速缓存功能是协议无关的,例如,它与任何重定向器一起工作。为此,客户端高速缓存功能已经移出任何协议相关的重定向器(即SMB重定向器223),并且透明地成为重定向器和重定向的缓冲子系统232之间的控制流的部分。如已知的,重定向的缓冲子系统232向重定向器223-225提供高速缓存管理器240和存储器管理器242(内存储RAM高速缓存242)服务,这些重定向器每个与RDBSS232联系以在合适的时候利用内存储高速缓存244。通过将CSC机构221(作为驱动器)插入到重定向器与重定向的缓冲子系统232之间的控制流中,使客户端高速缓存功能作为公共服务可用于每个重定向器,与任何网络协议无关,但本质上透明于重定向器223-225和重定向的缓冲子系统232。注意,如在此使用的,术语“缓冲服务”指处理涉及文件的数据缓冲的任何组件,包括由本示例结构中的RDBSS232、高速缓存管理器240、存储器管理器242和RAM高速缓存244集中地提供的缓冲服务。应该注意,CSC机构221在逻辑名字空间上操作,这个名字空间是用户看见的名字空间。注意,这和重定向器相反,重定向器在物理名字空间上工作,这个名字空间相应于存储数据的实际服务器。注意,这两个名字空间例如对于SMB是相同的,除非存在包含的DFS结点。依照本发明的一个方面,图4表示在逻辑和物理名字空间两者中基于逻辑连接的数据结构400和基于物理连接的数据结构420,以及两者之间的关系。注意,CSC机构221在逻辑名字空间中保存基于连接的数据结构400,同时每个重定向器在物理名字空间420中保存其基于连接的数据结构。通常,当MUP230接收一创建文件请求并调用CSC预处理处理器226时,CSC机构221创建逻辑连接数据结构400和共享的基于文件的结构410-412。注意,由I/O管理器206(图2)创建文件对象413。而且,注意,服务器能禁止客户端高速缓存,其中客户端高速缓存机构将通过其后处理处理器227检测。CSC的逻辑连接数据结构400包括服务器调用上下文421,它包括服务器的抽象(abstraction),例如,包括逻辑服务器名字、CSC设备对象、CSC状态标志、连接状态和清除器管理器。(至少一个)网根(netroot)结构402每个包括共享的抽象,包括共享名字、共享类型、CSC属性、访问权限、打开的数量等等。(至少一个)网根的视图结构(VNetRoot)403每个包括共享的视图的抽象,包括安全的上下文和用户会话信息。如在图4中所表示的,共享的数据结构包括文件控制块410,连同至少一个服务器端打开上下文411,以及至少一个文件对象扩展412。文件控制块410实质上包括文件的抽象,并且包括用于文件的信息,诸如大小数据、时间信息、高速缓存映象等等。服务器端打开上下文411包括送到服务器的打开的抽象,即具有所希望的和共享的访问权限的服务器文件句柄。注意,CSC机构221象在这个上下文中的服务器,例如,在CSC存储器215中文件的句柄将被保存在这个结构中。文件对象扩展数据结构412包含与文件对象413相关联的信息。如在图4中所示的,当系统在线且允许客户端高速缓存,在CSC机构221和声明路径的重定向器之间共享这些数据结构410-413。结果,文件I/O请求由或者CSC机构221或者声明文件的路径的重定向器执行,基于下面所述的情况。在相应于图2的结构的一个实现中,当一创建请求来到MUP230时,MPU230调用CSC机构221的预处理处理器226(入口点)。CSC机构221试图找出用于随这个创建请求发布的文件对象的逻辑连接数据结构(服务器调用上下文401服务器连接结构,网根共享映射结构402和每用户共享VNetRoot映射结构403)。如果没有找到,CSC机构221创建这些结构,例如,通过RDBSS232。如果知道这些连接是离线的,则CSC预处理处理器226返回成功状态,(或如果适当返回错误),否则CSC预处理处理器226返回“要求更多处理”状态,由此MUP230将调用DFS代理提供器的预处理,并且然后调用一或多个重定向器223-225以试图打开路径。在路径的成功打开(连接在线)时,在适当的重定向器处建立基于连接的物理结构420,以及可用于文件的句柄。MUP230调用CSC后处理处理器227,它通过查看FCB的物理网根,能获得路径的文件扩展、大小和高速缓存标志。一旦获得这个信息,CSC机构221能(在其后处理中)决定是否要拥有这个文件对象,例如,如果共享指示允许为这个文件高速缓存(文件是可高速缓存的共享,或者如果重定向器指示高速缓存将一直开着,诸如用于WebDAV)。如果允许,CSC机构221声明所有权并完成用于由这个文件对象表示的打开实例410-412的文件数据结构。如果共享被标记为不可高速缓存的,CSC机构221将它自己与文件对象解除关联,可清除任何CSC数据结构,并且其后将见不到对于这个文件对象的操作。在图5中一般表示用于这样一个客户端高速缓存禁止模式的操作的其余数据结构。注意,CSC机构221在有些时间段保存连接数据结构,即使连接数据结构是不可高速缓存的路径。相反,当允许客户端高速缓存但对于这个路径连接是离线的时候,不存在用于这个物理连接的数据结构,如在图6中一般表示的。注意,服务器可指示(通过锁定机构等等)对于这个文件的操作应该由客户端高速缓存处理,直到受到其它指示,例如,直到服务器改变锁定的类型。在文件上的后续I/O操作将被离线执行,直到受到其它通知,例如,服务器改变锁定的类型(例如,机会锁定(opportunisticlock),或oplock),因为另一个用户已经请求访问这个文件。转到参考图7-13的流程图的本发明的操作说明,图7表示图2的示例结构中MUP230、CSC和DFS代理提供器(分别为221和222)与重定向器223-225之间的一般控制流。如在步骤700表示的和如上所述的,在一创建请求上,MUP230选择代理提供器中的第一个,在本例中是CSC机构221,通过步骤702逻辑地跟踪预调用顺序,并在步骤704调用(invoke)(调用(call))所选择的提供器预处理处理器。下面参考图9一般描述用于创建请求的CSC预处理处理器226操作。除非被调用的代理提供器以“成功”或“错误”状态代替“要求更多处理”状态完成这个请求,如在步骤706所检测到的,MUP230将通过步骤708和710(它循环回到步骤702)调用其它代理提供器,在这个例子中只有DFS代理提供器222,直到没有要调用的代理提供器剩下。注意,在CSC机构221检测到连接离线的情况下,(例如,通过在如图4所表示的数据结构中的连接状态数据250(图2)),CSC机构221离线地处理文件I/O创建请求,并且然后返回除要求更多处理之外的状态,即成功或错误,因此没有涉及网络的组件需要访问。在一个在线(或未知的连接状态)情况下,在预处理调用代理提供器之后,步骤708分支到表示调用重定向器或多个重定向器的步骤712。注意,在文件创建/打开请求上,如上面所述,可调用的多个重定向器以找出声明路径的一个重定向器,除非用于这个创建的路径已经先前被声明,由此MUP230知道要调用哪个重定向器。在涉及那个路径的后续的I/O请求上,包括被指向读或写操作的那些请求,MUP230调用先前声明路径或声明它为创建/打开请求的部分的重定向器,例如,对于这个例子而言的DAV重定向器225。图8表示MUP230调用代理提供器的后处理处理器,在预处理调用(或多个调用)以及对重定向器的任何调用之后。在步骤800,MUP选择以预处理调用顺序最后被调用的代理提供器,它在(在线)本例中是DFS代理提供器218,并且在步骤802调用它。步骤804和806表示以与后处理调用顺序的相反顺序重复用于其它代理提供器的后处理。在本例中,剩下要被调用的代理提供器只有CSC机构221。下面参考图10一般描述用于创建请求的CSC后处理处理器227操作。注意,在离线情况下,步骤706将分支到步骤712,只有CSC预处理处理器226已经被调用,由此步骤802将调用CSC后处理227但将不存在其它要调用的代理提供器,如由步骤804检测到的。图9表示CSC预处理处理器226的操作,当被MUP230调用以响应创建请求时。在步骤900开始,CSC预处理找出或创建逻辑结构400,如上面参考图4一般描述的。步骤902表示与文件对象413相关联的共享的结构410-412(图4)的折叠(collapsing)或创建。注意,如同其它服务器文件一样,以正确的顺序(同步的)挂起任何指向同文件的创建/打开请求,如由步骤904所表示的,例如,因此在不被送到服务器的这个打开上,后续的打开可被折叠。步骤906测试是否知道连接离线,在这个事件中只有CSC存储器215可用,并且不需要涉及网络资源,由此预处理处理器分支到步骤908以返回功能(或错误)。否则,预处理处理器分支到步骤910以返回“要求更多处理”状态,使得将联系涉及网络的组件(DFS和重定向器),它将建立在线或离线状态,如上所述。应该注意,在文件的创建/打开请求处理时为每个文件建立在线或离线。如果从其它创建请求中知道,则可在CSC预处理中确定离线连接,或者如果在CSC预处理期间不知道,则在CSC后处理中基于当重定向器或多个重定向器被调用时所发生的确定离线连接,如下所述。例如,如果重定向器声明路径,创建结构并不返回网络错误,则建立在线连接,否则建立连线连接。在一个实现中,在创建时确定的离线对在线状态对于文件不会改变(直到被关闭和重新打开),不管在后续I/O请求期间的实际连接状态。因此,即使在文件创建/打开时网络是在线的,但在打开文件时变成离线,则MUP230继续将用于那个路径的请求传递至重定向器,如下所述。注意,因为缓冲服务和/或客户端高速缓存,在处理这样的后续请求中可能没有错误,除非实际上需要重定向器与断开的服务器通信。可供选择,如果在文件创建/打开时网络是离线的,但在打开文件时变成在线,客户端预处理继续处理请求,好象离线一样,举例来说因为MUP230还没有涉及DFS且对于这个文件没有MUP230已知的重定向器。图10表示CSC后处理处理器227的操作,当被MUP230调用以响应创建请求时,如果离线可在预处理调用之后立即进行,或者如果不知道连接状态,在已经调用重定向器(以及其它代理提供器或提供器)之后进行。注意,尽管在图10中未示出,如果在涉及(至少一个)重定向器之后,由服务器对这个文件禁止客户端高速缓存,CSC机构221将通过后处理基本上移除自己,用于指向这个文件的进一步调用。在步骤1000开始,CSC后处理处理器227创建用于客户端高速缓存文件的句柄,例如,如由在CSC存储器215中用于文件的本地文件系统返回的。如上所述,文件结构中的一个包括服务器端打开上下文411(图4),其中在步骤1002CSC后处理处理器227存储这个句柄,即,CSC后处理处理器227存储用于表示逻辑路径而不是物理路径的本地高速缓存的句柄。在步骤1004,为这个文件完成这些结构,例如,各种数据被放入合适的结构。步骤1006表示释放任何可能挂起的其它创建(在图9的步骤904)。应该注意,当调用CSC后处理227时,CSC后处理处理器227寻找表示离线情况的涉及重定向器的错误。这处理预处理处理器226不知道连接是在线或离线的情况。为此,CSC后处理227可查看现在是否知道连接是在线的,诸如通过在数据结构中寻找物理连接信息,和/或寻找来自其它代理提供器或重定向器的完成状态。如果存在连接错误,例如,没有重定向器声明路径,后处理处理器将这个文件的状态转移到离线,即,CSC后处理227将在数据结构中的状态转移到离线,因此后续的请求将由CSC预处理处理器(在不涉及任何重定向器的情况下)完成,如下所述。换句话说,随着转移至离线的情况,后续的I/O请求由CSC代理提供器的预处理处理器226完成,(并且CSC将返回不同于要求更多处理的状态),因此MUP230将不发送请求至重定向器(在任何事件中对于MUP230可能不知道这个重定向器)。步骤1008表示测试连接是否离线,这可能已经预先知道,也可能预先不知道。如果离线,执行步骤1010,它表示执行任何可能必需的转移至离线,诸如清除可能存在的任何基于物理连接的数据结构,等等。如果在线,执行步骤1012,它表示用CSC机构221的参考代替声明路径的重定向器覆写FCB410的分派表(dispatchtable)416。更具体地说,如下面参考图11-13所述,在只轻微地改变成RDBSS232与重定向器一起工作的方式的情况下,本发明的结构已经完成了协议无关的客户端高速缓存。例如,RDBSS232和重定向器组件实际上象以前一样作用,例如,重定向器声明路径,调用到RDBSS232中以查看所需的数据是否被高速缓存在本地存储器中,等等。RDBSS232也基本上象以前一样操作,例如,在被请求时创建结构,调用高速缓存管理器在合适时高速缓存写或查看所请求的数据是否被高速缓存以满足读请求,并且如果是则与数据一起返回,等等。不过,如下所述,当RDBSS232需要文件数据诸如以满足I/O请求而数据不在内存储高速缓存244中时,高速缓存管理器240/存储器管理器242生成读IRP。然而,当这个读IRP到达RDBSS232时,取代将控制传递至重定向器以获得数据,分派表入口的覆写使RDBSS232调用CSC机构221,因此给CSC机构221一个机会使用CSC存储器215满足请求。如此,CSC机构221透明地被包括在RDBSS232与声明路径的重定向之间的控制流中,与重定向器的网络协议无关。图11-13描述一种方式,其中CSC机构221被透明地插入以截取读请求,特别是当允许客户端高速缓存时。为了简单,图11-13不表示其它操作状态,包括当不允许读高速缓存时;代之以在下面描述这个条件,即,在从持久性存储器215的任何读之前,CSC机构221需要知道文件的缓冲状态,因为如果缓冲状态是不允许读高速缓存这样的,(例如,在一个实现中缓冲状态是与OPLOCK_LEVEL_NONE等价的),那么CSC机构221不从CSC存储器215返回数据,并且代之以让读请求转到下面的提供器。在一个实现中缓冲状态信息,可通过检查在FCB上的FCB_STATE_READCACHING_ENABLED标志获得。在步骤1100,当MUP230接收请求时,例如来自I/O管理器206的IRP时,整个读请求处理开始。在步骤1102,MUP230调用CSC预处理处理器226,CSC预处理处理器226在通过步骤1104测试在线时,产生在步骤1106返回的“要求更多处理状态”。注意,如果系统是离线的,那么CSC预处理处理器226处理请求,在图11中由步骤1104分支到步骤1112表示。对于在在线状态中的读请求,当在步骤1106CSC预处理226返回要求更多处理状态时,在步骤1108MUP230调用DFS预处理以执行其任何DFS预处理操作,诸如记录文件I/O操作。在这个调用之后,在步骤1110MUP230调用先前声明用于这个特定文件的路径的重定向器(例如225)。不管CSC预处理(离线)或重定向器(在线)是否具有请求,在步骤1112调用RDBSS232,基本上确定所需要的数据是否在存储器高速缓存244中,诸如由于先前的读或写请求。当数据没有在本地存在于存储器(高速缓存未中(miss)发生)中时,如下所述,缓冲服务(例如,高速缓存管理器240/存储器管理器242)将生成具有置位的分页I/O标志的第二IRP,主要为了让另一个实体取得数据。因此,RDBSS232将需要检查IRP是否由高速缓存未中条件生成的,例如,通过分页I/O标志设置等等,因为如果这样,意味着RDBSS232不应该另一次重复它先前所做的并且调入高速缓存管理器以查看同一数据,因为在没有找到时这将再次发出IRP,(它实质上将是一个无限的循环)。代替的是,需要调出RDBSS232以从其它地方取回数据。这个测试在步骤1114表示。注意,以不允许缓冲的I/O的方式可打开文件,在这个事件中将同样不高速缓存数据;步骤1114也能检测这个条件并相应地分支到步骤1118。为了简单,将参考缓冲的I/O描述本例,除在另有说明的地方。在本例中,在这时,IRP是由I/O管理器206生成的,并且因此步骤1114分支到步骤1116,调用高速缓存管理器240,它接着与存储器管理器242一起在内存储(RAM)高速缓存244中查找所请求的数据。图12的步骤1200表示高速缓存管理器240/存储器管理器242作出关于是否存在高速缓存命中或高速缓存未中的判定,缓冲数据(步骤1202)并在高速缓存命中时返回成功(步骤1212)至RDBSS232,或者在高速缓存未中时生成第二IRP,如由步骤1204表示的。在第一IRP中的高速缓存命中时,RDBSS232完成这个(第一)IRP,如在步骤1240所表示的并且如在下面参考图13一般描述的。在高速缓存未中时,在步骤1204生成第二IRP,且与第一IRP相似,在图11的步骤1100,在MUP230处接收。回到图11,如果和当在步骤1100接收第二IRP时,如上所述将执行其它步骤(例如,1102-1112),最后到达步骤1114,再次与是否离线或在线无关。不过这次,步骤1114将检测用于读的这个(第二)IRP的分页I/O标志。依照本发明的一个方面和如上所述,当在线时,在用于文件创建/打开请求的CSC后处理中,CSC后处理处理器117已经预先覆写FCB410的分派表416中的重定向器指针(图4),因此RDBSS232将在这个情况下调用CSC机制221,如通过步骤1118所表示的,代替重定向器225。这给CSC机构221一个机会在CSC存储器215中查看所请求的数据,代替首先让重定向器225向服务器请求数据。注意,这对于RDBSS232是透明的,RDBSS232简单地基于FCB的分派表416中的指针调用CSC机构221。如此,从重定向器的观点CSC机构221基本上象对RDBSS232的扩展作用,可是从RDBSS232的观点它象适当的重定向器作用,尽管对于两者基本上是透明的。而且,注意在离线情况下,CSC预处理处理器226调用RDBSS232(没有重定向器被涉及),以及因此在步骤1118RDBSS232将回调CSC预处理处理器226。因此,在或者在线或者离线的情况下,CSC机构221的代码得到调用。如此,在高速缓存未中时,执行图12的步骤1220,它表示CSC机构221为所请求的数据检查其持久数据存储器215。注意,除非文件是不足的(sparse),所请求的数据将在那里,以及因此步骤1220能包括有关文件是不足的测试,(可供选择,如果是不足的,步骤1220能测试所请求的数据是否正好存在)。如果找到,从RDBSS232的观点CSC机构221象重定向器作用,如CSC机构221将检索RDBSS232不能从本地存储器获得的数据,并在步骤1222在响应调用时返回数据,例如,通过将数据填充到与IRP相关联的缓冲器中并向RDBSS232提供成功状态,如由步骤1222所表示的。RDBSS232完成这个第二IRP,如由步骤1240所表示的和下面参考图13所述的(在步骤1206它将返回到启动器(例如,高速缓存管理器240/存储器管理器242),下面所述)。如果在步骤1220CSC机构221不能访问所请求的数据,那么如果在线,CSC机构221可请求重定向器(例如,225)从服务器获得数据。不过,如果由步骤1224检测到离线,则CSC机构221将需要返回错误(例如,指示网络是断开的)至RDBSS232。注意,这象任何重定向器如果先前在线但被断开时将返回的错误一样;再次从RDBSS232的观点CSC机构221仿效重定向器。为此,在步骤1226CSC机构221调用重定向器225,好象CSC机构221是RDBSS232。然后,重定向器225与合适的服务器通信以试图检索所请求的数据,如由步骤1228所表示的。如果读是成功的,数据是由重定向器缓冲的(在与IRP相关联的缓冲器中),重定向器返回成功至CSC机构221,(好象CSC机构221是RDBSS232),由此在步骤1232CSC机构221高速缓存在CSC持久性存储器215中的数据,并在步骤1240向RDBSS232提供成功状态以完成IRP。注意,如果读是不成功的,没有东西可用于CSC机构221高速缓存,以及因此只由重定向器返回错误状态至CSC机构221,并且由CSC机构221至RDBSS232。随着步骤1240,所完成的IRP(是成功还是不成功地完成的,以及是第一还是第二IRP)因此移动退出驱动器堆栈,它到达MUP230。不过,IRP移动所通过的堆栈顺序是不同的,取决于连接是在线或离线。注意,在这时没有实际测试离线对(versus)在线,但是步骤1300在概念上表示通过堆栈的两个可能的路径,IRP可取决于离线对在线利用这个堆栈。例如,在在线情况下,IRP将从RDBSS232移动至重定向器至MUP230,如由步骤1302和1308所表示的。注意,重定向器简单地将IRP传递至MUP230。可供选择,在离线情况下,MUP仅调用了CSC预处理226,它接着调用RDBSS232。因此,IRP被返回至CSC预处理226,如通过步骤1304所代表的。CSC预处理226接着返回状态完成(或错误)至MUP,如通过步骤1306和1308所表示的。如此,尤其,MUP230将不调用重定向器,如上面参考图7所述。步骤1310表示MUP230测试状态,以便开始调用代理提供器的后处理,如上面参考图7和8所述的。注意,当状态是成功(或错误),这一般相应于分支到图8的图7的步骤706,尽管在图13的例子中,唯一的其它代理提供器是DFS代理提供器222。因此,当在线时,在步骤1312MUP230调用DFS代理提供器222的后处理处理器,以及然后在步骤1314调用CSC后处理处理器227,并且在步骤1316完成请求。否则,当离线时,MUP仅调用CSC后处理处理器227。应该注意,在步骤1310MUP不需要实际地测试在线对离线,因为这个测试在后处理调用堆栈中可能是固有的,即,基本上相应于图8的步骤806,当只有CSC后处理要回调时。MUP230接着完成请求,如由步骤1316所表示的。不过,返回IRP的情况,取决于IRP是由I/O管理器206启动的第一IRP,或者是由高速缓存未中启动的第二IRP。如果IRP是第一IRP,它被送往至I/O管理器206,以及在响应应用程序的读请求时从那里返回数据。如果IRP是在步骤1204产生的第二IRP,接着这个第二IRP返回至高速缓存管理器240/存储器管理器242,即,在步骤1206生成它的实体。步骤1206表示测试在第二IRP(高速缓存未中条件)中产生的读请求是否成功。如果否,在响应来自应用程序的API调用时,与第一IRP一起返回错误(步骤1208)至I/O管理器206,如上面参考步骤1240和图13所述。如果读是成功的,则代之以执行步骤1210,它表示高速缓存管理器240/存储器管理器242用通过第二IRP读请求缓冲的数据填充存储器高速缓存244。然后将第一IRP与所填充的数据缓冲器一起返回至I/O管理器206(以从那里至应用程序),如上面参考步骤1240和图13所述。如此,RDBSS232和重定向器从它们的观点象以前一样操作,然而CSC机构221透明地将自己插入到控制流中以在内存储高速缓存没有数据时满足读请求。注意,当内存储高速缓存244具有数据时,(高速缓存命中),CSC机构221不需要将数据添加到其存储器215,因为在步骤1210通过第二IRP数据首先进入内存储高速缓存244,并且因此从CSC存储器215获得或已经在如上所述的步骤1232由CSC机构221(从重定向器)存储。因此没有必要再复制这个数据至CSC存储器215。转到考虑当允许客户端高速缓存时的写请求,写请求与读请求非常相似,除了高速缓存管理器240/存储器管理器2442最后改变在存储器高速缓存244中的数据。所改变的存储器高速缓存244(例如,所考虑的改变或不在每页的基础上)让其所改变(弄脏的)页被刷新至CSC存储器215和/或服务器,以下面所述的各种方式。注意,要为写请求在内存储高速缓存244中改变数据,要被改变的每个数据页(即使只改变页的部分)必须在内存储高速缓存244中。因此,在此所述的示例实现,在用于写请求的高速缓存未中时,通过生成第二IRP(例如,就象在步骤1204用于读请求那样)所需要的数据首先被读入高速缓存。通常,对于缓冲的I/O(它使用高速缓存240),图11-13的流程图和读一样应用于写,除了代替填充缓冲和返回它,填充要写的数据的缓冲器修改在高速缓存240中适当的页,不是那些页开始在高速缓存240中,就是必须通过上面所述用于读第二IRP机构,将所需的页发现缺少(fault)(读)到高速缓存240。注意,对于非缓冲的I/O,RDBSS232知道不调用高速缓存管理器240(例如,基于在创建时放置在FCB中的信息),以及代之以将调用CSC机构221,例如,当在线时通过分派表或者当离线时回到CSC预处理。因此,非缓冲的I/O写基本上在第一IRP时通过图11中的步骤1114分支到步骤1118,相似于第二分页I/OIRP。当在实际的写请求中涉及CSC机构221时,(以及不只是在高速缓存未中时生成的读求以填充内存储高速缓存244用于相应的写请求),例如,对于非缓冲的I/O或当高速缓存被刷新时,写操作可由用作直写高速缓存的CSC机构221处理。通常,用直写高速缓存,数据首先被试图写到服务器,并且如果成功,那么CSC机构221将拷贝到其持久性存储器215。例如,如果禁止写高速缓存或文件是不足的,CSC机构221将写请求直接送到重定向器,并且如果请求由重定向器成功地完成,然后数据可由CSC机构221保存,通过将拷贝写到其持久性存储器215。如果从重定向器返回错误,CSC机构221可尝试转移至离线,并且如果成功,完成请求离线。在一个选择方案中,CSC机构221能代替用作反写高速缓存,通过高速缓存不首先到服务器的写。注意,反写高速缓存是由服务器控制的;换句话说,当服务器准予写高速缓存时,CSC机构221将高速缓存写,直到关闭文件句柄或服务器打破文件的oplock(机会锁定)(它准予反写高速缓存特权)。为此,如果允许写高速缓存且文件不是不足的,则CSC机构221将所请求的数据写入CSC持久性存储器215,并返回成功状态(如果不成功则错误)至调用者。注意,在执行每个写之前,CSC机构221确定文件的缓冲状态。如果缓冲状态允许反写高速缓存,CSC机构221将数据写到其持久高速缓存215,并且如上所述返回写状态(通常成功)。不过,如果缓冲状态是不应该高速缓存写这样的,例如,服务器在相当于OPLOCK_LEVEL_II或更低处设置oplock,那么CSC机构221不高速缓存写并且代之以让写请求转到下面的重定向器,如上面一般所述。可通过检查FCB的FCB_STATE_WRITECACHING_ENABLED标志获得缓冲状态信息。当关闭文件时,关闭请求以上面所述的一般方式通过RDBSS232到达高速缓存管理器240。如果在高速缓存244中的数据需要被刷新,例如,在高速缓存244中至少有一个用于这个被关闭的文件的被弄脏的页,则高速缓存管理器240/存储器生成至少一个分页I/O写请求(IRP或多个IRP),每个请求以如上所述相同的一般方式到达CSC机构211,例如,当RDBSS232接收每个写IRP时,通过来自RDBSS232的调用。CSC机构211然后基于为这个文件接收的每个IRP写到持久CS高速缓存215。要反写至服务器,在一个实现中,当关闭请求来到CSC机构211,SC机构211检查是否有来自先前关于这个文件的写请求的任何高速缓存的数据。如果是,且如果服务器是在线的,CSC机构211将具有被修改的数据的部分(例如弄脏的页)送回服务器,通过将写请求传递至适当的重定向器。在如此将高速缓存的数据推回服务器之后,CSC机构211将关闭数据送回重定向器。一旦重定向器完成关闭请求,CSC预处理处理器226查询以获得来自服务器的时间信息,将它设置在高速缓存的文件,关闭高速缓存文件句柄,并且返回至MUP230。因此可高速缓存写,直到关闭文件,在这时如此同步文件。注意,当没有文件的远程句柄时,例如,与这个文件相关联的连接是离线的,只在本地执行关闭请求。稍后可执行同步。如可容易地理解的,现有的应用程序可不修改地与本发明一起工作,并象以前一样发送文件I/O请求。然而,其它应用程序可能知道客户端高速缓存。这样的知道CSC的应用将改进整个用户技巧,诸如通过使用涉及CSC的API控制文件分组,确保某些文件总是在持久性存储器215中(“钉住的”),控制同步频率和访问其它CSC特征。而且,在一个实现中,CSC机构221可能知道网络连接状态特性,诸如可用性,费用和速率。如能够理解的,可依照在给定时间的当前网络连接特性控制客户端高速缓存、同步和网络通信的其它方面。如从前面详细的描述中能看到的,提供一种透明地提供协议无关的客户端高速缓存的方法和系统。该方法和系统适合在现有的重定向器结构内,当离线和/或在线时以一致的方式提供对文件的访问。虽然本发明易受各种修改或选择性结构的影响,但在附图中示出其某些例示的实施例并在上面详细地描述。不过,应该理解,没有将本发明限制在所揭示的特定形式或多个形式中的意图,但相反,目的是要覆盖落在本发明的精神和范围内的所有修改、选择性结构和等价方案。权利要求1.在计算环境中,一种方法包括接收由应用程序启动的I/O请求,所述请求被指向在服务器上创建或打开网络文件;调用客户端高速缓存预处理,所述客户端高速缓存预处理声明在逻辑名字空间中所述文件的拷贝的路径;调用重定向器,所述重定向器声明在物理名字空间中所述网络文件的拷贝的路径,并提供用于与所述文件关联的重定向器信息,使得缓冲服务在被所述重定向器调用时能回调所述重定向器;调用客户端高速缓存后处理,所述客户端高速缓存后处理将客户端高速缓存机构插入到所述声明在物理名字空间中的路径的重定向器和所述缓冲服务之间的通信流,包括修改与所述文件相关联的所述重定向器信息,使得所述缓冲服务将在被所述重定向器调用时回调所述客户端高速缓存机构。2.如权利要求1所述的方法,其特征在于,所述客户端高速缓存预处理在逻辑名字空间中创建多个与所述文件的拷贝相关联的数据结构。3.如权利要求1所述的方法,其特征在于,所述客户端高速缓存预处理创建多个与代表所述网络文件的文件对象相关联的共享数据结构。4.如权利要求1所述的方法,其特征在于,所述共享数据结构之一包括文件控制块,其中,与所述文件相关联的所述重定向器信息包括指向所述客户端高速缓存机构的指针,所述指针被保存在所述文件控制块中并且通过客户端高速缓存后处理在所述文件控制块中被修改。5.如权利要求1所述的方法,其特征在于,所述重定向器创建多个与所述在服务器上的网络文件相关联的数据结构。6.如权利要求1所述的方法,还包括,在修改所述重定向器信息之前保持与所述文件相关联的所述重定向器信息,使得所述客户端高速缓存机构能够调用所述重定向器。7.如权利要求1所述的方法,还包括,接收指向从所述网络文件读数据的一I/O读请求,向所述重定向器提供所述I/O读请求,从所述重定向器调用所述缓冲服务,所述缓冲服务包括高速缓存/存储器管理组件,所述高速缓存/存储器管理组件在存储器高速缓存中查找所述请求的数据,以及如果找到,所述缓冲服务完成所述读请求,以及如果未找到,所述缓冲服务调用所述客户端高速缓存机构。8.如权利要求7所述的方法,还包括,通过所述客户端高速缓存机构获得所述请求的数据,以及从所述客户端高速缓存机构向所述缓冲服务提供所述请求的数据。9.如权利要求7所述的方法,其特征在于,所述客户端高速缓存机构在客户端持久性存储器中寻找所述请求的数据,以及如果没有找到,调用重定向器以向所述服务器请求所述请求的数据。10.如权利要求9所述的方法,其特征在于,重定向器找出所述数据,以及其中,在响应于所述缓冲服务对所述客户端高速缓存机构的调用时,所述客户端高速缓存返回数据至所述缓冲服务。11.如权利要求7所述的方法,还包括,在向所述重定向器提供所述读请求之前,调用所述预处理处理器。12.如权利要求7所述的方法,其特征在于,调用所述客户端高速缓存机构包括表示所述缓冲服务应该从所述存储器高速缓存查找所述请求的数据的信息。13.如权利要求12所述的方法,其特征在于,所述缓冲服务的所述高速缓存/存储器管理组件发出第二读请求,以及其中,表示所述缓冲服务不应该从所述存储器高速缓存查找所述请求的数据的信息,包括与所述第二读请求相关联的标志。14.如权利要求12所述的方法,其特征在于,调用所述客户端高速缓存机构的步骤还包括,在所述缓冲服务处接收所述第二读请求,从所述信息认出所述缓冲服务不应该从所述存储器高速缓存查找所述请求的数据,并且基于与由所述客户端高速缓存后处理修改的所述文件相关联的信息调用所述客户端高速缓存机构。15.如权利要求12所述的方法,还包括,通过所述客户端高速缓存机构获得所述请求的数据,以及从所述客户端高速缓存机构向所述缓冲服务提供所述请求的数据,所述缓冲服务完成所述第二请求。16.如权利要求15所述的方法,其特征在于,完成所述第二请求的步骤包括,将数据返回至所述高速缓存/存储器管理组件,所述高速缓存/存储器管理组件基于所述返回的数据完成所述第一请求。17.如权利要求16所述的方法,其特征在于,所述高速缓存/存储器管理组件还将从所述第二请求获得的所述请求的数据添加到所述存储器高速缓存。18.如权利要求1所述的方法,还包括,接收指向将数据写到所述网络文件的一第I/O请求,将所述写请求提供至所述重定向器,由所述重定向器调用所述缓冲服务,所述缓冲服务包括高速缓存/存储器管理组件,所述高速缓存/存储器管理组件在存储器高速缓存中查找所述请求的数据,以及如果找到,所述缓冲服务完成所述写请求,以及如果未找到,所述缓冲服务调用所述客户端高速缓存机构。19.如权利要求18所述的方法,还包括,通过所述客户端高速缓存机构获得要被覆写的所述请求的数据,以及从所述客户端高速缓存机构向所述缓冲服务提供所述请求的数据。20.如权利要求18所述的方法,其特征在于,所述客户端高速缓存机构在客户端持久性存储器中寻找所述请求的数据,以及如果未找到,调用重定向器以向所述服务器请求所述请求的数据。21.如权利要求20所述的方法,其特征在于,重定向器找出所述数据,以及其中,在响应所述缓冲服务对所述客户端高速缓存机构的调用时,所述客户端高速缓存将数据返回至所述缓冲服务。22.如权利要求18所述的方法,还包括,在将所述写请求提供至所述重定向器之前,调用所述预处理处理器。23.如权利要求18所述的方法,其特征在于,调用所述客户端高速缓存机构的步骤包括,发出相应于读请求的第二请求,所述第二请求包括表示所述缓冲服务不应该从所述存储器高速缓存寻找所述请求的数据。24.如权利要求23所述的方法,其特征在于,所述缓冲服务的所述高速缓存/存储器管理组件发出所述第二请求,以及其中,表示所述缓冲服务不应该从所述存储器高速缓存寻找所述请求的数据的所述信息,包括与所述第二请求相关联的标志。25.如权利要求23所述的方法,其特征在于,调用所述客户端高速缓存机构还包括,在所述缓冲服务处接收所述第二请求,从所述信息认出所述缓冲服务不应该从所述存储器高速缓存寻找所述请求的数据,以及基于与由所述客户端高速缓存后处理修改的所述文件相关联的信息,调用所述客户端高速缓存机构。26.如权利要求23所述的方法,还包括,通过所述客户端高速缓存机制获得所述请求的数据,以及从所述客户端高速缓存机构向所述缓冲服务提供所述请求的数据,所述缓冲服务完成所述第二请求。27.如权利要求26所述的方法,其特征在于,完成所述第二请求的步骤包括,将数据返回至所述高速缓存/存储器机构组件,所述高速缓存/存储器管理组件基于所述返回的数据完成所述第一请求。28.如权利要求27所述的方法,其特征在于,所述高速缓存/存储器管理组件完成所述第一请求,包括将从所述第二请求获得的请求的数据写到所述存储高速缓存,以及基于所述写请求修改所述请求的数据。29.如权利要求18所述的方法,还包括,接收关闭请求。30.如权利要求29所述的方法,还包括,在响应所述关闭请求时,将相对于客户端持久性存储器中相应的数据修改的所述存储器中的任何数据刷新到所述客户端高速缓存机构,用于写到所述客户端持久的存储器。31.如权利要求30所述的方法,其特征在于,刷新任何数据的步骤包括,发出一写请求。32.如权利要求29所述的方法,还包括,在所述客户端持久性存储器中关闭相应于所述网络文件的文件拷贝。33.如权利要求29所述的方法,还包括,在响应于所述关闭请求时,调用所述重定向器,以便将相对于在所述网络文件中相应的数据修改的在所述客户端持久性存储器中的任何数据刷新到所述服务器,用于写到所述网络文件。34.计算机可读介质,具有用于执行如权利要求1所述的方法的计算机可执行指令。35.在计算机系统中,一种方法包括接收相应于网络文件的数据的I/O请求;调用客户端高速缓存预处理,所述客户端高速缓存预处理确定所述计算机系统是否连接至网络,以及如果这样,返回表示要求更多处理以满足所述请求的一状态值;以及评估所述状态值,以及如果所述状态值表示要求更多处理a)调用与包含所述网络文件的服务器相关联的重定向器;b)调入缓冲服务以确定在所述计算机系统上存储器缓冲中能否处理所述请求;c)在所述缓冲服务处确定所述相应的文件数据是否被缓冲在所述计算机系统上存储器高速缓存中,以及1)如果被缓冲,在所述缓冲服务处完成所述I/O请求,以及2)如果未被缓冲,调用客户端高速缓存机构,所述客户端高速缓存机构确定相应于所述请求的数据是否存在于客户端高速缓存存储器中,以及如果这样,从所述客户端高速缓存存储器获得相应于所述请求的数据,以及如果否,请求所述重定向器通过所述服务器处理所述请求。36.如权利要求35所述的方法,其特征在于,接收I/O请求的步骤包括接收读请求。37.如权利要求35所述的方法,其特征在于,接收I/O请求的步骤包括接收写请求。38.如权利要求35所述的方法,其特征在于,所述客户端高速缓存预处理确定所述计算机系统连接到网络,其中,接收I/O请求的步骤包括,接收读请求,其中,所述缓冲服务确定所述请求的数据被缓冲在所述计算机系统上所述存储器高速缓存中以及完成所述读请求,以及还包括,提供对所述数据的访问包括在响应所述读请求时用来自所述存储器高速缓存的数据填充一缓冲器。39.如权利要求35所述的方法,其特征在于,所述客户端高速缓存预处理确定所述计算机系统连接至网络,其中,接收I/O请求包括接收读请求,其中,所述缓冲服务确定所述请求的数据没有被缓冲在所述计算机系统上所述存储器高速缓存中以及调用客户端高速缓存机构,以及其中,所述客户端高速缓存从所述客户端高速缓存存储器获得相应于所述请求的所述数据,以及将数据返回至所述缓冲服务。40.如权利要求35所述的方法,其特征在于,调用所述客户端高速缓存机构的步骤包括生成一第二读请求。41.如权利要求40所述的方法,其特征在于,所述第二读请求是由所述缓冲服务的高速缓存/存储器管理组件生成的,是由所述缓冲服务的一被重定向的缓冲子系统接收的,以及其中,调用所述客户端高速缓存机构的步骤还包括从所述缓冲子系统调用所述客户端高速缓存机构以处理所述第二请求。42.如权利要求41所述的方法,其特征在于,从所述重定向的缓冲子系统调用所述客户端高速缓存机构的步骤包括,读在与所述文件相关联的分派表中的指针。43.如权利要求42所述的方法,其特征在于,所述客户端高速缓存机构包括代码,当执行所述代码时覆写在所述分派表中的指针,以便调用所述客户端高速缓存机构。44.如权利要求35所述的方法,其特征在于,所述客户端高速缓存预处理确定所述计算机系统连接至网络,其中,所述接收I/O请求的步骤包括接收一写请求,以及其中,所述缓冲服务确定所述请求的数据是否被缓冲在所述计算机系统上所述的存储器高速缓存以及完成包括将数据写到所述存储器高速缓存的所述写请求。45.如权利要求35所述的方法,其特征在于,所述客户端高速缓存预处理确定所述计算机系统连接至网络,其中,接收I/O请求的步骤包括接收写请求,其中,所述缓冲服务确定所述请求的数据没有被缓冲在所述计算机系统上所述存储器高速缓存中以及调用所述客户端高速缓存机构,其中,所述客户端高速缓存机构从所述客户端高速缓存获得相应于所述请求的数据以及返回相应的数据,以及通过将来自所述客户端高速缓存机构和来自与所述写请求相关联的写数据的数据写到所述存储器,缓冲服务完成所述请求。46.如权利要求35所述的方法,其特征在于,调用所述客户端高速缓存机构的步骤包括生成读请求。47.如权利要求46所述的方法,其特征在于,所述读请求是由所述缓冲服务的高速缓存/存储器管理组件生成的,是由所述缓冲服务的一重定向的缓冲子系统接收的,以及其中,调用所述客户端高速缓存机构的步骤还包括从所述缓冲子系统调用所述客户端高速缓存机构。48.如权利要求47所述的方法,其特征在于,从所述重定向的缓冲子系统调用所述客户端高速缓存机构的步骤包括,读在与所述文件相关联的分派表中的指针。49.如权利要求49所述的方法,其特征在于,所述客户端高速缓存机构包括代码,当执行所述代码时覆写在分派表中的所述指针,以便调用所述客户端高速缓存机构。50.如权利要求35所述的方法,还包括,覆写在与所述文件相关联的一数据结构中的重定向器信息,使得缓冲服务调用所述客户端高速缓存机构代替所述重定向器。51.如权利要求35所述的方法,其特征在于,所述客户端高速缓存预处理确定所述计算机系统不与网络连接,以及还包括,确定相应于所述请求的数据是否存在于存储器高速缓存中,以及如果是,通过在所述存储器高速缓存中的相应数据处理所述请求。52.如权利要求35所述的方法,其特征在于,所述客户端高速缓存预处理确定所述计算机系统不连接至网络,以及还包括,确定相应于所述请求的数据的数据是否存在于所述客户端高速缓存持久性存储器中,以及如果是,通过在所述客户端高速缓存持久性存储器中的相应数据处理所述请求。53.如权利要求35所述的方法,其特征在于,所述客户端高速缓存预处理确定所述计算机系统不连接至网络,以及还包括,确定相应于所述请求的数据是否不存在于存储器高速缓存中,以及如果否,调用所述客户端高速缓存机构以确定相应于所述请求的数据是否存在于所述客户端高速缓存持久性存储器中。54.计算机可读介质,具有用于执行如权利要求35所述的方法的计算机可执行指令。55.在计算环境中,一个系统包括,多个重定向器,每个重定向器相应于相对于另外的重定向器的协议不同的协议;缓冲服务,缓冲用于网络文件的文件数据,所述缓冲服务连接用于与所述重定向器通信;客户端高速缓存机构,包括客户端高速缓存预处理处理器和客户端高速缓存后处理处理器;以及多重提供器,接收指向网络文件的创建请求,以及在响应中,调用客户端高速缓存预处理处理器、至少所述多个重定向器之一和所述客户端高速缓存后处理处理器。56.如权利要求55所述的系统,其特征在于,所述预处理处理器将数据结构与在逻辑名字空间中的所述网络数据的拷贝相关联,以及其中,所述后处理处理器确定相关于所述网络文件的网络连接状态是离线的,以及基于所述离线网络连接状态配置所述数据结构。57.如权利要求56所述的系统,其特征在于,所述多重提供器接收指向所述网络文件的一后续的I/O请求以及调用所述预处理处理器,所述预处理处理器从所述数据结构确定所述网络连接状态是离线的,以及尝试在本地满足后续的I/O请求。58.如权利要求57所述的系统,其特征在于,所述预处理通过将后续的I/O请求提供至所述缓冲服务,尝试在本地满足后续的I/O请求。59.如权利要求58所述的系统,其特征在于,所述缓冲服务包括一重定向的缓冲子系统和管理存储器高速缓存的重定向的高速缓存/存储器管理器组件,以及所述高速缓存/存储器管理器组件确定相应于后续I/O请求的数据是否存在于存储器高速缓存中,使得所述缓冲服务能完成后续的I/O请求。60.如权利要求58所述的系统,所述缓冲服务不能直接满足后续的I/O请求,以及调用所述客户端高速缓存机构以确定相应于后续I/O请求的数据是否存在于与所述客户端高速缓存机构相关联的离线存储器中,使得所述客户端高速缓存机构能提供数据以完成后续的I/O请求。61.如权利要求60所述的系统,其特征在于,所述缓冲服务包括一缓冲子系统和管理存储器高速缓存的高速缓存/存储器管理器组件,以及所述高速缓存/存储器管理器组件确定相应于后续I/O请求的数据是否存在于所述存储器高速缓存中,以及通过发出分页I/O读调用所述客户端高速缓存机构。62.如权利要求60所述的系统,所述重定向的子系统接收所述分页I/O请求以及在响应中,基于在与所述文件相关联的分派表中的指针调用例程。63.如权利要求62所述的系统,其特征在于,在分派表中的所述指针指向所述客户端高速缓存机构的例程。64.在计算环境中,一种方法包括接收来自应用程序启动的、指向在服务器上创建或打开网络文件的I/O请求;调用客户端高速缓存预处理,所述客户端高速缓存预处理声明在逻辑名字空间中的所述文件的拷贝的路径,以及创建或找到相应于所述文件的拷贝的基于逻辑连接的数据结构和基于文件的数据结构,以及a)如果所述客户端高速缓存预处理知道连接是离线的,所述客户端高速缓存预处理返回一状态,所述状态使客户端高速缓存后处理在不调用重定向器的情况下不被调用,所述客户端高速缓存后处理准备数据结构,使得在所述客户端高速缓存预处理中离线地处理后续的I/O请求;或者b)如果不知道所述连接是离线的,1)返回一状态,所述状态使至少一个重定向器被调用,2)调用至少一个重定向器,以及i)如果没有重定向器声明物理名字空间中所述网络文件的拷贝的路径,调用所述客户端高速缓存后处理,所述客户端高速缓存后处理准备所述数据结构,使得在所述客户端高速缓存预处理中离线地处理后续的I/O请求;以及ii)如果一相应的重定向器声明在物理名字空间中所述网络文件的拷贝的路径,所述重定向器提供用于关联所述文件的重定向器信息,使得缓冲服务在被所述重定向器调用时回调所述重定向器,以及调用客户端高速缓存后处理,所述客户端高速缓存客户端高速缓存后处理将客户端高速缓存机构插入到声明所述的路径的相应重定向器与所述缓冲服务之间的通信流,包括修改与所述文件相关联的所重定向器信息,使得所述缓冲服务在由所述重定向器调用时将回调所述客户端高速缓存机构。65.如权利要求64所述的方法,其特征在于,所述连接是在线的,以及还包括,接收指向所述网络文件的数据的I/O请求,提供所述I/O请求至所述重定向器,从所述重定向器调用所述缓冲服务,所述缓冲服务包括高速缓存/存储器管理组件,所述高速缓存/存储器管理组件在存储器高速缓存中查找所述请求的数据,以及如果找到,所述缓冲服务完成所述请求,以及如果未找到,所述缓冲服务调用所述客户端高速缓存机构。66.如权利要求65所述的方法,还包括,通过所述客户端高速缓存机构获得所述请求的数据,以及从所述客户端高速缓存机构向所述缓冲服务提供所述请求的数据。67.如权利要求65所述的方法,其特征在于,所述客户端高速缓存机构在客户端持久性存储器中寻找所述请求的数据,以及如果未找到,调用所述重定向器向所述服务器请求所述请求的数据。68.如权利要求67所述的方法,其特征在于,重定向器找出所述数据,以及其中,在响应所述缓冲服务对所述客户端高速缓存机构的调用时,所述客户端高速缓存将所述数据返回至所述缓冲服务。69.如权利要求65所述的方法,其特征在于,通过由所述高速缓存/存储器管理组件生成的第二请求,所述缓冲服务调用所述客户端高速缓存机构。70.如权利要求69所述的方法,其特征在于,所述缓冲服务通过接收所述第二请求调用所述客户端高速缓存机构,以及通过在与所述文件相关联的分派表中的信息调用所述客户端-机构。71.如权利要求64所述的方法,其特征在于,所述连接是离线的,以及还包括,接收指向所述网络文件的数据的I/O请求,将所述I/O请求提供至所述客户端高速缓存预处理,从所述客户端高速缓存预处理调用所述缓冲服务,所述缓冲服务包括高速缓存/存储器管理组件,所述高速缓存/存储器管理组件在存储器高速缓存中查找所述请求的数据,以及如果找到,所述缓冲服务完成所述请求,以及如果未找到,所述缓冲服务调用所述客户端高速缓存机构。72.如权利要求71所述的方法,还包括,通过所述客户端高速缓存机构获得所述请求的数据,以及从所述客户端高速缓存机构向所述缓冲服务提供所述请求的数据。73.如权利要求71所述的方法,其特征在于,通过由所述高速缓存/存储器管理组件生成的第二请求,所述缓冲服务调用所述客户端高速缓存机构。74.如权利要求73所述的方法,其特征在于,所述缓冲服务通过接收所述第二请求,调用所述客户端高速缓存机构,以及通过在与所述文件相关联的分派表中的信息调用所述客户端-机构。75.计算机可读介质,具有用于执行如权利要求64所述的方法的计算机可执行的指令。76.在计算机系统中,一种方法包括接收相应于网络文件的数据的I/O请求;确定用于所述文件的网络连接是否被建立为离线,以及a)如果用于所述文件的连接被建立为离线,调入缓冲服务以确定能否在所述计算机系统上存储器缓冲中处理所述请求,以及如果被缓冲,在所述缓冲服务完成所述I/O请求,以及如果未被缓冲,调用客户端高速缓存机构,所述客户端高速缓存机构确定相应于所述请求的数据是否在客户端高速缓存存储器中,以及如果是,从所述客户端高速缓存存储器获得相应于所述请求,用于完成所述I/O请求;以及b)如果用于所述文件的连接没有被建立为离线,调用与包含所述网络文件的服务器相关联的重定向器,所述重定向器调入缓冲服务以确定能否在所述计算机系统上存储器缓冲器内处理所述请求,在所述缓冲服务处确定相应的文件数据是否被缓冲在所述计算机系统上存储器高速缓存中,以及如果被缓冲,在所述缓冲服务处完成所述I/O请求,以及如果未被缓冲,调用客户端高速缓存机构,所述客户端高速缓存机构确定相应于所述请求的数据是否存在于客户端高速缓存存储器中,以如果是,从所述客户端高速缓存存储获得相应于所述请求的数据,以及如果否,请求所述重定向器通过所述服务器处理所述请求。77.如权利要求76所述的方法,其特征在于,通过由所述缓冲服务的高速缓存/存储器管理组件生成第二请求,所述缓冲服务调用所述客户端高速缓存机构。78.如权利要求77所述的方法,其特征在于,所述缓冲服务通过接收所述第二请求调用所述客户端高速缓存机构,以及通过在与所述文件相关联的分派表中的信息调用所述客户端-机构。79.如权利要求76所述的方法,其特征在于,确定用于所述文件的网络连接是否被建立的步骤包括,评估与所述文件相关联的数据结构。80.计算机可读介质,具有用于执行如权利要求76所述的方法的计算机可执行指令。全文摘要自动而透明地处理网络文件数据的客户端高速缓存的系统和方法,它与任何远程文件处理协议无关。协议无关的客户端高速缓存机是作为处理指向网络的文件相关请求的一种服务插入的,并且尝试通过客户端高速缓存持久性存储器来满足该请求。经由在文件创建请求时的预处理和后处理调用,高速缓存机创建文件相关的数据结构,并把信息覆写在那些结构中,缓冲服务使用那些结构来回调网络重定向器,由此客户端高速缓存机将自己插入到网络重定向器与缓冲服务之间的通信流中。一旦在通信流中,指向网络的文件读写请求可在适当的时候透明地由客户端高速缓存机构处理,在需要满足请求时还可指示重定向器与服务器通信。文档编号H04L29/06GK1531303SQ20041002868公开日2004年9月22日申请日期2004年3月11日优先权日2003年3月12日发明者凌云,N·福克,S·帕迪卡,R·库马,云凌,峡申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1