3

我有一个在远程服务器上使用 sql server 2005 的 asp.net Web 表单应用程序。所有控件都使用 linq to sql 绑定。

我正在尝试提供完整的离线功能,所以我想知道是否可以像 sql server db 一样创建一个 sqlite 数据库,将其安装在用户设备上,然后当连接丢失或用户想要离线工作时,我将绑定更改为sqlite数据库?我想我会在用户第一次登录时将所有用户信息下载到 sqlite db,然后再同步。

这是否允许数据控件在离线时仍能正常工作,特别是在移动设备上?

我研究了本地存储等,但如果需要,我需要允许用户全天离线工作。此外,我将不得不对整个程序进行重大更改,这不是一个选择。

我的要求是让这个 asp.net 网络表单应用程序脱机工作而无需进行重大更改。

我已将应用程序从 asp.net 2008 转换为 2010,现在又转换为 2012。

我有 3 个月的时间来完成此转换,其中包括学习选择的任何技术。这是一个大型应用程序,所以时间不多。

任何建议都会很棒。

我还想知道您对提议的 sqlite 数据库的看法。

谢谢

4

3 回答 3

3

关于在浏览器中离线工作,您可能需要查看以下 HTML5 api:

  • AppCache(从服务器加载所有需要的文件,这样即使服务器不可用,站点也会启动)。
  • 索引数据库。这允许离线数据存储,跨多个浏览器会话持久。

在上述架构中,除了安装 sqlite 或与浏览器分离的一些此类本地数据库之外,您还需要提供浏览器能够与之通信的本地“服务器”组件(或其他此类 Windows 服务)启用浏览器和数据库之间的通信。

下图显示了可行的示例,但您重新发明 HTML5 中已经内置的内容

示例架构

于 2013-02-28T09:09:58.187 回答
2

我不确定这是否可能。首先,您的 Web 应用程序需要一个服务器来运行以显示页面。然后你需要一个本地数据库来连接它。同步它们并不困难。最大的问题是为每个用户在本地托管应用程序。

我建议不要使用 Web 应用程序,而是使用连接到远程数据库的 Windows 应用程序。如果无法访问远程数据库,您可以回退到本地数据库(sqllite 数据库)。然后,当连接恢复时,您可以以编程方式同步两个数据库。这可以通过创建所谓的“偶尔连接的应用程序”来完成。这是一篇好文章: http: //www.codeproject.com/Articles/29459/Introduction-to-ADO-NET-Sync-Services

于 2013-02-28T19:42:06.613 回答
1

那是不可能的。您不能强制在浏览器中运行的 Web 表单应用程序访问客户端的本地数据库。

不知何故,为了满足您的要求,您必须更改应用程序的架构,或者提供一个额外的、单独的离线工作通道。附加通道可以是使用本地存储的 html5 应用程序、使用 Sterling 等客户端 Silverlight 数据库之一的 Silverlight 客户端,甚至是使用客户端可用的任何数据库的 win 表单 ClickOnce 应用程序。

于 2013-02-24T20:53:16.460 回答