1

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


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

4

9 回答 9

3

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

例如:

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

Google doc 和 Gmail 将离线。

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

于 2009-02-24T06:54:24.833 回答
1

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

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

于 2009-02-03T14:59:17.097 回答
1

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

于 2011-01-25T08:49:27.410 回答
0

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

于 2011-05-23T11:15:50.837 回答
0

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

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

本地存储的工作方式如下: - Setter:window.localStorage.setItem(KEY, VALUE) - Getter:window.localStorage.getItem(KEY) - Remove:window.localStorage.removeItem(KEY)

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

于 2012-11-16T13:16:41.623 回答
0

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

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

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

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

于 2009-02-03T15:00:06.067 回答
0

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

于 2009-02-03T15:01:41.290 回答
0

如果您AJAX依赖XMLHttpRequest's,您可以:

  1. XML制作's的静态版本,XMLHttpRequest然后将其放入磁盘上的文件夹中。
  2. 重写你XMLHttpRequest URL的 's,使它们指向磁盘上的文件。
  3. 重写你XMLHttpRequest的,这样他们就不会检查状态(它总是0用于file://协议。

所有JScript作品都在file://页面上以及在页面上http://

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

于 2009-02-03T15:08:56.610 回答
-1

您想构建一个 Web 应用程序以离线工作吗?这是不可能的。

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

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

于 2009-02-03T14:57:48.597 回答