2

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

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

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

我的问题:

  • 这样的事情存在吗?
  • 如果不是,为什么不呢?这似乎不是一项非常有用的服务吗?

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

谢谢你的帮助!

埃里克

4

2 回答 2

1

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

于 2009-04-21T21:12:22.663 回答
1

长版
Web 主机最初设计用于将内容发送给单独连接的用户。会话的整个概念是一种相对现代的现象(关键词:相对)——其中大部分只是跟踪来自同一用户的单个连接的简单方法。通常情况下,它只是给人一种您仍然连接到服务器的印象,而实际上您已经连接、下载、断开连接 - 并且每次执行操作时都执行相同的连接/下载/断开连接。

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

您正在谈论的是拥有基于会话的文件系统服务。虽然这似乎是一项很好的服务,但我怀疑它尚未实施,因为其复杂性和危险超过了好处。例如,这样的服务不仅需要担心标准文件系统问题(授权、文件权限、锁定、超时等),而且现在还必须担心在 Web 上的复杂性(身份验证、会话跟踪、断开连接、重放攻击、DDoS 等)。例如,如果客户端锁定文件然后离线会发生什么?文件是否保持锁定直到服务器重新启动?如果不,什么时候自动解锁文件?如果自动解锁触发并且原来的储物柜重新上线会发生什么?您是否强制所有事情都在一个连接中完成以进行补偿?如果他们在会话中间断开连接会发生什么?

它们只是您必须担心的几件事。我闲逛的时间比我打算的要长得多,但最重要的是......

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

于 2009-05-11T19:36:37.417 回答