【问题标题】:What is the best approach to store configuration info in a server application? (No database)在服务器应用程序中存储配置信息的最佳方法是什么? (无数据库)
【发布时间】:2011-10-15 19:41:36
【问题描述】:

我有一个用 C# 编写的服务器应用程序。

随着应用程序的运行,会产生数万个键值映射,这些信息需要持久化。对于这些映射记录中的每一个,都会有更新/删除操作。

存储它的最佳方法是什么?没有数据库。

在这种情况下,ConfigurationManager 是否存在性能问题?

数千条记录怎么样?是否可以避免使用任何数据库?

谢谢!

【问题讨论】:

  • 嗯——第一个问题是为什么没有数据库?你的意思是,你没有数据库,或者你不能使用数据库?如果是后者,那为什么?
  • 我没有此服务器应用程序的数据库。
  • 另外,由于整体部署限制,我无法为其添加数据库。
  • @KeepWalking - SQL Server Compact 嵌入到您的应用程序中 - 无需单独安装。

标签: c# .net configuration configuration-files


【解决方案1】:

我同意史蒂夫摩根的观点。我推荐 SQL Server Compact。

【讨论】:

    【解决方案2】:

    假设您的主机要求您没有数据库,仍然有几种选择:

    1. SQL Server Compact 方法,您只需将 DB 文件放在 App_Data 下并使用 ADONET 来访问这些文件,就好像它是一个功能齐全的 SQL 服务器一样。
    2. OLEDB 连接到 csv、dbf 或任何其他结构化文件。
    3. 本土解决方案 - 类似于 IDictionary 集合之类的东西手动保存到 XML、平面文件、二进制数组或其他任何内容中。

    【讨论】:

      【解决方案3】:

      您可能无法使用完全成熟的数据库,但您可以考虑使用嵌入式 SQL 引擎:

      SQL Compact EditionSQLLite

      我从未使用过 SQL CE,但 SQLLite 只是一个 DLL。

      显然,您没有完全成熟的数据库引擎的所有功能,但它们仍然非常强大,并且在持久化数据方面肯定比 Configuration Manager 好得多。

      【讨论】:

        【解决方案4】:

        因此,您始终可以使用 XML。或者真的使用 ConfigurationManager 文件(这里有一些示例 MSDN 或这里 Loading custom configuration files

        【讨论】:

        • ConfigurationManager 易于使用。但我不确定它在处理大数据时是否存在任何性能问题。
        • @KeepWalking 配置也是 XML,所以我认为性能不会有太大差异。
        • 如果您一次加载许多这些值,这可能是一种合理的方法,但在这种情况下您最好只使用平面文件。解析 XML 文档以选择单个值(如果性能远非如此)。
        【解决方案5】:

        我知道您说“无数据库”,但请考虑使用 SQL Server Compact,它提供了无需安装的免费、占用空间小的 SQL Server 功能 - 它有点像 Jet 的成熟版本.

        或者,您可能想看看是否可以找到 ISAM 实现。

        【讨论】:

        • sql server compact 是个好东西。对于成千上万的记录,请使用数据库而不是平面文件
        猜你喜欢
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-11
        • 2012-08-05
        • 2011-07-11
        • 1970-01-01
        相关资源
        最近更新 更多