3

我正在 VB.NET(紧凑框架)中构建一个移动应用程序,我想知道在设备上处理潜在离线交互的最佳方法是什么。基本上,这些设备具有蜂窝和 802.11,但可能仍处于离线状态(接收不良等)。司机将在他们离开卡车时扫描箱子,我想更新新位置 - 如果有网络信号则立即更新,如果离线则排队并稍后处理。不过,这让我想到了如何处理一般的离线问题。

  • 我是否将尽可能多的数据缓存到设备上,以便在离线时使用它 - 本质上,每个设备上都会有(相关)生产数据的副本?还是离线时禁用某些功能更好,以免以后同步的麻烦?我知道这是一个非常具体的问题,取决于我的应用程序,但我很想知道其他人是否采取了这条路线。
  • 我是否构建应用程序本身以使其始终处于离线状态,将所有内容提交到本地类拥有的各种本地队列(本质上抽象出在线/离线事物),然后让该类将事物提交给服务器它可以?数据查找怎么样——如何以“半实时”的方式处理?
  • 或者我应该让应用程序尝试直接、实时地向服务器提交请求,并在它本身的请求失败时处理它?我可以看到让用户等待超时的潜在问题,但这是最可靠的方法吗?

我不是在寻找特定的解决方案,而实际上只是关于开发人员如何以尽可能流畅的用户体验完成此任务的故事,并提供指向操作指南或以下内容的链接或类似内容的链接。感谢您对此的指点!

4

3 回答 3

2

我们无法给您一个明确的答案,因为没有适合所有使用场景的“正确”答案。例如,如果您在后端使用 SQL Server 并在本地使用 SQL CE,则您始终可以设置合并复制并让数据引擎为您处理所有这些。这很干净。使用离线应用程序块可能会解决它。使用存储和转发可能是一种选择。

您可以在本地存储,然后使用直接连接滚动您自己的同步,当检测到网络时使用 WCF 服务的 Web 服务。您可以使用 MSMQ 进行交付。

您需要考虑的不是“正确”的方式是什么,而是您的实现将如何影响应用程序的可用性。如果由于缺乏连接而禁用功能,该应用程序是否仍然可用?如果你有过时的数据,那有问题吗?当您拥有 GSM/GPRS(通常不是免费的)时,可能需要传输一些关键数据,而当您拥有 802.11 时,可能需要传输更多数据。也许您可以在早上拉下查找表并仅上传交易,然后设备跟踪它所做的更改。

基本上它真的取决于它的使用方式、数据的性质、现场设备之间数据交易的重要性、数据延迟的影响,以及可能我无法想到的其他因素。

因此,第一步是确定应用程序需要如何使用,然后确定基础设施和架构,以提供所需的连接和数据访问。

于 2008-10-22T13:12:22.747 回答
0

我自己没有使用过,但是您是否研究过 CF 的“存储和转发”功能?它可能适合您的需求。我相信它使用 Exchange 邮箱作为消息队列来向设备发送 SOAP 数据包和从设备发送 SOAP 数据包。

于 2008-10-22T04:45:02.350 回答
0

解决此问题的最佳方法是始终离线工作,然后使用消息队列来处理与设备之间的发送更改。例如,当驱动程序将某物标记为已送达时,将项目更新为在本地商店中已送达,并将消息放入传出队列中以告知服务器它已送达。当连接建立时,将所有排队的项目发送回服务器,并从服务器获取所有排队的消息。

于 2008-10-22T11:49:52.867 回答