NetDrive软件的设计架构

作者:Frank

NetDrive是一款对于个人用户免费的客户端软件,它可以将网络上的FTP空间或者WebDAV空间映射为本地的磁盘,就像操作计算机中的磁盘一样方便,支持拖拽(Drag-and-Drop)操作。这与目前比较流行的一些云存储软件,与网络硬盘比较类似,在软件供应模式逐步转变为提供软件服务的今天,客户端有越来越多的资源需要存储到云端(Cloud Storage),例如一般用户手机上的照片,短信,邮件等等。本文通过对NetDrive的设计架构分析,发现构建一般的网盘服务实现也并不复杂,我们可以使用一台存储服务器,加上类似于NetDrive的客户端程序即可实现。

服务器实现的关键是提供稳定的存储空间,和方便扩展的通信协议。WebDAVWeb-based Distributed Authoring and Versioning)是基于 HTTP 1.1 的一个通信协议。它为 HTTP 1.1 添加了一些扩展(就是在 GETPOSTHEAD 等几个 HTTP 标准方法以外添加了一些新的方法),使得应用程序可以直接将文件写到 Web Server 上,并且在写文件时候可以对文件加锁,写完后对文件解锁,还可以支持对文件所做的版本控制。

而客户端实现的关键包括两个方面,1. 客户端与存储服务器的通信;2. 云存储操作的本地虚拟化。下面针对NetDrive软件设计架构进行介绍,解析此云存储客户端的实现方案。

如下图:

 

 

NetDriver 架构主要分为文件系统驱动(File System Driver)Mount服务(Mount Service)和应用程序(NetDrive Application)三个模块:

 

1.  Mount Service

将一个虚拟盘符加载作为本地的一个硬盘,以便在此硬盘上进行类似于普通硬盘的操作,如拷贝/粘贴,Drag-and-Drop等。这样一来,使得软件的用户体验极大的优于一般的网络存储软件,如FTP客户端, HTTP客户端等。用户可以像本地硬盘一样操作服务器的存储空间。

2.  File System Driver

实现用户态的文件系统驱动,主要将其加载到虚拟磁盘中,接收磁盘上的所有用户操作,并将所有IRP包过滤到NetDrive应用程序供其使用。一旦一个文件I / O请求从用户的行动创造出来,窗口浏览器中的I / O管理器窗口子系统将创建对应的IRP 到驱动层,驱动层通过分析,再与应用程序处理过后,将IRP发送回I/O管理器。

3.  NetDrive Application

当应用程序层接收到文件驱动层sinkIRP包之后,会对其进行分析,以解析出具体的操作内容,如创建/删除,拷贝/粘贴,重命名之类操作,调用内部的WebDAV协议加工模块与远端的NetDriver Server进行通信,已实现文件在网盘中的真正操作。

 说明:

用户态文件系统驱动可以使用如Dokan之类的开源的驱动程序框架实现。 

 

 

参考资料

1. NetDrive 官方网站 - http://www.netdrive.net/index.html

2. Dokan 开发者网站 - http://dokan-dev.net/en

2. WebDAV - http://en.wikipedia.org/wiki/WebDAV

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值