IIS等管理服务的数据存储

时间:2011-04-08 15:36:55

标签: c# .net

我有一个C#Windows服务,它为我的服务器应用程序管理一些东西。这不是主应用程序,而是用于控制我的实际应用程序的辅助进程。用户使用WinForms应用程序通过WCF连接到此应用程序。这看起来有点像IIS管理器。

我需要这个应用程序的数据存储。

目前,我使用单独的XML文件,这些文件在启动时加载,在内存中更新并在每次更改时刷新到磁盘。我喜欢这个因为:

  • 出现问题时,我们可以在记事本中编辑XML文件;
  • 我没有外部依赖关系,例如MSSQL快递;
  • 格式更改时,我不必更新数据库架构。

但是,我发现这不稳定,并且内存管理非常脆弱。

我应该使用什么而不是过度杀戮(例如MSSQL express),而不会失去太多上述优势?

3 个答案:

答案 0 :(得分:1)

SQLite适用于需要可靠数据存储的情况,但不需要完整数据库服务器的强大功能或可扩展性。

如果您不想担心架构更改,最好使用xml方法或各种NoSQL数据库。你的xml设置究竟有什么不稳定的地方?

如果有多个并发进程访问xml文件,则必须经常加载它以确保它保持同步。如果这是多用户情况,则xml文件可能在非常小的范围内不可行。这是数据库系统相当有效地解决的问题。

答案 1 :(得分:1)

尝试SQL CESQLLite

答案 2 :(得分:0)

<强> db4o的

一种解决方案是使用和对象数据库,如dB4o。它占地面积极小,速度快,可以为持久化对象添加属性,而无需进行架构更改。此外,您不必编写任何sql。

存储对象非常简单:

using(IObjectContainer db = Db4oEmbedded.OpenFile(YapFileName))
{
   Pilot pilot1 = new Pilot("Michael Schumacher", 100);
   db.Store(pilot1);
}

数据库中的XML

另一种方法是使用SQLLite或SQL CE(如其他海报所述)和xml数据。

数据合约序列化程序

如果您尚未使用DataContractSerializer / DataContracts生成/加载xml文件,则值得考虑。它与您已经用于WCF的强大框架相同。它很好地处理版本控制。您可以使用它来处理磁盘上的xml文件,或将其与数据库一起使用。