我有一个asp.net Web表单应用程序,它在远程服务器上使用sql server 2005。 所有控件都使用linq绑定到sql。
我正在尝试提供完整的离线功能,所以我想知道我是否可以像sql server db一样创建一个sqlite数据库,将其安装在用户设备上,然后当连接丢失或用户想要离线工作时,我改变了绑定到sqlite数据库? 我想我会在用户第一次登录时将所有用户信息下载到sqlite db,然后再进行同步。
这是否允许datacontrol在离线时仍能正常运行,特别是在移动设备上?
我已查看本地存储等,但我需要允许用户在需要时全天离线工作。另外,我不得不对整个程序进行重大修改,这不是一种选择。
我的要求是让这个asp.net Web表单应用程序脱机工作而不会发生重大变化。
我已将应用程序从asp.net 2008转换为2010年,现在转换为2012年。
我有3个月的时间来完成此转换,其中包括学习所选择的任何技术。这是一个很大的应用程序,所以时间不长。
任何建议都很棒。
我也想知道您对提议的sqlite数据库的看法。
由于
答案 0 :(得分:3)
关于浏览器中的离线工作,您可能需要查看以下HTML5 apis:
在上面描述的体系结构中,除了安装sqlite或者某些与浏览器分开的本地数据库之外,您还需要提供浏览器能够提供的本地“服务器”组件(或其他此类Windows服务)进行通信以启用浏览器和数据库之间的通信。
下图显示了 工作的示例,但您将重新发明已在HTML5中构建的内容:
答案 1 :(得分:2)
我不确定这是否可行。首先,您的Web应用程序需要运行服务器才能显示该页面。然后你需要一个本地数据库来连接它。同步他们并不困难。最大的问题是在本地为每个用户托管应用程序。
我建议使用连接到远程数据库的Windows应用程序,而不是使用Web应用程序。如果无法访问远程数据库,您可以回退到本地数据库(sqllite数据库)。然后,当恢复连接时,您可以以编程方式同步两个数据库。这可以通过创建所谓的“偶尔连接的应用程序”来完成。这是一篇好文章:http://www.codeproject.com/Articles/29459/Introduction-to-ADO-NET-Sync-Services
答案 2 :(得分:1)
这是不可能的。您无法强制在浏览器中运行的Web表单应用程序访问客户端的本地数据库。
然后,为了满足您的要求,您必须更改应用程序的体系结构,或者为脱机工作提供额外的单独通道。附加频道可以是使用本地存储的html5应用程序,使用客户端Silverlight数据库(如Sterling)之一的Silverlight客户端,甚至可以使用客户端提供的任何数据库获取表单ClickOnce应用程序。