【问题标题】:Sync Framework Version Upgrade QuestionSync Framework版本升级问题
【发布时间】:2011-01-03 01:04:33
【问题描述】:

对于熟悉 Microsoft Sync Framework 的人来说,这个问题适合您。这是关于应用程序版本控制的。假设我发布了我的软件的 1.0 版本,并且从 1.0 版本的 Web 服务创建了一个本地数据库 sdf 文件,并且生活持续了一段时间,用户使用该应用程序并将数据放入本地数据库等等,那么我的软件 2.0 版出来了,它们是对数据库(模式)的更改,例如新列、新表、可空性更改等......

如果用户在 1.0 版数据库中有数据并且我发布了一个新的 2.0 版网络服务,因为该软件的 2.0 版已经发布并且 1.0 版数据库不再能够与 2.0 版同步,那该怎么办? web 服务,我如何从 1.0 版数据库中获取他们的数据?更重要的是,如何在不丢失任何 1.0 数据的情况下将每个人干净地更新到 2.0 版?

【问题讨论】:

    标签: c# .net microsoft-sync-framework


    【解决方案1】:

    在我们使用 WCF 上的同步框架的项目中,我们支持不同的数据版本。在我们的例子中,我们根据客户端使用的数据版本使用不同的 syncServerProviders。 如果数据库架构发生更改,您可以通过手动编写 em 来配置同步提供程序,以仅选择/更新客户端数据版本支持的列。

    【讨论】:

      【解决方案2】:

      你不能拆掉 v1。网络服务 (http://example.com/sync/v1.0/)。您的所有 v1 客户端继续与 v1 Web 服务同步。客户端升级到 v2。 sdf 通过运行将数据库升级到 v2 的部署脚本。在安装过程中(CREATE、ALTER、DROP 语句)。升级后,客户端同步到 v2 服务 (http://example.com/sync/v2.0/)。

      确认所有客户端都升级到v2后,就可以拆掉v1了。网络服务。如果客户数量未知,您必须依靠业务决策来保留v1。向上。让服务并行运行 2-3 个版本以支持旧客户端的情况并不少见。

      【讨论】:

      • 这是有道理的,但那不意味着我必须拥有不同版本的服务器数据库。因为版本 1 和版本 2 服务都将来自同一个服务器数据库。我如何处理翻译?我知道这取决于所做的更改,但我们假设这是一个巨大的更改。
      • 如果同步服务的 ISA 部分无法协调,您将硬着头皮支持两个不同的数据库,并通过某种方式在它们之间进行通信(例如复制)。不幸的是,在分布式系统中,所有模式依赖项(以及同步框架引入了一个,就像复制顺便说一句)在 v+ 推出时都有这个固有的问题,仅仅是因为你不能同时升级所有参与者,而且通常甚至不能在可接受的时间窗口内.升级是任何分布式应用程序中最大的挑战之一。
      猜你喜欢
      • 1970-01-01
      • 2021-03-12
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多