最佳实践创建简单队列Compact Framework

时间:2015-11-28 06:22:27

标签: c# .net compact-framework windows-embedded-compact smart-device

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

我们面临的问题是连接丢失,这种情况发生了很多,因为接待有时候很糟糕(隧道,树林等)。

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

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

  • 队列应该是持久的,因此如果设备重新启动,则数据不会丢失
  • 我们Moment的服务器正在运行ASP.NET WebApi,所以如果可以使用它会很棒
  • 我们发送不同类型的数据,其中一些数据必须先到达服务器,因此需要某种优先级系统
  • 新数据比旧
  • 更重要

我搜索了很多但却找不到任何东西。你们有什么想法吗?

我希望这是正确的地方,它似乎是针对软件推荐的具体内容。谢谢

1 个答案:

答案 0 :(得分:0)

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

MSDN

上有一篇很好的文章

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

另一种解决方案使用SMS将更新和处理信息发送给客户端。

当我使用Compact Framework队列来解耦主进程和通信时,我没有使用这些来保持warmboot。但只是在每个EnQueue或DeQueue上定期保存队列对象不应该是使用序列化的问题。

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

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