0

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

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

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

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

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

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

我希望这是正确的地方,它似乎是专门针对软件推荐的。谢谢

4

1 回答 1

0

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

MSDN上有一篇不错的文章

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

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

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

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

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

于 2015-11-29T06:30:26.783 回答