.Net中可用于本地状态持久性的选项

时间:2011-09-15 00:27:32

标签: c# .net persistence local kiosk

我正在寻找持久保存应用程序本地状态的好选项(在.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就是完全适合这样做的地方。

5 个答案:

答案 0 :(得分:4)

我建议XmlSerializerBinaryFormatter,您可以在SO或谷歌上查看它们。

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

如果您需要一次性保存整个应用状态,那么两者都非常快捷。

但是,如果您需要逐个部分保存应用状态,则会发生更改,例如,您可以使用某种数据库http://www.sqlite.org/更好。

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

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

答案 1 :(得分:3)

SQLite绝对是一个不错的选择,它比一个完整的数据库更轻,并且在遇到严重错误的情况下它符合ACID。

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

答案 2 :(得分:1)

您可以使用app.config或Properties.Settings吗?

答案 3 :(得分:1)

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

答案 4 :(得分:0)

您可以使用SQL Server CE 4.0而不是SQLite。将数据存储在一个文件中,您可以使用实体框架代码优先。