C# 管理服务(如IIS)的哪个数据存储
我有一个C#Windows服务,它为我的服务器应用程序管理一些东西。这不是主应用程序,而是用于控制实际应用程序的辅助进程。用户使用WinForms应用程序通过WCF连接到此应用程序。这一切看起来有点像IIS管理器 我需要此应用程序的数据存储。 目前,我使用单独的XML文件,这些文件在启动时加载,在内存中更新,并在每次更改时刷新到磁盘。我喜欢这个,因为:C# 管理服务(如IIS)的哪个数据存储,c#,.net,C#,.net,我有一个C#Windows服务,它为我的服务器应用程序管理一些东西。这不是主应用程序,而是用于控制实际应用程序的辅助进程。用户使用WinForms应用程序通过WCF连接到此应用程序。这一切看起来有点像IIS管理器 我需要此应用程序的数据存储。 目前,我使用单独的XML文件,这些文件在启动时加载,在内存中更新,并在每次更改时刷新到磁盘。我喜欢这个,因为: 当出现问题时,我们可以简单地在记事本中编辑XML文件 我与MSSQL express等没有外部依赖关系 当格式更改时,我不必更新数据库模式
- 当出现问题时,我们可以简单地在记事本中编辑XML文件李>
- 我与MSSQL express等没有外部依赖关系李>
- 当格式更改时,我不必更新数据库模式
using(IObjectContainer db = Db4oEmbedded.OpenFile(YapFileName))
{
Pilot pilot1 = new Pilot("Michael Schumacher", 100);
db.Store(pilot1);
}
数据库中的XML
另一种方法是将SQLLite或SQLCE(如其他海报所述)与xml数据结合使用
数据协定序列化程序
如果您还没有使用DataContractSerializer/DataContracts来生成/加载xml文件,那么值得考虑。它与您已经用于WCF的健壮框架相同。它可以很好地处理版本控制。您可以使用它来处理磁盘上的xml文件,或者将其用于数据库。这其中有哪些部分不稳定?你犯了什么错误?您遇到了什么样的内存管理问题?您的XML文件应该满足您的要求。什么是“不稳定”和“脆弱”呢?我希望改进您的IO,而不是寻找一种新技术。您看过SQL Server Compact吗?在您的情况下,这听起来是个好主意,唯一的缺点是架构更改,但老实说,这种情况发生的频率有多高,更改有多复杂,也许可以先看看EF代码,以便在每次发生更改时更新您的架构(很可能会丢失数据)我在管理不同的文件时遇到了最大的问题。我曾尝试使用一个全局
锁,但这太容易了,而移动到更细粒度的模型会使应用程序的这一部分过于复杂。(我觉得我正在构建一个数据库,这不好。)XML和SQLite的结合是什么意思?我在考虑创建一个数据库结构,可以将XML节点和属性存储为记录。你觉得怎么样?@Pieter-我想的更多是将XML作为一个大字符串放入数据库中。几乎任何嵌入式数据库都支持有点大的文本字段/备注字段等。如果试图将节点和属性拆分为关系结构,则会遇到性能和复杂性问题。性能不是问题,因为数据很少(约30个XML文件,总共600个元素/属性).复杂性,也许吧。对于XML blob,我仍然需要一种方法来索引数据,这意味着我需要一个规范化的架构,我回到了SQLite。还有一些其他选择……NoSQL嵌入式方法如何。ESENT内置在Windows中。RavenDB也可以工作。这个问题有更多的答案:我在管理不同的文件。我尝试过使用一个全局锁,但这太容易了,而且移动到更细粒度的模型会使应用程序的这一部分太复杂。(我觉得我正在构建一个数据库,这不好。)我也在考虑NoSQL,但我希望能为我的情况提供一个建议,即使用.NET本机,而不必安装额外的服务器。我建议查看RavenDB()。我个人没有使用过它,但我知道它相当成熟,并且在.NET中使用起来相当容易