C# 创建简单队列压缩框架的最佳实践

C# 创建简单队列压缩框架的最佳实践,c#,.net,compact-framework,windows-embedded-compact,smart-device,C#,.net,Compact Framework,Windows Embedded Compact,Smart Device,我们正在使用运行在Windows CE Embedded 7.0上的.net Compact Framework 3.5创建一个应用程序。此应用程序正在从我们的不同车辆收集不同的数据,并将其发送回我们的服务器 我们面临的问题是连接丢失,这种情况经常发生,因为接收有时非常糟糕(隧道、树林等) 如果连接丢失大约15分钟,大量数据将无法到达服务器。现在的问题是,我们应该如何处理这些数据?使用现有的队列框架之一?创造我们自己的 我们需要的一些东西是或是很棒的东西: 队列应该是持久的,因此如果设备重新启

我们正在使用运行在Windows CE Embedded 7.0上的.net Compact Framework 3.5创建一个应用程序。此应用程序正在从我们的不同车辆收集不同的数据,并将其发送回我们的服务器

我们面临的问题是连接丢失,这种情况经常发生,因为接收有时非常糟糕(隧道、树林等)

如果连接丢失大约15分钟,大量数据将无法到达服务器。现在的问题是,我们应该如何处理这些数据?使用现有的队列框架之一?创造我们自己的

我们需要的一些东西是或是很棒的东西:

  • 队列应该是持久的,因此如果设备重新启动,数据不会丢失
  • 我们的服务器目前正在运行ASP.NET WebApi,因此如果可以使用它,那将是非常棒的
  • 我们发送不同类型的数据,其中一些数据必须先到达服务器,因此需要某种优先级系统
  • 新数据比旧数据更重要
我找了很多,但什么也没找到。你们有什么想法吗


我希望这是一个正确的地方,它似乎是为了具体的软件建议。谢谢

我没有解决方案,但客户正在使用第三方框架,例如,或者在那里编写自己的“基于队列的”同步框架

网站上有一篇很好的文章

一种解决方案是使用基于文件的消息传递系统,该系统具有独立的通信器进程,与主进程解耦。每条消息(数据)都是一个文件,通信器处理这些文件并更新主进程或远程数据服务器。我已经做了一些单向解决方案使用ftp和一个使用电子邮件。电子邮件系统的优点是已经是持久的,并且是基于“队列”的

另一个解决方案使用SMS向客户端发送更新和处理信息

因为我使用了紧凑的框架队列来解耦主进程和通信,所以我没有必要让这些队列持久化为warmboot。但是,使用序列化时,仅在每次入队或出队时定期保存队列对象不应该是问题

我的提示是使用CF队列并使用序列化持久化它们。如果随后使用Web服务或其他方式在服务器和客户机之间传输数据,则没有什么区别。您是否考虑过同一服务器数据的重复更新的并发更新和同步错误,或者这不是问题

OTOH MS为处理数据同步的SQL Server/SQL Server Compact提供了一个同步框架。它需要在SQL Server端使用Windows和IIS