【问题标题】:Ideas for implementing a VFS实施 VFS 的想法
【发布时间】:2010-12-20 19:26:37
【问题描述】:

我将多媒体文件及其元数据存储在 RDBMS 中(实际上,实际的媒体文件存储在 FS 中,但我们不要纠结于此)。

我想展示此信息的文件系统视图,以便用户可以使用 Windows 资源管理器和数据库上的类似内容进行工作。我打算将此访问权限设为只读,我相信这会大大简化事情。

基本上,我想要实现的是:

  • 使用不同的元数据标准(例如,拥有 /by_author/{artist}/{record}/{audiofiles} 和 /by_record/{record}/{audiofiles})拥有不同的视图。
  • 对媒体文件(即 /wav/{wavfile}、/mp3/192/{mp3file)、/mp3/320/{mp3file} 等)进行透明重新编码(可能缓存)
  • 透明地生成不同格式的元数据(例如,Excel、不同架构中的 XML 等)

顺便说一句,我正在用 Java 做这个。

我的问题是两方面的:

1)

什么是实现“模型”的好方法?我涉足了一些 Repository、Asset、FileAsset、ContainerAsset 接口和实现,但最终感觉不太对。

我感兴趣的是能够将文件系统的不同部分委托给单独的代码(即 FS 的 /{artist}/{record} 和 /{record} 部分是用不同的代码实现的,它们都委托给相同的代码来创建 {record}/xxx 东西)。

2)

“暴露”这个模型的最佳选择是什么?如我所见,有一些替代方案:

  • Java 的 Fuse 和 Java 的 Dokan。我需要实现两个不同的包装器,所以需要做更多的工作......
  • 使用 Alfresco 的 SMB 实现并将 VFS 公开为 Samba 共享
  • 使用 Milton(servlet 容器的 WebDAV 实现)并使用 OS 内置的 WebDAV 支持或使用 Fuse DAV FS 之类的东西将其重新公开为 FS

其中,Fuse/Dokan 似乎工作最多。 Alfresco 看起来非常漂亮,但 非常 要让它工作起来很复杂。 Milton 似乎更简单,WebDAV 的语义甚至可能会更好……但我并不完全确定。

想法,想法?

亚历克斯

edit:该项目现在已半废弃(意思是,这样做会很酷,但现在没有时间)。我想我会写我的 VFS 作为 commons-vfs 的扩展,然后将 commons-vfs 适配到 Milton、Dokan、Fuse 等。

【问题讨论】:

  • 当我看到您的要求时,我立即想到了 alfresco 的 SMB 共享。当然它比 webdav 复杂一点,但是没有仔细研究它有什么复杂的?我想它的内部非常复杂,因为 SMB 有很多角落案例,但对于用户来说应该很简单。
  • 刚启动服务器是一件很可怕的事......而且普遍缺乏文档让我完全失望......

标签: java design-patterns webdav fuse vfs


【解决方案1】:

我会选择 WebDAV。 很多代码更少,标准定义明确

【讨论】:

  • 是的,我实际上倾向于 WebDAV。你有什么经验吗?例如,对于重新编码的文件,如果没有重新编码,我将不知道文件的大小......我想 WebDAV 对这样的事情来说是最不麻烦的......
  • 是的,我很久以前在 Lua 中实现了大部分。除了 RFC 唯一困难的部分是锁定语义之外,我不记得很多细节了。
  • webdav 的问题不像 windows 或 mac os 中的真实文件系统那样不受支持。当然 finder/explorer 可以访问它,但它可能有点麻烦。
  • 在 mac WebDAV 是一个真实的、挂载的 FS。对于 windows,有一些第三方解决方案,不确定它们是否免费
  • @DavidRoussel 实际上是在 Windows 中。您可以安装(通过映射网络驱动器)WebDAV 驱动器。刚刚在 Windows 10 中完成了一个项目的测试,仍然像魅力一样工作
猜你喜欢
  • 2011-03-23
  • 1970-01-01
  • 2013-05-05
  • 2011-01-30
  • 2022-07-16
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多