【问题标题】:web forms application storing data offline using sqlite使用 sqlite 离线存储数据的 Web 表单应用程序
【发布时间】:2013-03-01 03:42:06
【问题描述】:

我有一个在远程服务器上使用 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 数据库的看法。

谢谢

【问题讨论】:

  • 听起来太复杂了——html5有离线方式——但你需要同步一些方法,这是棘手的部分。
  • 我不是必须使用 html 控件才能离线使用 html5 吗?这是一个使用大量数据的业务应用程序。移动设备上的 sqlite 绑定是否可以与 asp.net 控件一起使用。
  • 如果不在客户端完全实现它,就无法使 Web 应用程序脱机,因为设备甚至无法连接到 Web 表单应用程序,所以所有控制在服务器上运行甚至不会执行,移动到 SqlLite 数据库也无济于事,因为它必须存储在客户端上,因此您需要有客户端代码才能访问它。这很重要,您必须在服务器端和客户端实现控制逻辑。
  • 我发现以下帖子stephenwalther.com/archive/2011/01/26/… 与创建清单文件有关。到目前为止,我已经将我的 linq to sql 更改为 linq to entity,并且正在构建存储库,将代码移到存储库中。我需要离线存储大量数据,我的理解是 sqlite 适用于大多数移动设备。最终这个项目将转移到 mvc,但现在,我希望不必更改控件。还有其他想法吗?
  • 如果我必须进行很多更改,是否有任何工具可以提供帮助。最好的方法是什么。最终一切都将是客户端,但如果有工具可以帮助我进行转换,那将是一个很大的帮助

标签: asp.net sqlite linq-to-sql offline


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • silverlight 可以在所有设备上运行吗?什么是 ClickOnce 应用?
      • Silverlight 可以在 Windows 机器上运行。 ClickOnce 是从服务器自动部署的桌面应用程序。
      • 如果我将所有控件更改为 html 控件并使用我正在构建的存储库将数据传递给控件,​​我是否仍然可以使用 Web 表单应用程序而没有任何约束?我知道 MVC 会更好,但这只是我,我现在没有时间学习其他技术
      • Sheri,存储库在服务器端运行!无论您如何组织服务器端代码,如果客户端离线,它将无法执行服务器代码。另请注意,服务器端是用 C# 完成的,实际上没有办法在 Web 浏览器中运行它。我们了解您的要求,但您不能跳过一些现有的限制。
      • 我的意图是当用户登录并连接到互联网时,当天的所有用户数据将被下载到客户端数据库,可能是本地存储,因为你说 sqlite 不会不工作。如果他们选择,用户将能够离线工作,或者如果他们失去互联网连接,它仍然可以离线工作。存储库将保存我的代码以及我设置它的方式,它将在线或离线管理数据。如有必要,我将转向 MVC,但我有 3 个月的时间,而且我对 mvc 的了解还不够好,无法实施。还有其他建议吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 2012-12-16
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多