基于http的文件系统,具有搜索和锁定支持

时间:2009-04-21 19:58:39

标签: .net http filesystems locking seek

我正在构建一个需要像文件系统一样使用Web服务器的应用程序。具体而言,理想的解决方案是:

  • 服务器端组件,允许通过HTTP打开(锁定),读取,写入,搜索和截断一个文件。我需要能够同时锁定多个文件。我需要在任何标准Web主机上运行它,因此它必须在IIS或Apache之上运行,使用服务器端脚本(Web服务,PHP等)
  • 我给它一个URI的客户端接口,它打开并像一个文件一样运行。我的客户端应用程序是在.NET中,因此理想情况下,客户端API将实现FileSteam子类。

我需要这个的原因是我有相当大的文件将放在网络主机上。我需要阅读部分文件(使用搜索),截断并追加到最后。下载和上传整个文件的带宽太多。另外,我需要同时锁定多个文件。

我的问题:

  • 这样的事情存在吗?
  • 如果没有,为什么不呢?这看起来不是一个非常有用的服务吗?

似乎这样的组件允许我使用任何网络托管公司作为网络文件服务器。这看起来很有用,不是吗?

感谢您的帮助!

埃里克

2 个答案:

答案 0 :(得分:1)

您正在寻找的是WebDAV服务器。

答案 1 :(得分:1)

长版
Web主机最初设计为在单独连接中向用户发送内容。会话的整个概念是一种相对现代的现象(关键词:相对) - 其中大多数只是跟踪来自同一用户的各个连接的方法。通常情况下,它只是给你印象你仍然连接到服务器,实际上你已连接,下载,断开连接 - 并且每次都进行相同的连接/下载/断开连接你采取行动。

WebDav之类的东西是标准HTTP对话框的附加功能,允许特殊设计的软件通过HTTP与服务器进行更复杂的通信。 WebDav的常见用途是Subversion,iCal(日历支持)等 - 这些允许单一连接上传数据。

您所说的是拥有基于会话的文件系统服务。虽然这似乎是一项很好的服务,但我怀疑它没有实施,因为它的复杂性和危险性超过了它的好处。例如,这样的服务不仅要担心标准的文件系统问题(授权,文件权限,锁定,超时等),而且现在还要担心在网络上的复杂性(身份验证,会话跟踪,断开连接,重放攻击,DDoS等)。例如,如果客户端锁定文件然后脱机会发生什么?在服务器重新启动之前,文件是否保持锁定状态?如果没有,你什么时候自动解锁文件?如果自动解锁触发器和原始锁定器重新联机会发生什么?您是否强制要在一个连接中完成所有操作以进行补偿?如果他们在会话中断了会发生什么?

它们只是你需要担心的一些事情。我的漫步时间比我的意思要长,但最重要的是......

短版
您当然可以使用WebDav来实现它,这将需要您构建服务器端库。然而,虽然它并非不可能,但你正处于一个受到设计伤害的世界。我建议简化设计,这样你就不需要它像文件系统一样。