CN104144221B - 文件访问方法及装置 - Google Patents
文件访问方法及装置 Download PDFInfo
- Publication number
- CN104144221B CN104144221B CN201410407787.3A CN201410407787A CN104144221B CN 104144221 B CN104144221 B CN 104144221B CN 201410407787 A CN201410407787 A CN 201410407787A CN 104144221 B CN104144221 B CN 104144221B
- Authority
- CN
- China
- Prior art keywords
- access
- api
- behalf
- file
- local
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明公开了一种文件访问方法及装置。基于本发明,客户端中设置有对应各文件管理功能的代理API,用于实现对访问的重定向调度。其中,若宿主程序通过代理API发起的访问被该代理API识别为本地访问,则对指定文件的访问能够被该代理API定向至客户端中与该代理API对应相同文件管理功能的本地文件管理API,若宿主程序发起的访问被该代理API识别为远程访问,则对指定文件的访问能够被该代理API定向至服务端中与该代理API对应相同文件管理功能的远端文件管理API。从而,不但能够满足客户端对于远程文件的实时可靠和灵活的访问要求,而且还能够同时兼顾到本地与远程文件访问方式的一致性。
Description
技术领域
本发明涉及文件访问技术,特别涉及基于代理API(Application ProgrammingInterface,应用程序编程接口)的调度实现在本地和远程利用同功能的文件管理API访问文件的一种文件访问方法及装置。
背景技术
对于与服务端联网的客户端来说,除了能够访问其存放的本地文件之外,对服务端存放的远程文件同样存在访问需求。例如,在学校机房或网吧等公共场所,客户端需要频繁访问服务器存放的远程文件。
其中,对于远程文件的访问,现有技术通常采用在服务端为客户端部署虚拟磁盘服务、或由客户端与服务端之间建立FTP(File Transfer Protocol,文件传输协议)连接。
然而,上述两种方式却存在着如下的不足:
对于基于虚拟盘的访问方式,由于客户端会对虚拟盘文件系统的元数据进行缓存、且服务端对虚拟盘修改的内容难以实时被客户端正确感知而导致数据不能实时同步,因而无法满足客户端对于远程文件的实时可靠和灵活的访问要求;
对于建立FTP连接的方式,虽然对远程文件的访问不存在前后端数据不一致问题,但是,利用FTP连接所实现的访问仅适用于远程文件、而不涉及对本地文件的访问,因此,本地文件和远程文件的访问需要采用完全不同的方式,这增加了客户端端应用程序设计的复杂度。
如上可见,现有技术不能同时兼顾到客户端对于远程文件的实时可靠和灵活的访问要求、以及本地与远程文件访问方式的一致性。
发明内容
有鉴于此,本发明提供了基于代理API的调度实现在本地和远程利用同功能函数访问的一种文件访问方法及装置。
本发明提供的一种文件访问方法,该客户端中配置有对应各文件管理功能的代理API;
当客户端的宿主程序通过对应任一代理API发起对指定文件的访问时,该文件访问方法通过调用该代理API执行如下的步骤:
步骤a1、利用该代理API判断宿主程序发起的访问的类型,若属于本地访问,则触发步骤a2,若属于远程访问,则触发步骤a3;
步骤a2、利用该代理API在客户端触发与该代理API对应相同文件管理功能的本地文件管理API、以通过该本地文件管理API实现对指定文件的本地访问;
步骤a3、利用该代理API通过网络传输触发服务端中与该代理API对应相同文件管理功能的远端文件管理API、以通过该远端文件管理API实现对指定文件的远程访问。
优选地,客户端的宿主程序通过向代理API下发对指定文件的访问路径发起对指定文件的访问,并且:
步骤a1利用代理API将宿主程序下发的访问路径与预定路径格式进行匹配、以实现对访问类型的判断,若宿主程序下发的访问路径与本地访问路径的预定格式匹配,则表示当前发起的访问属于本地访问,若宿主程序下发的访问路径与远程访问路径的预定格式匹配,则表示当前发起的访问属于远程访问;其中,本地访问路径的预定格式为符合客户端操作系统约定的文件路径访问格式;远程访问路径的预定格式中包括远程文件访问代理标识、指向服务端的网络地址和端口、服务端提供的服务点名称、以及指定文件在该服务点下的存放路径;
步骤a2利用代理API将访问路径下发至客户端中与其对应相同文件管理功能的本地文件管理API、以实现对客户端中的该本地文件管理API的触发;
步骤a3利用代理API将去除了远程文件访问代理标识以及指向服务端的网络地址和端口的访问路径通过网络传输至服务端、以实现对服务端中与该代理API对应相同文件管理功能的远端文件管理API的触发。
优选地,远程访问路径的预定格式中进一步包括验证码。
优选地,当通过对应任一代理API发起的访问产生向该代理API反馈的句柄时,该文件访问方法通过对该代理API的调用进一步执行如下的步骤:
步骤b1、利用该代理API判断反馈该句柄的源端,若该句柄来自与该代理API在本地对应相同文件管理功能的文件管理API,则触发步骤b2,若该句柄来自服务端,则触发步骤b3;
步骤b2、利用该代理API向宿主程序上报接收到的句柄;
步骤b3、利用该代理API为接收到的句柄增加表示远程访问的标记、并将带有该标记的句柄向宿主程序上报。
优选地,客户端的宿主程序进一步通过向代理API下发指定文件的句柄发起对指定文件的访问,并且:
步骤a1利用代理API判断宿主程序下发的句柄是否带有表示远程访问的标记、以实现对访问类型的判断,若未带表示远程访问的标记,则表示当前发起的访问属于本地访问,若带有表示远程访问的标记,则表示当前发起的访问属于远程访问;
步骤a2利用代理API将句柄下发至客户端中与其对应相同文件管理功能的本地文件管理API、以实现对客户端中的该本地文件管理API的触发;
步骤a3利用代理API将去除表示远程访问的标记的句柄通过网络传输至服务端、以实现对服务端中与该代理API对应相同文件管理功能的远端文件管理API的触发。
本发明提供的一种文件访问装置,该文件访问装置应用于客户端,该客户端中配置有对应各文件管理功能的代理API;
当客户端的宿主程序通过对应任一代理API发起对指定文件的访问时,该文件访问装置通过调用该代理API运行如下的模块:
访问判别模块,利用该代理API判断宿主程序发起的访问的类型,若属于本地访问,则触发本地访问模块,若属于远程访问,则触发远程访问模块;
本地访问模块,利用该代理API在客户端触发与该代理API对应相同文件管理功能的本地文件管理API、以通过该本地文件管理API实现对指定文件的本地访问;
远程访问模块,利用该代理API通过网络传输触发服务端中与该代理API对应相同文件管理功能的远端文件管理API、以通过该远端文件管理API实现对指定文件的远程访问。
优选地,客户端的宿主程序通过向代理API下发对指定文件的访问路径发起对指定文件的访问,并且:
访问判别模块利用代理API将宿主程序下发的访问路径与预定路径格式进行匹配、以实现对访问类型的判断,若宿主程序下发的访问路径与本地访问路径的预定格式匹配,则表示当前发起的访问属于本地访问,若宿主程序下发的访问路径与远程访问路径的预定格式匹配,则表示当前发起的访问属于远程访问;其中,本地访问路径的预定格式为符合客户端操作系统约定的文件路径访问格式;远程访问路径的预定格式中包括远程文件访问代理标识、指向服务端的网络地址和端口、服务端提供的服务点名称、以及指定文件在该服务点下的存放路径;
本地访问模块利用代理API将访问路径在本地下发至与其对应相同文件管理功能的文件管理API、以实现在本地触发与该代理API对应相同文件管理功能的文件管理API;
远程访问模块利用代理API将去除了远程文件访问代理标识以及指向服务端的网络地址和端口的访问路径通过网络传输至服务端、以实现对服务端中与该代理API对应相同文件管理功能的远端文件管理API的触发。
优选地,远程访问路径的预定格式中进一步包括验证码。
优选地,当通过对应任一代理API发起的访问产生向该代理API反馈的句柄时,该文件访问装置通过对该代理API的调用进一步运行如下的模块:
句柄判别模块,利用该代理API判断反馈该句柄的源端,若该句柄来自与该代理API在本地对应相同文件管理功能的文件管理API,则触发本地句柄模块,若该句柄来自服务端,则触发远端句柄模块;
原态上报模块,利用该代理API向宿主程序上报接收到的句柄;
标记上报模块,利用该代理API为接收到的句柄增加表示远程访问的标记、并将带有该标记的句柄向宿主程序上报。
优选地,客户端的宿主程序进一步通过向代理API下发指定文件的句柄发起对指定文件的访问,并且:
访问判别模块利用代理API判断宿主程序下发的句柄是否带有表示远程访问的标记、以实现对访问类型的判断,若未带表示远程访问的标记,则表示当前发起的访问属于本地访问,若带有表示远程访问的标记,则表示当前发起的访问属于远程访问;
本地访问模块利用代理API将句柄下发至客户端中与其对应相同文件管理功能的本地文件管理API、以实现对客户端中的该本地文件管理API的触发;
远程访问模块利用代理API将去除表示远程访问的标记的句柄通过网络传输至服务端、以实现对服务端中与该代理API对应相同文件管理功能的远端文件管理API的触发。
由此可知,基于本发明,不但客户端和服务端中设置有对应各文件管理功能的文件管理API,而且,客户端中还额外设置有对应各文件管理功能的代理API、用以实现对客户端的宿主程序所发起的访问的重定向调度。其中,若宿主程序通过任一代理API发起的访问被该代理API识别为本地访问,则对指定文件的访问能够被该代理API定向至客户端中与该代理API对应相同文件管理功能的本地文件管理API,若宿主程序通过任一代理API发起的访问被该代理API识别为远程访问,则对指定文件的访问能够被该代理API定向至服务端中与该代理API对应相同文件管理功能的远端文件管理API。从而,利用本发明,能够满足客户端对于远程文件的实时可靠和灵活的访问要求,而且,客户端的宿主程序能以一致的代理API方式对本地和远程文件进行访问,因而还能够同时兼顾到本地与远程文件访问方式的一致性。
附图说明
图1为本发明实施例中的文件访问方法的示例性流程示意图;
图2至图4为如图1所示的示例性流程的实例示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
在本实施例中,对于客户端的宿主程序针对指定文件所发起的以任意文件管理功能的方式实现的访问,若该指定文件位于客户端、即为本地文件,则可以由客户端中对应该文件管理功能的文件管理(File Management)API予以实现;反之,若该指定文件位于服务端、即为远程文件,则可以由服务端中对应该文件管理功能的文件管理API来实现。也就是说,对于任意指定文件的访问,都可以由客户端或服务端中对应相同文件管理功能的文件管理API予以实现。
为了便于区分客户端和服务端中的文件管理API,本文后续将客户端中的文件管理API称作本地文件管理API、将服务端中的文件管理API称作远端文件管理API。其中,无论是本地文件管理API还是远端文件管理API,只要能够实现相同的功能,本实施例并不局限于具体的表现形式。
例如,对于Windows操作系统来说,文件管理API表现为文件管理函数(FileManagement Function)。同理,而对于其他操作系统来说,文件管理API则会表现为其他形式。若客户端和服务端中都运行着Windows操作系统,则本地的文件管理API和远端文件管理API均为File Management Function,但若客户端和服务端中只有一方运行Windows操作系统、或双方都运行着其他操作系统,则同样不会影响本实施例的实现。
而且,本实施例中所提及的文件管理功能,并不是在微观上局限于一个文件管理API所能够实现的特定功能,而是在宏观上表示对文件实现的管理功能,即,同一个文件管理功能可能对应着一个文件管理API、也可能对应着多于一个文件管理API。
例如,在Windows操作系统中,文件管理API表现为File Management Function,其中,对于“打开”这一文件管理功能,CreateFile(创建文件)和OpenFile(打开文件)这两种File Management Function都能够实现,因此,会至少存在CreateFile和OpenFile这两种File Management Function、即至少两种文件管理API对应“打开”这一文件管理功能。当然,其他文件管理功能也会有类似的情况,即,多于一个File Management Function、也即文件管理API能够实现同一种文件管理功能。
相应地,对于前文提及的对应相同文件管理功能的本地文件管理API和远端文件管理API,可以是相同类型的文件管理API,也可以是能够实现相同文件管理功能、但类型不同的文件管理API。
例如,若客户端和服务端中都运行着Windows操作系统,则对应“打开”这一文件管理功能,在客户端中调用触发的本地文件管理API可以是CreateFile,在服务端中调用触发的远端文件管理API则可以是OpenFile。
另外,对于本地文件管理API和远端文件管理API的调用选择,需要依据发起的访问的类型来判断,即,本地访问调用本地文件管理API,远程访问调用同功能的远端文件管理API。为此,本实施例还在客户端中针对每一种文件管理功能分别设置有对应的代理API,由该代理API识别访问的类型、并将访问择一地调度至对应同一文件管理功能的本地文件管理API或远端文件管理API。
基于上述原理,本实施例提供了一种文件访问方法,该文件访问方法应用于客户端,该客户端中配置有对应各文件管理功能的代理API。请参见图1,当客户端的宿主程序对任一代理API发起对指定文件的访问时,该文件访问方法通过调用该代理API执行如下的步骤:
步骤101,利用该代理API判断宿主程序发起的访问的类型,若属于本地访问,则触发步骤102,若属于远程访问,则触发步骤103;
步骤102,利用该代理API在客户端中触发与该代理API对应相同文件管理功能的本地文件管理API、以通过该本地文件管理API实现对指定文件的本地访问,然后结束当前流程;
步骤103,利用该代理API通过网络传输触发服务端中与该代理API对应相同文件管理功能的远端文件管理API、以通过该远端文件管理API实现对指定文件的远程访问,然后结束当前流程。
基于上述流程可见,基于本实施例中的文件访问方法,不但客户端和服务端中设置有对应各文件管理功能的文件管理API,而且,客户端中还额外设置有对应各文件管理功能的代理API、用以实现对客户端的宿主程序所发起的访问的重定向调度。其中,若宿主程序通过任一代理API发起的访问被该代理API识别为本地访问,则对指定文件的访问能够被该代理API定向至客户端中与该代理API对应相同文件管理功能的本地文件管理API,若宿主程序通过任一代理API发起的访问被该代理API识别为远程访问,则对指定文件的访问能够被该代理API定向至服务端中与该代理API对应相同文件管理功能的远端文件管理API。
从而,利用本实施例中的文件访问方法,客户端对远程文件的访问不存在服务端对虚拟盘修改的文件系统元数据难以实时同步问题,因而能够满足客户端对于远程文件的实时可靠和灵活的访问要求,而且,客户端的宿主程序能以一致的代理API方式对本地和远程文件进行访问,因而还能够同时兼顾到本地与远程文件访问方式的一致性。
为了更好地理解本实施例中的文件访问方法,下面以客户端中运行Windows操作系统为例,对本实施例中的文件访问方法进行举例说明。在下述的举例说明中,以FileManagement Function表示本地文件管理API,以RFSA_<FunctionName>(Remote FileSystem Agent,远程文件系统代理)表示代理API,以同功能文件管理API表示远端文件管理API。
在如图2所示的实例中,客户端的宿主程序通过向代理API下发对指定文件的访问路径发起对指定文件的访问,并且,对该指定文件的访问的目的在于对该指定文件实现“打开”这一文件管理功能。请参见图2,当客户端的宿主程序向RFSA_OpenFunction下发对指定文件的访问路径、以发起对指定文件执行“打开”这一文件管理功能的访问时,本实施例中的文件访问方法通过调用该RFSA_OpenFunction执行如下的步骤:
步骤201,利用RFSA_OpenFunction将宿主程序下发的访问路径与预定路径格式进行匹配,以判断宿主程序下发的访问路径的类型,从而依据判断出的访问路径的类型实现对访问类型的判断;
若宿主程序下发的访问路径与本地访问路径的预定格式匹配,则表示当前发起的访问属于本地访问,并触发步骤202;
若宿主程序下发的访问路径与远程访问路径的预定格式匹配,则表示当前发起的访问属于远程访问,并触发步骤203。
在本步骤中,本地访问路径的预定格式可以为符合客户端的操作系统约定的文件路径访问格式,这里所述的文件路径访问格式可以是绝对路径或相对路径。例如,对于本实例在客户端运行的Windows操作系统来说,本地访问路径的预定格式中包括客户端的磁盘符、以及指定文件在该磁盘符下的存放路径,该本地访问路径的预定格式可以具体表示为<本地磁盘符>\<存放路径>,如C:\A.TXT。
而远程访问路径的预定格式则可以采用本实例中提供的格式,即,远程访问路径的预定格式中可以包括远程文件访问代理标识(即“RFSA:\\”)、指向服务端的网络地址(即IP地址)和端口(即Port)、服务端提供的服务点(Service Point,SP)名称、以及指定文件在该服务点下的存放路径。该远程访问路径的预定格式可以具体表示为RFSA:\\<IP:Port>\<SP>\<Path>,如RFSA:\\192.168.0.2:1234\DEMOSP\A.TXT。更优地,为了实现服务端对远程访问的安全认证,远程访问路径的预定格式中也可以进一步增加验证码,相应地,远程访问路径的预定格式可以进一步表示为RFSA:\\<IP:Port>[:Key]\<SP>\<Path>。
另外,本步骤可以看作是对如图1所示流程中的步骤101的一种变形,相应地,由本步骤判断出本地访问后触发的步骤202、以及由本步骤判断出远程访问后触发的步骤203,则可以可以分别看作是对如图1所示流程中的步骤102和步骤103的一种变形。
步骤202,利用RFSA_OpenFunction将访问路径下发至客户端中与该RFSA_OpenFunction对应相同文件管理功能“打开”的CreateFile,以实现对客户端中的CreateFile的触发,从而利用客户端中的CreateFile实现对指定文件的本地访问,然后,结束当前的流程。
当然,由于OpenFile同样与该RFSA_OpenFunction对应着相同的文件管理功能“打开”,因而作为替代,访问路径在本步骤中也可以下发给客户端中的OpenFile。
步骤203,利用RFSA_OpenFunction将访问路径中的远程文件访问代理标识以及指向服务端的网络地址和端口去除后、将包括服务点名称以及该服务点下存放路径的部分访问路径信息通过网络传输至服务端,以实现对服务端中与该RFSA_OpenFunction对应相同文件管理功能“打开”的同功能文件管理API的触发,从而利用服务端中的同功能文件管理API实现对指定文件的远程访问,然后结束当前流程。
即,在本步骤中通过网络传输至服务端的访问路径并不是宿主程序下发的完整访问路径信息,而是去除了远程文件访问代理标识以及指向服务端的网络地址和端口的部分访问路径信息,其可以表示为<SP>\<Path>(访问路径中不含验证码的情况)或[:Key]\<SP>\<Path>(访问路径中含有验证码的情况)。
另外,若服务端中运行了Windows操作系统,则本步骤在服务端触发的同功能文件管理API同样可以为CreateFile或OpenFile,当然,若服务端中运行了其他操作系统,则本步骤在服务端触发的同功能文件管理API可以为该操作系统中能够实现“打开”这一文件管理功能的任意同功能API。
上述如图2所示的流程仅仅是以对指定文件实现“打开”这一文件管理功能为例,而对于其他文件管理功能,同样适用于上述如图2所示的流程。例如,当对指定文件实现“删除”文件管理功能时,步骤201中对应于“打开”这一文件管理功能的RFSA_OpenFunction则会替代为对应“删除”文件管理功能的RFSA_DeleteFunction,相应地,在步骤202触发的客户端中的File Management Function会替代为例如DeleteFile(删除文件),而在步骤203触发的服务端中的同功能文件管理API则会替代为例如DeleteFile或与DeleteFile同功能的API。
由此可见,基于本实施例中的文件访问方法,对于支持以访问路径发起访问的文件管理功能,其对应的RFSA_<FunctionName>能够依据访问路径来辨别当前的访问属于本地访问还是远程访问,若属于本地访问,则对指定文件的访问能够被该RFSA_<FunctionName>定向至本地对应的File Management Function,若属于远程访问,则对指定文件的访问能够被该RFSA_<FunctionName>定向至服务端中与对应的同功能文件管理API。
此外,对于支持以访问路径发起访问的某些文件管理功能来说,例如图2中所举的“打开”这一文件管理功能,当触发了对指定文件的访问之后,无论所触发的访问是本地访问还是远程访问,都会产生反馈的句柄。并且,反馈的句柄会传送到负责调度该访问的RFSA_<FunctionName>、并由该RFSA_<FunctionName>向客户端的宿主程序上报。
此后,宿主程序利用上报的句柄,可以在后续实现支持以句柄发起访问的其他文件管理功能,例如“读取”等文件管理功能。
然而,待宿主程序利用上报的句柄实现其他文件管理功能的访问过程时,由于句柄仅仅是表示对象或实例的特定数值、而无法像访问路径那样具有位置指向性,因此,对应其他文件管理功能对应的RFSA_<FunctionName>无法依据宿主程序下发的句柄判断当前的访问属于本地访问还是远程访问,从而导致利用句柄发起的远程访问无法实现。
为了避免上述情况,本实施例可以令RFSA_<FunctionName>在接收到服务端反馈的句柄时,为句柄增加表示远程访问的标记,然后再将带有该标记的句柄上报至宿主程序,从而,当宿主程序再将带有该标记的句柄下发给其他RFSA_<FunctionName>时,即可由其他RFSA_<FunctionName>依据句柄携带的该标记来辨识远程访问。
为了清楚地区分以访问路径发起访问的文件管理功能、以及以句柄发起访问的文件管理功能,可以将前者相对地认为是第一文件管理功能、并将后者相对地认为是第二文件管理功能。
基于此,请参见图3,继续图2的流程,并仍延续图2中以“打开”这一文件管理功能(即第一文件管理功能)访问指定文件为例的假定条件,在执行了图2中的步骤202或步骤203之后,当对指定文件的访问产生向RFSA_OpenFunction反馈的句柄时,本实施例中的文件访问方法通过对客户端中的RFSA_OpenFunction的调用(即,延续对图2所示流程中的RFSA_OpenFunction的调用)进一步执行如下的步骤:
步骤301,利用RFSA_OpenFunction判断反馈该句柄的源端,若该句柄来自客户端中的CreateFile,即,当前流程是在执行了图2中的步骤202之后执行的,则触发步骤302,若该句柄来自服务端,即,当前流程是在执行了图2中的步骤203之后执行的,则触发步骤303。
步骤302,利用RFSA_OpenFunction向宿主程序上报接收到的句柄,然后,结束当前的流程。
步骤303,利用RFSA_OpenFunction为接收到的句柄增加表示远程访问的标记、并将带有该标记的该句柄向宿主程序上报,然后,结束当前的流程。
请参见图4并结合图3,以宿主程序利用上报(由如图2和图3所示流程中对应“打开”这一文件管理功能、即第一文件管理功能的RFSA_OpenFunction通过如图3所示的流程上报)的句柄对同一指定文件再次实现“读取”这一文件管理功能的访问为例,当客户端的宿主程序向对应“读取”这一文件管理功能(即第二文件管理功能)的RFSA_ReadFunction下发指定文件对应的句柄、以发起对指定文件执行“读取”这一文件管理功能的访问时,本实施例中的文件访问方法进一步通过调用客户端中对应“读取”这一文件管理功能(即第二文件管理功能)的RFSA_ReadFunction执行如下的步骤:
步骤401,利用RFSA_ReadFunction判断宿主程序下发的句柄是否带有表示远程访问的标记、以实现对访问类型的判断;
若未带表示远程访问的标记,即,实现句柄上报的如图3所示流程是在执行了图2中的步骤202之后执行的,则表示当前发起的访问属于本地访问,并触发步骤402;
若带有表示远程访问的标记,即,实现句柄上报的如图3所示流程是在执行了图2中的步骤203之后执行的,则表示当前发起的访问属于远程访问,并触发步骤403。
本步骤可以看作是对如图1所示流程中的步骤101的不同于图2中步骤201的另一种变形,相应地,由本步骤判断出本地访问后触发的步骤402、以及由本步骤判断出远程访问后触发的步骤403,则可以可以分别看作是对如图1所示流程中的步骤102和步骤103的不同于图2中步骤202和步骤203的另一种变形。
步骤402,利用RFSA_ReadFunction将该句柄下发至客户端中的ReadFile(读文件),以触发客户端中与该RFSA_ReadFunction对应相同文件管理功能“读取”的ReadFile,从而利用客户端中的ReadFile实现对指定文件的本地访问,然后,结束当前流程。
步骤403,利用RFSA_ReadFunction将句柄带有的该标记去除、并将去除该标记后的句柄通过网络传输至服务端,以实现对服务端中与该RFSA_ReadFunction对应相同文件管理功能“读取”的同功能文件管理API的触发,从而利用服务端中的同功能文件管理API实现对指定文件的远程访问,然后,结束当前流程。
如上可见,对于涉及句柄反馈的访问过程,本实施例中的文件访问方法能够由RFSA_<FunctionName>对远程访问的句柄予以标记后再上报至宿主程序,以供宿主程序后续利用该句柄再次发起对指定文件的访问时,能够由其他RFSA_<FunctionName>依据句柄是否带有标记来决定当前的访问是否属于远程访问,从而同样能够实现对相应文件管理功能的访问的重定向调度。
以上是对本实施例中的文件访问方法的详细说明。实际应用中,该文件访问方法能够以计算机程序来实现,因此,对应于该文件访问方法,本实施例还提供了一种文件访问装置。
本实施例中的文件访问装置应用于客户端,该客户端中配置有对应各文件管理功能的代理API;
当客户端的宿主程序通过对应任一代理API发起对指定文件的访问时,该文件访问装置通过调用该代理API运行如下的模块:
访问判别模块,利用该代理API判断宿主程序发起的访问的类型,若属于本地访问,则触发本地访问模块,若属于远程访问,则触发远程访问模块;
本地访问模块,利用该代理API在客户端中触发与该代理API对应相同文件管理功能的本地文件管理API、以通过该本地文件管理API实现对指定文件的本地访问;
远程访问模块,利用该代理API通过网络传输触发服务端中与该代理API对应相同文件管理功能的远端文件管理API、以通过该远端文件管理API实现对指定文件的远程访问。
与方法部分同理,本实施例中的文件访问装置同样能够满足客户端对于远程文件的实时可靠和灵活的访问要求、并兼顾本地与远程文件访问方式的一致性。而且,本实施例中的文件访问装置同样支持客户端的宿主程序以访问路径和句柄发起的访问。
具体说,对于客户端的宿主程序通过向代理API(即,前文方法部分提及的对应第一文件管理功能的RFSA_<FunctionName>,例如图2中的RFSA_OpenFunction)下发对指定文件的访问路径发起对指定文件的访问的情况:
访问判别模块利用代理API将宿主程序下发的访问路径与预定路径格式进行匹配、以实现对访问类型的判断,若宿主程序下发的访问路径与本地访问路径的预定格式匹配,则表示当前发起的访问属于本地访问,若宿主程序下发的访问路径与远程访问路径的预定格式匹配,则表示当前发起的访问属于远程访问;其中,本地访问路径的预定格式和远程访问路径的预定格式如前文的方法部分所述,此处不再赘述;
本地访问模块利用代理API将访问路径下发至客户端中与其对应相同文件管理功能的本地文件管理API、以实现对客户端中的该本地文件管理API的触发;
远程访问模块利用代理API将去除了远程文件访问代理标识以及指向服务端的网络地址和端口的访问路径通过网络传输至服务端、以实现对服务端中与该代理API对应相同文件管理功能的远端文件管理API的触发。
而对于客户端的宿主程序通过向代理API下发指定文件的句柄发起对指定文件的访问的情况,首先需要本实施例中的文件访问装置能够在收到反馈的句柄时予以甄别并标记,具体说,当通过对应任一代理API(即,前文方法部分提及的对应第一文件管理功能的RFSA_<FunctionName>,例如图2中的RFSA_OpenFunction)发起的访问产生向该代理API反馈的句柄时,该文件访问装置通过对该代理API的调用进一步运行如下的模块:
句柄判别模块,利用该代理API判断反馈该句柄的源端,若该句柄来自与该代理API在本地对应相同文件管理功能的文件管理API,则触发本地句柄模块,若该句柄来自服务端,则触发远端句柄模块;
原态上报模块,利用该代理API向宿主程序上报接收到的句柄;
标记上报模块,利用该代理API为接收到的句柄增加表示远程访问的标记、并将带有该标记的句柄向宿主程序上报。
相应地,当客户端的宿主程序进一步通过向代理API(即,前文方法部分提及的对应第二文件管理功能的RFSA_<FunctionName>,例如图3中的RFSA_ReadFunction)下发指定文件的句柄发起对指定文件的访问时:
访问判别模块利用代理API判断宿主程序下发的句柄是否带有表示远程访问的标记、以实现对访问类型的判断,若未带表示远程访问的标记,则表示当前发起的访问属于本地访问,若带有表示远程访问的标记,则表示当前发起的访问属于远程访问;
本地访问模块利用代理API将句柄下发至客户端中与其对应相同文件管理功能的本地文件管理API、以实现对客户端中的该本地文件管理API的触发;
远程访问模块利用代理API将去除表示远程访问的标记的句柄通过网络传输至服务端、以实现对服务端中与该代理API对应相同文件管理功能的远端文件管理API的触发。
为了区别访问判别模块、本地访问模块、远程访问模块在上述两种不同情况下的作用,对于客户端的宿主程序通过向代理API下发对指定文件的访问路径发起对指定文件的访问的情况,访问判别模块、本地访问模块、远程访问模块可以分别被称作为路径判别模块、本地路径模块、远程路径模块;而对于客户端的宿主程序通过向代理API下发指定文件的句柄发起对指定文件的访问的情况,访问判别模块、本地访问模块、远程访问模块可以分别被称作为句柄判别模块、本地句柄模块、远程句柄模块。
也就是说,访问判别模块可以看作是路径判别模块和句柄判别模块的集合或其中之一、本地访问模块可以看作是本地路径模块和本地句柄模块的集合或其中之一、远程访问模块可以看作是远程路径模块和远程句柄模块的集合或其中之一。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (8)
1.一种文件访问方法,其特征在于,该文件访问方法应用于客户端,该客户端中配置有对应各文件管理功能的代理API;
当客户端的宿主程序向对应的任一代理API下发对指定文件的访问路径、以发起对指定文件的访问时,该文件访问方法通过调用该代理API执行如下的步骤:
步骤a1、利用该代理API将宿主程序下发的访问路径与预定路径格式进行匹配、以判断宿主程序发起的访问的类型,
若宿主程序下发的访问路径与本地访问路径的预定格式匹配,则表示当前发起的访问属于本地访问,并触发步骤a2,
若宿主程序下发的访问路径与远程访问路径的预定格式匹配,则表示当前发起的访问属于远程访问,并触发步骤a3;
其中,本地访问路径的预定格式为符合客户端操作系统约定的文件路径访问格式;远程访问路径的预定格式中包括远程文件访问代理标识、指向服务端的网络地址和端口、服务端提供的服务点名称、以及指定文件在该服务点下的存放路径;
步骤a2、利用该代理API将访问路径下发至客户端中与其对应相同文件管理功能的本地文件管理API,以在客户端中触发与该代理API对应相同文件管理功能的本地文件管理API、并通过该本地文件管理API实现对指定文件的本地访问;
步骤a3、利用该代理API将去除了远程文件访问代理标识以及指向服务端的网络地址和端口的访问路径通过网络传输至服务端,以通过网络传输触发服务端中与该代理API对应相同文件管理功能的远端文件管理API、并通过该远端文件管理API实现对指定文件的远程访问。
2.根据权利要求1所述的文件访问方法,其特征在于,远程访问路径的预定格式中进一步包括验证码。
3.根据权利要求1所述的文件访问方法,其特征在于,当通过向对应的任一代理API下发对指定文件的访问路径而发起的访问产生了向该代理API反馈的句柄时,该文件访问方法通过对该代理API的调用进一步执行如下的步骤:
步骤b1、利用该代理API判断反馈该句柄的源端,若该句柄来自与该代理API在本地对应相同文件管理功能的文件管理API,则触发步骤b2,若该句柄来自服务端,则触发步骤b3;
步骤b2、利用该代理API向宿主程序上报接收到的句柄;
步骤b3、利用该代理API为接收到的句柄增加表示远程访问的标记、并将带有该标记的句柄向宿主程序上报。
4.根据权利要求3所述的文件访问方法,其特征在于,客户端的宿主程序进一步通过向代理API下发指定文件的句柄发起对指定文件的访问,并且该文件访问方法通过对该代理API的调用进一步执行如下的步骤:
步骤c1、利用代理API判断宿主程序下发的句柄是否带有表示远程访问的标记、以实现对访问类型的判断,
若未带表示远程访问的标记,则表示当前发起的访问属于本地访问,并触发步骤c2,
若带有表示远程访问的标记,则表示当前发起的访问属于远程访问,并触发步骤c3;
步骤c2、利用代理API将句柄下发至客户端中与其对应相同文件管理功能的本地文件管理API、以实现对客户端中的该本地文件管理API的触发;
步骤c3、利用代理API将去除表示远程访问的标记的句柄通过网络传输至服务端、以实现对服务端中与该代理API对应相同文件管理功能的远端文件管理API的触发。
5.一种文件访问装置,其特征在于,该文件访问装置应用于客户端,该客户端中配置有对应各文件管理功能的代理API;
当客户端的宿主程序向对应的任一代理API下发对指定文件的访问路径、以发起对指定文件的访问时,该文件访问装置通过调用该代理API运行如下的模块:
第一访问判别模块,利用该代理API将宿主程序下发的访问路径与预定路径格式进行匹配、以判断宿主程序发起的访问的类型,
若宿主程序下发的访问路径与本地访问路径的预定格式匹配,则表示当前发起的访问属于本地访问,并触发第一本地访问模块,
若宿主程序下发的访问路径与远程访问路径的预定格式匹配,则表示当前发起的访问属于远程访问,并触发第一远程访问模块;
其中,本地访问路径的预定格式为符合客户端操作系统约定的文件路径访问格式;远程访问路径的预定格式中包括远程文件访问代理标识、指向服务端的网络地址和端口、服务端提供的服务点名称、以及指定文件在该服务点下的存放路径;
第一本地访问模块,利用该代理API将访问路径下发至客户端中与其对应相同文件管理功能的本地文件管理API,以在客户端中触发与该代理API对应相同文件管理功能的本地文件管理API、并通过该本地文件管理API实现对指定文件的本地访问;
第一远程访问模块,利用该代理API将去除了远程文件访问代理标识以及指向服务端的网络地址和端口的访问路径通过网络传输至服务端,以通过网络传输触发服务端中与该代理API对应相同文件管理功能的远端文件管理API、并通过该远端文件管理API实现对指定文件的远程访问。
6.根据权利要求5所述的文件访问装置,其特征在于,远程访问路径的预定格式中进一步包括验证码。
7.根据权利要求5所述的文件访问装置,其特征在于,当通过向对应的任一代理API下发对指定文件的访问路径而发起的访问产生了向该代理API反馈的句柄时,该文件访问装置通过对该代理API的调用进一步运行如下的模块:
句柄判别模块,利用该代理API判断反馈该句柄的源端,若该句柄来自与该代理API在本地对应相同文件管理功能的文件管理API,则触发本地句柄模块,若该句柄来自服务端,则触发远端句柄模块;
本地句柄模块,利用该代理API向宿主程序上报接收到的句柄;
远端句柄模块,利用该代理API为接收到的句柄增加表示远程访问的标记、并将带有该标记的句柄向宿主程序上报。
8.根据权利要求7所述的文件访问装置,其特征在于,客户端的宿主程序进一步通过向代理API下发指定文件的句柄发起对指定文件的访问,并且该文件访问装置通过对该代理API的调用进一步运行如下的模块:
第二访问判别模块,利用代理API判断宿主程序下发的句柄是否带有表示远程访问的标记、以实现对访问类型的判断,
若未带表示远程访问的标记,则表示当前发起的访问属于本地访问,并触发第二本地访问模块,
若带有表示远程访问的标记,则表示当前发起的访问属于远程访问,并触发第二远程访问模块;
第二本地访问模块,利用代理API将句柄下发至客户端中与其对应相同文件管理功能的本地文件管理API、以实现对客户端中的该本地文件管理API的触发;
第二远程访问模块,利用代理API将去除表示远程访问的标记的句柄通过网络传输至服务端、以实现对服务端中与该代理API对应相同文件管理功能的远端文件管理API的触发。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410407787.3A CN104144221B (zh) | 2014-08-19 | 2014-08-19 | 文件访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410407787.3A CN104144221B (zh) | 2014-08-19 | 2014-08-19 | 文件访问方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104144221A CN104144221A (zh) | 2014-11-12 |
CN104144221B true CN104144221B (zh) | 2017-07-14 |
Family
ID=51853288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410407787.3A Active CN104144221B (zh) | 2014-08-19 | 2014-08-19 | 文件访问方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104144221B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102118442A (zh) * | 2011-02-21 | 2011-07-06 | 清华大学 | 一种访问Web资源的方法及装置 |
CN102279748A (zh) * | 2011-08-29 | 2011-12-14 | 焦秀琴 | 远程存储本地执行的软件使用方法、系统、服务器及客户端 |
CN102362269A (zh) * | 2008-12-05 | 2012-02-22 | 社会传播公司 | 实时内核 |
CN103731427A (zh) * | 2013-12-31 | 2014-04-16 | 华为技术有限公司 | 一种会话处理的方法、设备和系统 |
-
2014
- 2014-08-19 CN CN201410407787.3A patent/CN104144221B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102362269A (zh) * | 2008-12-05 | 2012-02-22 | 社会传播公司 | 实时内核 |
CN102118442A (zh) * | 2011-02-21 | 2011-07-06 | 清华大学 | 一种访问Web资源的方法及装置 |
CN102279748A (zh) * | 2011-08-29 | 2011-12-14 | 焦秀琴 | 远程存储本地执行的软件使用方法、系统、服务器及客户端 |
CN103731427A (zh) * | 2013-12-31 | 2014-04-16 | 华为技术有限公司 | 一种会话处理的方法、设备和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104144221A (zh) | 2014-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104753907B (zh) | 基于即时通信或社交应用的数据处理方法和装置 | |
CN104170323B (zh) | 基于网络功能虚拟化的故障处理方法及装置、系统 | |
CN103914439B (zh) | 一种文档在线编辑方法、设备以及系统 | |
CN103064584B (zh) | 粘贴方法和装置 | |
CN104636921B (zh) | 基于通信群的在线支付方法,支付系统及服务器系统 | |
KR102553831B1 (ko) | 집계 지불을 위한 백엔드 아키텍처 방법 및 시스템, 컴퓨터 디바이스 및 저장 매체 | |
CN104270517B (zh) | 信息加密方法和移动终端 | |
US20150341795A1 (en) | Instant messaging message processing method and device and storage medium | |
CN103327119B (zh) | 远程控制方法、装置及系统 | |
CN105204743A (zh) | 用于语音和视频通讯的交互控制方法及装置 | |
CN107408243A (zh) | 提供用于管理对话中的附件的附件控件 | |
CN106575253B (zh) | 用于分布式系统中的故障分析的视觉工具 | |
CN108063714A (zh) | 一种网络请求的处理方法及装置 | |
CN101378396A (zh) | 网络钓鱼通知服务 | |
EP2854371A1 (en) | Method and device for achieving remote manipulation | |
EP3155764B1 (en) | Method and system for secure bidirectional communication for industrial devices | |
CN112968977B (zh) | 信息交互方法及装置 | |
CN108989424A (zh) | 一种远程控制的方法和系统 | |
CN110489277A (zh) | 一种服务器备份方法、系统、装置及计算机可读存储介质 | |
CN104144221B (zh) | 文件访问方法及装置 | |
CN105207777B (zh) | 网络信息验证的方法和装置 | |
CN105024905B (zh) | 消息推送方法和装置 | |
CN108595957A (zh) | 浏览器主页篡改检测方法、装置及存储介质 | |
CN109040331B (zh) | 电子名片的处理方法、装置、计算设备和存储介质 | |
KR20070062395A (ko) | 애플리케이션 컨텍스트 관리 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |