如何持久化/保存程序信息



我写了一个提醒程序,它在启动时自动运行。我想知道除了SQL Server之外,是否还有其他方法可以存储事件、日期和时间数据。我不想在这项工作中使用SQL Server,因为我认为SQL Server对于这项简单的任务来说非常大。我想我可以用一个文件来存储数据。你对此怎么看?

存储信息的一些常见方法:

  • 作为文件。您有许多选项,其中可以存储文件。例如,用户目录和程序目录。这里和这里的进一步解释。我更喜欢使用序列化程序(xml或json)
  • 作为注册表条目。您将信息存储为键值对
  • 在轻量级数据库中:
    • RavenDB:面向文档,以json格式存储数据
    • SQLite:关系型;出于管理目的,我建议使用此SQLite管理员

注册表项在用户操作方面更安全。另一方面,文件可以很容易地删除。

您始终可以选择加密您的信息。

附带说明一下,您还可以使用PostSharp来声明要存储在注册表中的变量。代码变成这样:

[RegistryBacking]
private bool _boolean;

如果你需要,我可以稍后提供代码……当我再次回家时

对于要持久化的零件

从本文档(管理用户数据部署指南,下载):

Windows将LocalLocalLow文件夹用于应用程序数据其不与用户一起漫游。通常这些数据是任意一台机器特定的或太大而无法漫游。

Windows将Roaming文件夹用于特定于应用程序的数据,例如作为自定义词典,与机器无关,应漫游使用用户配置文件。

因此,我建议使用AppDataRoaming并持久化到一个文件,因为我认为"提醒应用程序"是特定于用户的。例如,域用户会认为这很有价值(同步到服务器)。

LocalLocalLow(后者用于低完整性模式,用于特权降低的应用程序)将更适合于可以动态计算的某些机器/安装特定数据。

Registry似乎非常适合一些少量的密钥,但似乎不是这种使用的最佳选择。

还有另一个选项-IsolatedStorage,当上述选项不适用时,如使用ClickOnce部署时,应使用该选项。

关于如何将数据持久化到文件。。。好吧,选你最喜欢的。如果您想要更多的控制和功能,您可以使用非常轻便的SQLite数据库,或者如果您认为使用SQLite是一种过度使用,则只使用对文件的XML序列化。或者任何其他可行的选择。

XML。NET的类使处理xml文件变得容易。如果您要保存结构化数据,那么XML可能是您的最佳选择。

出于类似的原因,我尝试了一些易于部署的数据库,但使用了我所掌握的知识。

VistaDB 3.x和4是我的首选,因为它们非常适合SQL Server,并且允许我随时切换到SQL Server。这也支持EF!!!

接下来是Versant的db4o,它非常方便。我主要使用它进行快速原型设计,但我已经部署了几个小型解决方案,非常适合您的应用程序。

我希望这能有所帮助!

相关内容

  • 没有找到相关文章

最新更新