实施VFS的想法

时间:2009-11-26 21:09:44

标签: java design-patterns webdav fuse vfs

我有多媒体文件及其元数据存储在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接口和实现,但它们最终感觉不是很正确。

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

2)

“揭露”此模型的最佳替代方案是什么?我认为,有一些替代方案:

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

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

思想,想法?

亚历

编辑:现在该项目已被半抛弃(意思是,这样做很酷,但现在没时间)。我想我会把我的VFS写成commons-vfs的扩展,然后将commons-vfs改为Milton,Dokan,Fuse等。

1 个答案:

答案 0 :(得分:2)

我会选择WebDAV。一个很多更少的代码和明确定义的标准