1

我正在开始一个新项目,但我对数据有限制。基本上,“数据”实际上是一堆以明确定义的层次结构组织的文件。

客户希望能够使用 Windows 文件资源管理器访问这些文件,同时还将数据加载到程序中以获得信息的精确视图。该程序将加载文件、解析它们并提取所需的信息。它应该能够对文件执行某种查询(最后修改日期、大小、某种类型的所有文件)

我的问题是能够结合这两种观点。

我的第一个想法是使用保存路径和一些有关文件的元数据的数据库来备份文件系统......但是我在徘徊是否有任何文件系统抽象来实现这种事情?还是我可以使用的基于文档的数据库?

基本上我想尽可能少地处理文件系统(但也许我不应该)

希望这不是太模糊......谢谢。

4

1 回答 1

2

对我来说听起来更像是一个架构问题。

我建议在表示层和数据源之间使用抽象层,以避免与实际文件耦合。为文件访问和数据库访问建立一个通用接口。您的应用程序不需要知道它是否正在处理文件或数据库数据,甚至是未来更改可能需要的其他源。在这里实现存储库设计模式应该很有用。

此外,我建议使用完全独立于底层文件/数据库结构的通用数据访问对象,这将允许您尝试不同的数据访问方式,而无需接触应用程序本身。

至于面向文档的数据库,我没有这方面的经验。但是,例如, RavenDb是一种流行的开源产品,它具有开箱即用的 .NET 支持,值得一看。

考虑到应用程序以及通过 Windows 资源管理器的双重访问,您可能需要考虑使用FileSystemWatcher检查是否有任何文件被更改,然后使用更改的内容更新相应的数据库条目。

当然,如果这是一种可用的方法,很大程度上取决于数据更改的频率。如果文件编辑过于频繁,这可能会使数据库访问负担过重。您应该尽早检查可能的性能影响。

对于其他想法,我们可能需要更多信息。但至少这些想法可能会给你一个起点。

于 2012-12-13T11:27:45.940 回答