存储应用程序数据的常见位置在哪里

时间:2011-02-21 20:43:15

标签: c# wpf

我正在开发基于Windows的桌面应用程序,当应用程序启动时,我需要在某个地方存储一些小数据。

目的是在同一App的实例之间共享一些数据。同样,数据的大小非常小,在这种情况下,它只是一个字符串。

我做了一些研究,发现有以下选择:

  1. MSMQ
  2. 注册表
  3. 纯文本文件
  4. 共享内存
  5. .Net配置模型
  6. 现在我正在使用最简单的一个 - #3。我想知道其他人如何处理同样的问题?有什么建议吗?

    谢谢

6 个答案:

答案 0 :(得分:3)

添加5:.net配置模型。您可以在项目设置下设置字段 - >这些设置将在AssemblyName.Properties对象的名称空间Settings中提供。

如果您确实需要自己动手,我建议您将这些文件保存在%appdata%\YourProgramName中。您可以通过Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)获取路径。

答案 1 :(得分:0)

您可以在C#项目中使用可用的内置设置 以下是有关如何在C#项目中使用设置的MSDN链接。

MSDN Settings Tutorial

如果您需要更复杂的东西,平面文件也可能适合您的需求。

答案 2 :(得分:0)

如果要存储的数据不敏感,可以将其存储在纯文本文件中。 使用%appdata%更集中,我喜欢这个主意。

答案 3 :(得分:0)

文件系统是保存数据的最佳位置。如果设置是每个用户,请将文件存储在用户的主文件夹中。如果用户之间共享设置,请将文件存储在共享数据目录中(上次使用Windows时为C:\Program Files)。您应该在以下任一位置为应用程序创建一个子目录。

简单的文本文件适用于简单的字符串。

数据交换格式(如json或yaml)适用于复杂的数据结构。

数据库(例如SQLite(通常存储在.db文件中))适用于必须经常读取和写入磁盘的数据。

答案 4 :(得分:0)

我认为您使用哪种方法的问题的答案将取决于您正在使用的流程。如果您正在为开发运行更多的敏捷流程,那么在迭代期间我会做最少的工作,以便在您的应用之间成功存储和共享设置。随着关于应用程序需求或可能性能的更多要求成为问题,只需重新设计解决方案以满足新要求。

但是,如果您正在为您的开发(预先设计大型设计)执行更多的瀑布流程,并且您是否预期应用程序的要求将超出您目前所知的范围(这显然经常发生)然后我会设计并构建一个过去一直运行良好的解决方案。某种类型的数据库引擎,无论是重量级如MySQL还是微软的SQL Server,还是像SQLite这样的轻量级版本都将提供良好的结构机制,以便在多个应用程序之间共享数据。

关于是否使用SQLite或XML进行设置,stackoverflow上还有another discussion

答案 5 :(得分:0)

我使用数据库组合来获得更安全和用户特定的数据,例如用户名和分数(我正在创建游戏),以及用于更多全局设置的注册表。