ADO.Net 数据服务离线 (Astoria Offline) 已经死了吗?有B计划吗?
我们正在尝试使用所有 Microsoft 技术将旧式客户端服务器应用程序转换为具有同步和离线支持的 N 层应用程序(我们是一家 .Net 和 SQLServer 商店)。我们希望专注于编写业务逻辑,而不是花时间在 Pluming 上,因此我们将尽可能多地使用现有的 Microsoft Pluming 技术。
到目前为止,我们决定使用带有 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”的队友根据博客文章 ( http://blogs.msdn.com/astoriateam/archive/2009/03/07/announcing-项目代号-astoria-offline-alpha-preview.aspx ) 。我们怀疑他精神崩溃,但不想挑战他。事实上,Astoria Offline 仍处于 pre-alpha 模式,我们需要一个生产解决方案。
那么除了 Astroia Offline 之外,还有其他类似的解决方案可以让我们在 N 层设置中使用 Microsoft Sync Framework 并支持离线模式吗?
We are trying to convert out old school client server application into a N-Tier application with synchronization and offline support using all Microsoft technology (we are a total .Net and SQLServer shop). We want to focus on writing business logic instead of spending time on pluming, so we are going to use as much existing Microsoft pluming technology as possible.
So far we decided to use SQL Server Compact edition with WinForm/WPF thick client, SQL Server 2008 on the server, Microsoft Sync Framework to do synchronization between client SQL DB and server SQL DB. So far so good.
Trouble comes as when we try to implement the "N Tier" part. Our current application is pretty SOA. Every data access call is done thru web service. So naturally we were thinking of using ADO.Net Data Service. Then it came a pleasant surprise to us that there's something called ADO.Net Data Service Offline (Astoria Offline), which allow us to make data access call through web service, support Synchronization, and even support offline. Suddenly we started to believe that heaven really is a place on earth.
And then yesterday our teammate who's in charge of researching on "Astoria Offline" telling us that "Astoria Offline is dead" based on the blog post ( http://blogs.msdn.com/astoriateam/archive/2009/03/07/announcing-project-codename-astoria-offline-alpha-preview.aspx ) . We suspected that he's on crack but didn't want to challenge him. The fact is that Astoria Offline is still in pre-alpha mode, and we need a production solution.
So other than Astroia Offline, is there any other similar solution that allow us to use Microsoft Sync Framework in N-tier setting that also support Offline mode?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您正在考虑 ADO.NET 数据服务,那么您可能会发现 ADO.NET 同步服务非常适合您。取决于您尝试创建的场景。或者,远程数据访问可能更适合。
您可能需要选择同步服务:
1.支持冲突解决。
2.服务器和客户端上的更改跟踪,以便仅交换数据差异。
3.即将推出的同步框架 v2 中的点对点同步。
4.与SQL Server以外的数据库同步。
5.最适合在台式机或笔记本电脑上运行的 SSCE。
如果满足以下条件,RDA 可能会为您提供更好的性能:
1.您的主键使用 GUID 而不是标识列。
2.用户不会覆盖彼此的数据,因此不需要解决冲突。 “最后获胜”的规则对你很有效。
3.虽然您希望索引下推,但您并不关心本地 SSCE 数据库是否应用了引用完整性约束。
4.您希望将上传到 SQL Server 的更改包装在事务中,以便应用所有更改或不应用任何更改。
5.客户端上的更改跟踪已经足够好了,重新下载更新的服务器表不会花费太长时间。
6.你们开发者不介意写一些同步代码。
7.能够通过IIS直接对SQL Server执行SQL和存储过程。
8.您正在下载只读数据。
如果你还需要什么,就喊吧。
If you are considering ADO.NEt Data Services, then you may well find that ADO.NET Synchronization Services are a good fit for you. Depending on the senario you are trying to create. Alternately Remote Data Access may fit better.
You may want to choose Sync Services:
1.Supports conflict resolution.
2.Change tracking on the server as well as the client so that only data differences are exchanged.
3.Peer to Peer sync in the forthcoming v2 of Sync Framework.
4.Sync with databases other than SQL Server.
5.Best suited for SSCE running on a desktop or laptop.
RDA may provide you better performance if:
1.Your Primary Keys use GUIDs instead of Identity columns.
2.Users don’t overwrite each other’s data so you don’t need conflict resolution. The rule of “Last in Wins” works for you.
3.While you want indexes to be pushed down, you don’t care if your local SSCE database has referential integrity constraints applied.
4.You want to wrap the changes you upload to SQL Server in a transaction so that all changes are applied or none of them are.
5.Change tracking on the client is good enough and re-downloading updated server tables doesn’t take too long.
6.You developers don’t mind writing some sync code.
7.Be able to execute SQL and Stored Procedures directly against SQL Server via IIS.
8.You’re downloading read-only data.
If you need anything more, just shout.