使用离线功能构建ASP.Net Web应用程序

时间:2013-08-07 11:18:21

标签: asp.net web-applications webforms iphone-standalone-web-app

我正在构建一个asp.net(3.5)网络应用程序,并想知道你是否知道我可以做任何方式,以便有一些离线功能。

这是必要的,因为人们可以在他们的设备上“安装”网络应用程序(例如,使用iPhone上的“添加到主屏幕”功能),然后在他们离线时使用该应用程序;用法只会受到限制(此时也不需要服务器调用)。

可以使用.aspx页面完成吗?

编辑 - .manifest补充道:

CACHE MANIFEST
index.aspx

/logo.png
/main.css
/main.js

编辑2 -

我们让它以一种方式离线工作;它在safari中有效,但我们不想在safari中使用它,我们希望它作为一个独立的应用程序。当我们尝试像这样运行它时,我们得到'无法连接到服务器错误'。这是否可以使用.aspx页面?

编辑3 -

我们使用.html页面工作但仍然没有.aspx

编辑第4期 -

它现在正在工作,虽然我们不确定为什么!我们上周将index.aspx添加到了cache.manifest的'network'部分(上周没有工作!),这可能有所帮助,但一旦我知道我会更新你实际发生的事情!< / p>

感谢大家的帮助!

4 个答案:

答案 0 :(得分:12)

对于使用ASP.NET的离线HTML5应用,请参阅此link和此link

对于离线功能,有一些替代方案:

01 - 如果您需要在离线应用程序中存储少量数据,并且安全性不是一个大问题,您可以使用HTML5 Web存储(link,{{3 }},linklinklink,并查看link以了解浏览器版本支持。)

主要缺点是缺乏安全性,基于键值(没有复杂的结构),存储大小存在很大限制(大多数浏览器为5MB)。


02 - 如果您需要更多数据,可以查看IndexDB(CanIUselinklinklink)或Web Sql(CanIUselinklinklink以获得浏览器支持。)

Web SQL的主要缺点是Firefox和IE不支持它。此外,它被W3C弃用。

IndexDB很好(CanIUse),但似乎ios仍然不支持它(参见canIUse)。

对于方法1和方法2,您可以在ASP.NET应用程序中创建响应式设计或专用移动网站(link)。


03 - (更大的灵活性需要更多努力)在ASP.NET应用程序和应用偶尔连接的应用程序概念的移动本机应用程序中实现Web服务(更多信息:linklink

  • ASP.NET Web应用程序 =&gt;对于Web应用程序,请使用与脱机功能相关的服务公开Web Service。

  • 移动应用 =&gt;使用应用程序的数据库实现本机移动应用程序(例如,为Android和iphone开发应用程序)。然后,您可以在移动应用程序中创建脱机功能,该功能将使用自己的数据库来读取和写入必须离线使用的(本地)数据。

然后,您可以在移动应用程序中实现静默同步机制,该机制依赖于互联网(例如,循环线程),该机制将通过Web服务访问ASP.NET应用程序来搜索更新。此同步机制将发送本地存储的数据,并从Web Service恢复可用于脱机功能的数据。


希望它有所帮助。

答案 1 :(得分:1)

这样做的方法 - 尽管我没有机会实际做到这一点 - 将使用HTML5的一个新功能:缓存清单。

你可以在这里阅读一个非常好的例子:http://www.html5rocks.com/en/tutorials/appcache/beginner/

答案 2 :(得分:0)

是的,可以使用ASP.NET完成,因为ASP.NET在客户端的浏览器中呈现为HTML页面,而离线功能是纯JavaScript / Html功能。 Here是Stephen Walther的一篇文章,展示了一种方法。

答案 3 :(得分:0)

是。这可以像其他人所说的那样使用Cache Manifest来完成。

我建议做的是创建一个handler来生成cache manifest,这可能是动态的。

缓存清单文件令人痛苦的一件事是,除非该文件发生更改,否则不会进行更新。这是处理程序的用武之地。添加一个注释部分,其中#作为注释字符,并在此之后更新时间戳

#2013-08-08 1:53:36 PM 'This is your comment section

如果这是由处理程序生成的,那么当每个用户的页面可能已更新时,您可以存储在数据库中(这使其在保持缓存的同时保持动态)

使用缓存清单时要记住一件重要的事情:

缓存的文件必须与正在访问的文件的确切查询字符串匹配。这在某些设备上似乎区分大小写,并且一个 MUST 上存在的任何查询字符串在另一个上都存在完全相同,因此在生成缓存清单文件时需要这种先见之明。