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

C# 存储应用程序数据的常用位置在哪里,c#,wpf,C#,Wpf,我正在使用基于Windows的桌面应用程序,当应用程序启动时,我需要在某处存储一些小数据 其目的是在同一应用程序的实例之间共享一些数据。同样,数据的大小非常小,在本例中,它只是一个字符串 我做了一些研究,发现有以下几种选择: MSMQ 登记处 纯文本文件 共享内存 .Net配置模型 现在我用的是最简单的一个#3。我想知道其他人如何处理同样的问题?有什么建议吗 感谢添加5:.net配置模型。您可以在项目设置->设置下设置字段,这些字段将在settings对象的命名空间AssemblyName.Pr

我正在使用基于Windows的桌面应用程序,当应用程序启动时,我需要在某处存储一些小数据

其目的是在同一应用程序的实例之间共享一些数据。同样,数据的大小非常小,在本例中,它只是一个字符串

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

  • MSMQ
  • 登记处
  • 纯文本文件
  • 共享内存
  • .Net配置模型
  • 现在我用的是最简单的一个#3。我想知道其他人如何处理同样的问题?有什么建议吗


    感谢添加5:.net配置模型。您可以在项目设置->设置下设置字段,这些字段将在
    settings
    对象的命名空间
    AssemblyName.Properties
    中可用


    如果您确实需要自己完成,我建议您将这些文件保存在
    %appdata%\YourProgramName
    中。您可以通过
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
    获取路径。您可以使用C#项目中可用的内置设置。
    这里有一个MSDN链接,介绍如何在C#项目中使用这些设置


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

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

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

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

    json或yaml等数据交换格式适用于复杂的数据结构


    数据库,如SQLite(通常存储在.db文件中)在您必须频繁地将数据读写到磁盘时非常有用。

    我认为,对于您提出的使用哪种方法的问题,答案将取决于您使用的进程。如果你正在为你的开发运行更多的敏捷过程,我会在你的迭代过程中尽可能少地存储设置并在你的应用程序之间成功地共享。随着越来越多的需求浮出水面,关于应用程序需要什么或性能可能成为一个问题,只需重新设计您的解决方案以满足新的需求

    然而,如果您在开发过程中更多地遵循瀑布式流程(预先进行大型设计),并且如果您完全预期应用程序的需求将超出您目前所知道的范围(这显然是经常发生的),那么我将设计并构建一个在过去工作良好的解决方案。某种类型的数据库引擎,无论是像Heavweight或Microsoft的SQL Server,还是像Lightweiger这样的版本,都将提供一种结构良好的机制,以便在多个应用程序之间共享数据


    这里还有关于stackoverflow的信息,关于是否使用SQLite或XML进行设置。

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

    谢谢,我目前也在将数据保存到%appdata%文件夹中。question@Femaref,将数据保存到.net配置模型是否支持进程之间的数据共享?我不这么认为。