.net 将XML存储在本地,直到网络连接恢复

.net 将XML存储在本地,直到网络连接恢复,.net,windows,visual-studio,.net,Windows,Visual Studio,对于.NET来说,在正确的方向上的任何一点都将是巨大的帮助 试图编写一个程序来接受制造环境中的数据输入,并将其直接存储到SQL数据库中 我可以预见的一个问题是无线网络连接是否中断(或暂时超出范围) 如果没有连接回服务器,我将在哪里研究或如何创建本地XML副本或临时本地XML文件 有什么建议或方法吗 谢谢 (我是一名VB程序员,但如果需要,我可以算出C语言的翻译)我们也遇到了同样的问题。我们所做的是使用本地数据库,您也可以这样做,例如使用SQLLite,这是一个好主意。使用XML存储数据也是可行的

对于.NET来说,在正确的方向上的任何一点都将是巨大的帮助

试图编写一个程序来接受制造环境中的数据输入,并将其直接存储到SQL数据库中

我可以预见的一个问题是无线网络连接是否中断(或暂时超出范围)

如果没有连接回服务器,我将在哪里研究或如何创建本地XML副本或临时本地XML文件

有什么建议或方法吗

谢谢


(我是一名VB程序员,但如果需要,我可以算出C语言的翻译)

我们也遇到了同样的问题。我们所做的是使用本地数据库,您也可以这样做,例如使用SQLLite,这是一个好主意。使用XML存储数据也是可行的

我们这样做了,我们有两个独立的线程:

i) 一个线程(a),它扫描数据源(在我们的例子中是PLC)并将数据放入临时存储器(在您的例子中是XML文件)

ii)扫描临时数据并将其发送到中央数据库的线程(B)。发送到中央服务器的数据可以被删除或标记为已发送


这很有效。当(B)无法连接到服务器时,数据会在本地数据库/xml中累积。当与服务器的连接再次可用时,数据将被正确发送。

将NHibernate与两个不同的数据存储一起使用,一个用于远程,一个用于本地。问题在于之后的同步。您可以迭代本地数据库中的对象,对主数据库进行更改,然后从本地数据库中删除它们。理想情况下,在每次连接之后,本地数据库中应该没有数据——除非这是设计的一部分,在这种情况下,同步任务会变得更加复杂

消息队列可能适合您


您可以将消息写入队列,然后让另一个进程从队列读取并写入数据库。

为什么不使用本地数据库缓存机制

我从这里开始:


有一个智能客户端应用程序块可以帮助您处理一些更困难的细节。智能客户端应用程序块有助于将本地更改与数据库中的更改同步。

我以前也使用过IsolatedStorage,但消息队列似乎是一种更好的方法。谢谢大家的建议,可能有一百万种方法可以做到这一点,但这似乎正是我想要的。朝着这个方向前进(考虑到本地数据库通常是单向数据传输的,所以应该可以很好地工作)。谢谢