Windows应用商店应用中的本地和远程数据库

时间:2014-12-04 19:15:56

标签: c# sql database windows-store-apps

我正在使用Windows 8.1应用程序,该应用程序应该脱机和在线工作,它应该在这两种情况下连接到数据库。那么我应该实现哪种服务或数据库来允许访问本地和远程数据库并在它上线时进行同步。

1 个答案:

答案 0 :(得分:2)

在您的方案中没有太多工具可以帮助您。您可以充分利用Microsoft Sync framework,但是您需要记住,微软没有对WinRT的官方支持,也没有以当前形式进一步开发框架。

我建议你看看SyncWinRT这是一个开源库,可以与Microsoft Sync框架一起使用,使其适用于Windows Phone和Windows应用商店应用。设置起来并不是那么容易(Sync框架本身也没有)并且存在一些限制,但根据您的要求,它可能对您有用。

更广泛地了解您的情况,您可以采取以下三种方法:

  1. 让您的应用程序在线时直接与远程数据库一起工作,在离线时使用本地数据库,但在两种情况下使其工作原理相同:这是最棘手的,因为您需要能够根据模式在两个DAL(数据访问层)之间切换,并且当您重新联机时,还能够将本地数据库与远程数据库同步。要切换DAL,您可能需要查看一般具有此类功能的CSLA.NET,但其学习曲线非常高。为了同步这两个数据库,上面提到的SyncWinRT应该适合你。

  2. 让您的应用程序始终使用您根据用户请求与远程数据库副本同步的本地数据库副本:在这种情况下,您将在本地拥有与远程数据结构相同的数据结构,但您的本地业务逻辑将始终如此使用本地数据库。这样,您只需要一个DAL,用户可以在线时同步数据。同样,对于同步,您可以使用SyncWinRT,其余的只是一个带有本地SQLite数据库的标准应用程序,您可以根据需要进行开发。

  3. 拥有自定义本地数据结构和同步过程:通过控制数据同步给用户完全自定义移动体验。他应该知道在准备离线工作时他正在同步哪些数据,并在完成后同步数据。可以为此定制本地数据结构,并且必须完全手动完成同步,但如果您控制实际用例,则可以使其更简单。

  4. 根据我的经验,最后一个选项通常对用户和开发人员都有效。虽然它看起来更有效,但您可以通过更密切地控制用户选项来避免许多冲突的情况。甚至用户也可能更喜欢简单的向导,比原始在线版本更好。