2009-12-01 53 views
2

我们正尝试将老派客户端服务器应用程序转换为N层应用程序,并使用所有Microsoft技术(我们总共有.Net和SQLServer商店)进行同步和脱机支持。我们希望专注于编写业务逻辑,而不是花费时间进行管理,因此我们将尽可能多地使用现有的微软技术。ADO.Net数据服务脱机(Astoria脱机)死了吗?任何计划B?

到目前为止,我们决定使用SQL Server精简版采用的WinForm/WPF胖客户端,服务器上的SQL Server 2008,Microsoft同步框架做客户端的SQL数据库服务器和SQL数据库之间的同步。到现在为止还挺好。

麻烦之际,当我们试图实现“N级”的一部分。我们目前的应用程序相当SOA。每个数据访问调用都是通过Web服务完成的。所以很自然地我们想到使用ADO.Net数据服务。然后,我们惊喜地发现有一种叫做ADO.Net Data Service Offline(Astoria Offline)的功能,它允许我们通过Web服务进行数据访问,支持同步,甚至支持离线。突然之间,我们开始相信天堂真的是地球上的一个地方。

然后昨天我们的负责研究“Astoria Offline”的队友根据博客文章(http://blogs.msdn.com/astoriateam/archive/2009/03/07/announcing-project-codename-astoria-offline-alpha-preview.aspx)告诉我们“Astoria Offline is dead”。我们怀疑他在破解,但不想挑战他。事实上,Astoria Offline仍处于pre-alpha模式,我们需要一个生产解决方案。

所以比Astroia离线等,还有没有其他类似的解决方案,使我们能够使用微软的同步框架中的N层设置,还支持离线模式?

回答

1

如果你正在考虑ADO.NEt数据服务,那么你可能会发现,ADO.NET同步服务是一个很好的适合你。取决于您尝试创建的senario。或者远程数据访问可能更适合。

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

如果RDA可以提供更好的性能:1.你 主键,而不是使用标识列的GUID。 2.用户不会覆盖彼此的数据,所以你不需要冲突解决。 “最后胜利”的规则适用于你。 3.虽然您希望下推索引,但您并不在乎本地SSCE数据库是否应用了参照完整性约束。 4.您想要将事务上传到SQL Server的更改包含在事务中,以便应用所有更改或者不应用任何更改。 5.在客户端上更改跟踪已足够好,重新下载更新的服务器表不会太长。你开发人员不介意写一些同步代码。 7.能够通过IIS直接对SQL Server执行SQL和存储过程。 8.您正在下载只读数据。

如果您还需要更多,只需留言。