最佳实践:我应该如何在 C#(格式/类型)中存储设置?

Posted

技术标签:

【中文标题】最佳实践:我应该如何在 C#(格式/类型)中存储设置?【英文标题】:Best-Practices : how should I store settings in C# (Format/Type)? 【发布时间】:2010-10-06 20:20:01 【问题描述】:

现在我很好奇在 .net 中存储/加载设置的可能性。例如,我需要存储不同数据库的用户名/密码等,还需要存储一些选项等。

我的想法是创建 [Seriazable] 类并将其保存到文件中......

你有什么建议? .net 等有哪些可能性。

【问题讨论】:

我问过类似的问题here,也许答案有帮助... 【参考方案1】:

.NET Framework 提供了一些用于存储和加载应用程序和/或用户设置的机制。有关基本信息,请参阅“MSDN: Using Settings in C#”。

要加密配置文件中的一些敏感数据,您还可以使用 .NET Framework 的一些标准功能。有关简短介绍,请查看“Encrypting Configuration Information Using Protected Configuration”和“Encrypting Passwords in a .NET app.config File”。

【讨论】:

最后一篇文章“在...中加密密码”完全符合我的需要。谢谢。 +1【参考方案2】:

存储和加载设置最常见的方法是使用某种 XML 数据,创建一个 [Serializable] 类并将序列化的类输出到 XML 文件会起作用,但是您必须保留以下内容心:

    您无法控制输入数据 - 因为 XML 文件可以在您的应用程序之外进行编辑,所以可能会加载完全无意义的数据 当 XML 中缺少节点时,您需要有合理的默认值。这可能是由手动编辑或将旧版本的类加载到新版本中造成的。 如果不使用某种非对称加密算法,我个人会非常犹豫将任何密码存储在配置文件中的任何位置。如果我发现一个程序将我的密码以纯文本形式存储在 XML 文件中,我将停止使用该程序。

【讨论】:

是的,一切都会被加密,这是肯定的 ;)【参考方案3】:

如果您想存储应用程序配置设置,您可以利用 App.Config 或 Web.Config 文件中的“AppSettings”,具体取决于它是 Windows 应用程序还是 Web 应用程序。 我相信读取配置值的语法是

string configValue = Configuration.AppSettings["ConfigValueName"];

配置文件如下所示

<configuration> 
  <appSettings>
    <add key="ConfigValueName" value="ABC"/>
  </appSettings>
</configuration>

可能还有很多其他的东西。

如果您需要在系统中存储有关用户的信息或其他重复实体,则需要构建一个数据库并编写代码以将数据持久保存到数据库中/从数据库中读取数据。

您可以使一个类可序列化并自动将其序列化为 XML 或二进制文件,或者您可以使用 SQL 数据库。访问数据库的 .net 技术有很多,只需查找 ADO.net、LINQ 和 Entity Framework。

【讨论】:

是的,这有可能。【参考方案4】:

您可以将资源文件用于不太敏感的信息。对于用户名/密码,您需要使用加密的文本文件,或使用CSPs。

【讨论】:

【参考方案5】:

我推荐在你需要的地方存储App.Config,一个Ini文件...然后使用库Config.Net一个全面易用且功能强大的.NET配置库,完全覆盖了单元测试,并在数千台服务器和应用程序上进行了测试。 在 GitHub 上找到它:https://github.com/aloneguid/config

这样您就可以将您的设置放在一个地方,然后,如果需要,可以移动到另一个地方。

【讨论】:

以上是关于最佳实践:我应该如何在 C#(格式/类型)中存储设置?的主要内容,如果未能解决你的问题,请参考以下文章

结构化存储过程的最佳实践

在 Visual Studio C# 中控制外部窗口

Kafka 的嵌套 Avro 类型是不是有最佳实践?

C# 继承最佳实践

C# Entity Framework Core Migrations 最佳实践

连接/断开数据库的最佳实践是啥?