如何持久化/保存程序信息
本文关键字:程序 信息 保存 持久化 | 更新日期: 2023-09-27 18:24:26
我写了一个提醒程序,它在启动时自动运行。我想知道除了SQL Server之外,是否还有其他方法可以存储事件、日期和时间数据。我不想在这项工作中使用SQL Server,因为我认为SQL Server对于这项简单的任务来说非常大。我想我可以用一个文件来存储数据。你对此怎么看?
存储信息的一些常见方法:
- 作为文件。您有许多选项,其中可以存储文件。例如,用户目录和程序目录。这里和这里的进一步解释。我更喜欢使用序列化程序(xml或json)
- 作为注册表条目。您将信息存储为键值对
- 在轻量级数据库中:
- RavenDB:面向文档,以json格式存储数据
- SQLite:关系型;出于管理目的,我建议使用此SQLite管理员
注册表项在用户操作方面更安全。另一方面,文件可以很容易地删除。
您始终可以选择加密您的信息。
附带说明一下,您还可以使用PostSharp来声明要存储在注册表中的变量。代码变成这样:
[RegistryBacking]
private bool _boolean;
如果你需要,我可以稍后提供代码……当我再次回家时
对于要持久化的零件
从本文档(管理用户数据部署指南,下载):
Windows将
Local
和LocalLow
文件夹用于应用程序数据其不与用户一起漫游。通常这些数据是任意一台机器特定的或太大而无法漫游。Windows将
Roaming
文件夹用于特定于应用程序的数据,例如作为自定义词典,与机器无关,应漫游使用用户配置文件。
因此,我建议使用AppData'Roaming
并持久化到一个文件,因为我认为"提醒应用程序"是特定于用户的。例如,域用户会认为这很有价值(同步到服务器)。
Local
和LocalLow
(后者用于低完整性模式,用于特权降低的应用程序)将更适合于可以动态计算的某些机器/安装特定数据。
Registry
似乎非常适合一些少量的密钥,但似乎不是这种使用的最佳选择。
还有另一个选项-IsolatedStorage
,当上述选项不适用时,如使用ClickOnce部署时,应使用该选项。
关于如何将数据持久化到文件。。。好吧,选你最喜欢的。如果您想要更多的控制和功能,您可以使用非常轻便的SQLite数据库,或者如果您认为使用SQLite是一种过度使用,则只使用对文件的XML序列化。或者任何其他可行的选择。
XML。NET的类使处理xml文件变得容易。如果您要保存结构化数据,那么XML可能是您的最佳选择。
出于类似的原因,我尝试了一些易于部署的数据库,但使用了我所掌握的知识。
VistaDB 3.x和4是我的首选,因为它们非常适合SQL Server,并且允许我随时切换到SQL Server。这也支持EF!!!
接下来是Versant的db4o,它非常方便。我主要使用它进行快速原型设计,但我已经部署了几个小型解决方案,非常适合您的应用程序。
我希望这能有所帮助!