C# 在XML或SQL CE中记录和存储值?

C# 在XML或SQL CE中记录和存储值?,c#,C#,我有一个C#应用程序,它正在从PLC设备写入状态信息,程序通过配置编辑器接受XML文件中存储的参数来编辑这些参数,程序使用配置文件检查PLC的内存地址,以告知程序地址名称和数据类型等。如果值与以前的值不同,则在测试后,我们将状态以及配置中的字段写入Log.XML,这似乎不是最好的方法,因为文件越来越大,并且使用大量cpu打开日志检查现有值,然后在更改时记录新值。问题是存储配置数据和日志数据的最佳方法是什么,日志数据被频繁写入,我想知道SQL CE是否有更好的性能,如果有,我应该也将配置数据存储在

我有一个C#应用程序,它正在从PLC设备写入状态信息,程序通过配置编辑器接受XML文件中存储的参数来编辑这些参数,程序使用配置文件检查PLC的内存地址,以告知程序地址名称和数据类型等。如果值与以前的值不同,则在测试后,我们将状态以及配置中的字段写入Log.XML,这似乎不是最好的方法,因为文件越来越大,并且使用大量cpu打开日志检查现有值,然后在更改时记录新值。问题是存储配置数据和日志数据的最佳方法是什么,日志数据被频繁写入,我想知道SQL CE是否有更好的性能,如果有,我应该也将配置数据存储在SQL中吗?

为什么没有缓冲区,将其写入(比磁盘快得多)。当缓冲区达到预定大小时,将其写入磁盘并清空所述缓冲区


我们有一个混合记录系统。如果客户将其设置为登录,则会写入磁盘/文件。但是,您可以保持文件流处于打开状态并对其进行写入。流将处理将其刷新到磁盘上的具体文件。不要为每一行跟踪打开日志文件。如果关闭日志记录,我们还有一个回退,这会写入缓冲区,并且只有在发生意外情况时才会将缓冲区写入磁盘。它是一个循环缓冲区,用于保存最新的跟踪线。

您应该使用现有的日志框架。(例如,log4net)不要再发明轮子。我已经使用SQL CE和实体框架建立了一个新项目,并使用自定义数据库结构,我没有看过log4net,我会做一些研究-谢谢我编辑了你的标题。请看“”,其中的共识是“不,他们不应该”。这是一个好主意,但该程序正在监控医院设备,我担心断电会导致数据丢失,我对C#和编程一般来说都是新手,所以请原谅我的无知。这是一个足够好的理由。我已经用更多的信息更新了我的答案。好的,谢谢你提供的信息,从这里我认为XMl比SQL更适合日志数据。