代码之家  ›  专栏  ›  技术社区  ›  Chris

与.NET的脱机同步选项

  •  5
  • Chris  · 技术社区  · 16 年前

    我被要求研究处理一个我们应该开发的应用程序的方法。假设此应用程序是用C编写的Windows窗体,如果它已连接,它将直接向服务器发出命令,但是如果应用程序处于脱机状态,则必须像已连接一样保持状态,然后在其连接后同步并向服务器发出数据更改/命令。 有联系的。

    我不知道从哪里开始找。这类似于google gears,但我认为如果我们采用winform路由,我就没有这个选择(这看起来很可能,因为应用程序需要其他功能,而web应用程序无法执行)。是 Microsoft Sync framework 一个可行的选择?Silverlight会这样做吗?还有其他选择吗?我在谷歌上搜索了一下,但我希望社区能为这个场景提供最好的信息。

    2 回复  |  直到 16 年前
        1
  •  9
  •   Mark Seemann    16 年前

    微软的同步框架肯定支持你描述的场景,尽管我会说让它工作起来相当复杂。

    要理解同步框架的一点是,它实际上是两个截然不同的框架,在同一个包中提供:

    • 同步框架
    • ADO.NET同步服务版本2

    到目前为止,ADO.NET同步服务是最容易设置的,但它们仅限于同步两个关系数据存储(尽管您可以将Web服务设置为两者之间的远程外观)。

    核心同步框架没有这样的限制,但是实现起来要复杂得多。当我六个月前使用它时,我发现最好的学习来源是SDK,尤其是文件/文件夹同步示例代码。

    据我所知,这两个“框架”之间几乎没有或没有代码和类型的共享,所以您必须选择其中一个。

    在这两种情况下,对于如何托管同步代码没有任何约束,因此Windows窗体只是其中一个选项。

        2
  •  2
  •   David    16 年前

    如果我理解正确,在我看来,这不像是一个实际的数据同步问题,在我看来,你想让两个数据库保持同步。听起来更像是在连接不稳定的环境中,客户机需要一种可靠的机制来调用服务器上的函数,如果此时不存在连接,则需要在连接备份后立即调用该函数。

    如果我的理解是正确的,这是一个选择。如果没有,这可能没有帮助。


    对于一个深入的问题,这是一个非常简短的答案,但我们也遇到了类似的情况,我们就是这样处理的。

    我们有一个客户机应用程序,需要监控商店中PC机上的一些数据。当某些事件发生时,这个客户机应用程序需要在公司办公室更新我们的服务器,最好是实时更新。但是,连接不是100%可靠的,因此我们需要一个类似的机制。

    我们通过尝试通过Web服务写入服务器来解决这个问题。如果调用Web服务时出错,该命令将在名为“等待上载”的文件夹中序列化为XML文件。

    我们的客户端应用程序中有一个运行在计时器上的例程, n 分钟。当计时器超时时,它将检查此文件夹中的XML文件。如果找到,它会尝试使用保存在文件中的信息调用Web服务,依此类推,直到成功为止。调用成功后,XML文件将被删除。

    这听起来有点老套,但很容易编写代码,而且五年来一直工作得很完美。实际上,它是我们最无故障的应用程序,我们在其他地方成功地实现了该模式。