我正在开发一个C#应用程序,它需要将给定报告文件的所有连续修订存储到单个项目文件中:每次(纯文本)报告文件更改时,都应附加新版本的内容到项目文件,以及一些元数据。其他要求:
如何以有效的方式实现这一目标?我应该创建自定义二进制文件,考虑使用数据库,其他想法吗?
非常感谢,盖伊。
答案 0 :(得分:4)
简单的工作流程出了什么问题?
Gzip是一种标准格式,因此很容易访问。后续报告可能不会有太大变化,因此您将获得很高的压缩率。要提交每个报告,只需打开文件并扫描标题即可。 (如果扫描不起作用,也会镜像SQLite数据库中的元数据,并确保在项目文件中包含偏移量,以便您可以快速找到正确的位置。)
如果您的要求是灵活的(例如“应附加”部分)并且您只是想要跟踪文件的过去版本,revision control system将很容易地完成您需要的所有内容。
答案 1 :(得分:3)
无需实现。我建议你使用源代码控制。我个人使用subversion与TortoiseSVN客户端。还有一个插件将Subversion与Visual Studio VisualSVN集成在一起。看看他们。
答案 2 :(得分:2)
我认为,当已经存在数十个(如果不是数百个)基本上设计用于完成此项目的系统时,自己有很多建议 - 源控制系统。
我建议选择一些绑定到C#的源代码控制解决方案并将文档存储在那里。然后,您可以轻松检查文档的任何修订。如有必要,您还可以进行差异化,分支等。
举一个例子来帮助您入门,您可以将Subversion与C# bindings一起使用。
答案 3 :(得分:2)
您可以使用alternate data streams存储文件的旧版本。 .NET框架中没有内置支持,但是存在一些辅助类和文章,如here和here。
我自己从未使用过这个,所以我无法确定这是不是一个好选择。但似乎它会成为一个优雅的解决方案,因为您可以将每个文件版本存储在单独的数据流中,而只将当前版本存储在“主文件”中。无论如何,它可能只适用于NTFS驱动器。
答案 4 :(得分:2)
如果使用SVN不是一个选项,您只需将每个修订版存储在单个文件中(例如,文件名代表日期)。您也可以为元数据使用单独的文件。然后将所有上述文件压缩成一个文件(例如,查看http://DotNetZip.codeplex.com/)。
答案 5 :(得分:1)
我认为已经SVN(或其他源代码控制系统)是一个非常好的主意,因为源代码控制似乎具有您需要的功能。但如果这不是一个选项,您可以使用SQL Server Compact Edition或SQLite等文件数据库。