6

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

我不确定从哪里开始寻找。这类似于 Google Gears,但如果我们采用 Winform 路线,我认为我没有该选项(这看起来很可能,因为应用程序需要的其他功能是 Web 应用程序无法执行的)。Microsoft Sync 框架是一个可行的选择吗?Silverlight 会做这样的事情吗?还有其他选择吗?我已经在 Google 上搜索了一下,但希望社区能就在这种情况下最好的情况提供意见。

4

2 回答 2

9

Microsoft Sync Framework 绝对支持您描述的方案,尽管我会说让它工作相当复杂。

关于 Sync 框架需要理解的一件事是,它实际上是两个完全不同的框架,它们在同一个包中提供:

  • 同步框架
  • ADO.NET 同步服务 v. 2

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

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

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

无论哪种情况,对托管同步代码的方式都没有限制,因此 Windows 窗体只是众多选项中的一个。

于 2009-09-30T19:18:21.917 回答
2

如果我理解正确,这对我来说听起来不像是一个实际的数据同步问题,你想让两个数据库保持同步。这听起来更像是您想要一个可靠的机制让客户端在连接不稳定的环境中调用服务器上的函数,如果当时连接不存在,您希望在连接恢复后立即调用该函数向上。

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


这是对深入问题的非常简短的回答,但我们遇到了类似的情况,这就是我们处理它的方式。

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

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

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

这听起来有点骇人听闻,但它的代码很简单,并且已经完美运行了五年。它实际上是我们最无故障的应用程序,我们已经在其他地方成功实现了该模式

于 2009-09-30T19:24:02.137 回答