2011-03-07 78 views
0

我对网络应用程序很陌生,所以这可能是一个非常愚蠢的问题。基本上我想有一个与数据库同步的Web应用程序,它也应该能够发送将与数据库同步的数据。可连接/断开连接的Web应用程序?

我的问题是关于停机时间。如果Web应用程序失去了网络连接,是否有办法将输入的信息保存到它中,直到它重新获得网络连接并可以将其同步到数据库?

感谢您的帮助!

+0

这非常依赖。当客户端页面打开时,您当然可以保留任何数据,直到您可以重新打开与服务器的ajax对话。但是,一旦用户关闭了页面,您的选择就会变得更加有限 - 我可以想到的仅仅是一个cookie,而这只是4096字节。也许考虑一个备份服务器,可以保存数据,直到主服务器可以再次访问? – dartacus 2011-03-07 08:26:54

+0

刚刚意识到 - 你开始谈论网络应用程序,但完成了谈论移动应用程序的问题。如果你正在设计一个完全成熟的android/iphone/blackberry/etc应用程序,你的客户端数据存储选项显然要好得多:sqlite dbs等等。即使对于web应用程序,你也可以使用这样的东西:http ://blogs.sitepoint.com/2005/10/21/store-large-data-client-side-with-amass/(虽然它对我来说有点不友善) – dartacus 2011-03-07 08:30:36

+0

对不起,这是一个错误,我没有意思是说移动应用程序。所以如果页面保持打开并且输入的信息很好?我想这是最好的,我希望:) – tweetypi 2011-03-07 08:34:04

回答

1

理想情况下,您希望使用HTML5本地存储编写http fifo队列。在大多数情况下,这是非常矫枉过正的,但在工作中,我们拥有适用于iOS,WP7,Android和Javascript的本地客户端库,并且都提供持续排队和可靠传递,因此无论出于何种原因它们都必须处理服务器连接。

获取/发布 - >进入内存队列 - >保存到存储 - >发送 - >从存储中删除 - >提高“发送”回调。

如果消息未能发送,则将其保留在存储器中并将其重新存储在内存中。

有一个计时器事件,每隔几秒就会启动队列(以及在添加/删除消息时踢出队列)。限制最大同时连接数(每个客户端的Http应为2)。

然后每次您的Web应用程序加载时,尝试将本地存储中的所有项目重新读回到内存中队列。

然后你有持续/可靠的排队,不会丢失任何消息:)

+0

哦,对,这实际上适用于iOS,WP7和Android?因为我不认为WP7有HTML5的支持...... – tweetypi 2011-03-07 09:52:57

+0

原生到每个平台 - 所以WP7是.Net,iOS Objective C等,我们的Webapp是Javascript/HTML5 :)所有实现相同的事情,并公开相同的API给开发者。 – Tyler 2011-03-07 18:46:07