2

我们正在尝试使用所有 Microsoft 技术将旧式客户端服务器应用程序转换为具有同步和离线支持的 N 层应用程序(我们是一个完整的 .Net 和 SQLServer 商店)。我们希望专注于编写业务逻辑而不是花时间在管道上,因此我们将尽可能多地使用现有的微软管道技术。

到目前为止,我们决定使用带有 WinForm/WPF 胖客户端的 SQL Server Compact 版本,服务器上的 SQL Server 2008,Microsoft Sync Framework 来做客户端 SQL DB 和服务器 SQL DB 之间的同步。到现在为止还挺好。

当我们尝试实施“N 层”部分时,麻烦就来了。我们当前的应用程序是相当 SOA。每个数据访问调用都是通过 Web 服务完成的。所以我们自然而然地考虑使用 ADO.Net 数据服务。然后让我们惊喜的是,有一个叫ADO.Net离线数据服务(Astoria Offline),可以让我们通过web服务进行数据访问调用,支持同步,甚至支持离线。突然间,我们开始相信天堂真的是地球上的一个地方。

然后昨天我们负责研究“Astoria Offline”的队友告诉我们“Astoria Offline 已经死了”根据博客文章(http://blogs.msdn.com/astoriateam/archive/2009/03/07/宣布-项目-代号-astoria-offline-alpha-preview.aspx)。我们怀疑他正在崩溃,但不想挑战他。事实上,Astoria Offline 仍处于 pre-alpha 模式,我们需要一个生产解决方案。

那么除了 Astroia Offline 之外,还有其他类似的解决方案可以让我们在 N 层设置中使用 Microsoft Sync Framework 并支持离线模式吗?

4

1 回答 1

1

如果您正在考虑使用 ADO.NET 数据服务,那么您可能会发现 ADO.NET 同步服务非常适合您。根据您尝试创建的场景。或者,远程数据访问可能更适合。

您可能要选择同步服务: 1.支持冲突解决。2.服务器和客户端上的更改跟踪,以便只交换数据差异。3.即将发布的同步框架v2中的点对点同步。4.与SQL Server以外的数据库同步。5.最适合在台式机或笔记本电脑上运行的 SSCE。

如果满足以下条件,RDA 可能会为您提供更好的性能: 1.您的主键使用 GUID 而不是身份列。2.用户不会覆盖彼此的数据,因此您不需要解决冲突。“Last in Wins”的规则适合你。3.虽然您希望索引被下推,但您并不关心您的本地 SSCE 数据库是否应用了引用完整性约束。4.您希望将上传到 SQL Server 的更改包装在事务中,以便应用所有更改或不应用任何更改。5.客户端上的更改跟踪足够好,重新下载更新的服务器表不会花费太长时间。6.你们开发者不介意写一些同步代码。7.能够通过IIS直接对SQL Server执行SQL和存储过程。8.您正在下载只读数据。

如果您还需要什么,请大声喊叫。

于 2010-02-17T17:57:03.750 回答