java – 实现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等.

最佳答案 我会选择WebDAV.代码少得多,定义明确

点赞