【问题标题】:How to write an offline version of an AJAX/ASP.NET web application如何编写 AJAX/ASP.NET Web 应用程序的离线版本
【发布时间】:2009-02-03 14:51:26
【问题描述】:

我们有一个使用 AJAX 与 ASP.NET Web 服务通信的 Web 应用程序。我们想写另一个可以离线使用的版本。我们需要能够尽可能地重用我们现有的代码。我们应该考虑哪些方法?


应用当前正在使用 XmlHttpRequest 从服务器获取动态数据。显然离线版不能与服务器对话,但它确实需要与某些东西对话!我确信在客户端上安装 IIS 或 Cassini 会起作用,但我希望有一个更简单的解决方案。 JavaScript 没有其他方法可以与一些外部代码对话吗?

【问题讨论】:

  • 不确定您在寻找什么。 AJAX 本身意味着您将与 Web 服务器进行通信。 “离线”是指您不希望与服务器通信,还是希望它仅在内部运行(而不是在 Internet 上)?
  • 他的意思可能只是“它有很多简洁的 Javascript 和 DHTML。”

标签: asp.net web-applications offline


【解决方案1】:

现在有很多离线网络应用程序。它只是从 AJAX 演变而来的。

例如:

WoaS(棒上的维基/stickwiki),Tiddly Wiki,

Google 文档和 Gmail 将离线。

您无需网络服务器即可在离线模式下运行这些网络应用程序。只需将所需的数据、脚本存储在客户端(通常为 XML)。

【讨论】:

    【解决方案2】:

    其中一种可能性是使用 Cassini。这是一个充当 ASP.Net 运行时主机的 Web 服务器。您可以在 Windows 应用程序或 Windows 服务中托管 Cassini。在这种情况下,您不必重写 Web 应用程序和 Web 服务。

    大多数其他解决方案确实需要重写您的网络应用程序和网络服务。根据您编写现有应用程序的方式,您可以重用或多或少的代码。

    【讨论】:

      【解决方案3】:

      您是否考虑过带有应用程序缓存和离线存储的 HTML5?

      【讨论】:

        【解决方案4】:

        如果您希望创建软件包的“离线”版本,那么到目前为止,您最大的问题是需要将您的站点安装到 IIS 的本地副本中(注册虚拟目录等)。几年前我曾短暂地追求过这一点,但沮丧地放弃了。 可以做到这一点:许多软件供应商(例如 DevExpress)都这样做,因此您可以在本地获得其演示项目的副本。确实, 能够做到这一点。问题是经典的“它适用于我的电脑”综合症。根本无法保证我的大多数最终用户都具备完成这项工作的技术能力。

        因此,我强烈建议您不要走这条路,除非您拥有非常精通技术的用户和庞大的支持人员。

        但还有一个非常重要的问题:您是否将所有数据访问代码抽象为 DAL?如果没有,那么您在管理数据访问方面还有很多工作要做。

        更新:用户“Rine”推荐了 Cassini。我只是想让你知道我也追求 Cassini 和另一个 3rd-party Web 服务器。我认为 Cassini 存在许可问题,但可能是错误的 - 已经有一段时间了。但是,我清楚地记得使用这种方法遇到了一个又一个的障碍,非常很少的文档可以帮助我。

        【讨论】:

        【解决方案5】:

        如果您希望 Web 应用程序脱机运行,您需要一个绑定到 localhost (127.0.0.1) 地址的 Web 服务器(用于 ASP 的 IIS)。在此之后,您可以通过在 Web 浏览器中键入 http://127.0.0.1/ 来访问您的 Web 应用程序,就像您在线一样。

        【讨论】:

          【解决方案6】:

          如果您的 AJAX 依赖于 XMLHttpRequest,您可以:

          1. 制作XML 的静态版本,您可以通过XMLHttpRequest 将其放入磁盘上的文件夹中。
          2. 重写您的 XMLHttpRequest URL,使其指向磁盘上的文件。
          3. 重写您的XMLHttpRequest,这样他们就不会检查状态(对于file:// 协议,它始终是0

          所有JScript 都适用于file:// 页面以及http:// 页面。

          当然,这不是开发静态页面的最佳方式,但它可能会为您节省一些重写时间。

          【讨论】:

            【解决方案7】:

            我还没有遇到过专门为 asp.net 构建的任何框架,例如可用于 PHP 或 RoR 的框架。 这是 Steven 撰写的一篇很好的文章,可帮助您开始使用 HTML 5 和 ASP.Net Creating HTML 5 Offline application

            【讨论】:

              【解决方案8】:

              显然离线版无法与服务器对话,但它确实需要与某些东西对话!

              输入 HTML5 本地存储。它像数据库一样工作,使您能够将数据放在客户端上。实际上,您必须在 javascript 中重新编写部分代码并将其传输到客户端,但随后它将脱机工作。

              本地存储的工作原理如下: - 设置器:window.localStorage.setItem(KEY, VALUE) - 获取器:window.localStorage.getItem(KEY) - 删除:window.localStorage.removeItem(KEY)

              要让主页离线工作,您需要创建一个清单。这用于在客户端上存储完整的站点。有关清单的更多信息,请参阅此内容: http://diveintohtml5.info/offline.html

              【讨论】:

                【解决方案9】:

                您想构建一个 Web 应用程序以离线工作??做不到。

                您可以将界面代码从其余部分中分离出来(在不同的 dll 中)并创建一个 Windows 应用程序来模仿您的 Web 应用程序的行为。这样,您就有 2 个不同的用户界面,但业务规则和数据访问的代码相同。

                我真的没有看到任何其他方式......

                【讨论】:

                • 我已经看到它用 DOJO 完成了.. 虽然我不确定细节足以回答这个问题
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-08-01
                • 2012-07-07
                • 1970-01-01
                • 2021-07-17
                • 2013-08-08
                • 1970-01-01
                相关资源
                最近更新 更多