【发布时间】: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