4

我正在寻找保持应用程序本地状态的好选择(在 .Net/C# 中创建。)

我考虑过推出自己的解决方案,或者使用简单的本地数据库,例如 Sqllite,但是我想我会问 SO 社区有哪些可用的选项。

我正在处理的应用程序存在于 Kiosk 上,我需要维护本地状态以防意外关闭和其他类似异常。

你有什么建议吗?

更新

好吧,经过进一步审查,我决定将 SQLite 与 DbLinq 一起使用,主要的替代竞争者是 SQL Server Compact 版本,但我发现有几个重要的因素,这些因素将 SQLite 置于 SQLCE 之上。

尤其。

  • SQLCE (IMO) 提供的 API 不如 SQLite.net 或 DbLinq 提供的丰富。
  • SQLCE 运行时性能不如 SQLite。
  • SQLite 是开源的是一个有用的因素。

为什么我没有使用 Properties.Settings 或 app.config?

对于我的用例,我需要一个(易于)可查询的事件日志(我需要允许审计信用交易。)我在这里处理的主要状态值是信息亭上的可用信用。因此,要在应用程序启动时恢复我的状态变量,我可以查询日志以获取最后一个条目并从那里获取所需的值。

当您只需要存储一个值并检索它时,Properties.Settings 或 app.config 是执行此操作的最佳位置。

4

5 回答 5

4

我会推荐XmlSerializeror BinaryFormatter,您可以在 SO 或 google 上查看它们。

您的选择将取决于一些偏好,例如数据集的大小或快速序列化它的能力。

如果您需要一次性保存整个应用程序状态,两者都是非常快捷的方法。

但是,如果您需要部分保存应用程序状态,当发生更改时,您最好使用某种数据库,例如http://www.sqlite.org/ 。

http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm

http://www.jpreece.com/csharp/serialization-tutorial/

于 2011-09-15T00:33:27.600 回答
3

SQLite 绝对是一个不错的选择,它比完整的数据库更轻巧,并且它符合 ACID,以防万一出现严重错误。

这里唯一的要求是您有一个数据库的并发用户。

于 2011-09-15T00:44:18.450 回答
1

你可以使用 app.config 还是Properties.Settings

于 2011-09-15T00:32:57.447 回答
1

您可以使用VS 中的设置。对于您的情况,您需要存储用户首选项的用户范围设置。

于 2011-09-15T00:38:17.460 回答
0

您可以使用 SQL Server CE 4.0 代替 SQLite。将数据存储在一个文件中,您可以使用 Entity Framework Code-First。

于 2011-09-15T07:51:40.907 回答