簡體   English   中英

如何使我的J2EE Web應用程序脫機工作?

[英]How can I make my J2EE web application work offline?

我希望使我的Web應用程序能夠脫機工作,並且一旦它變得聯機或再次連接,它就應該能夠在脫機模式下傳輸用戶所做的修改。

我認為Google Gears是解決我的問題的理想解決方案,不建議使用它,因為現在已不建議使用。

在使用技術和應用程序設計方面,使我的應用程序脫機工作的最佳方法是什么?

不推薦使用Gears,因為HTML5標准允許在兼容的瀏覽器中提供等效功能。

關於當前處理脫機Web應用程序訪問時遇到的問題,您可以通過對客戶端SQL數據庫訪問的支持以及客戶端應用程序HTTP緩存 ,來研究HTML5為脫機Web應用程序提供的支持。

這些功能必須結合使用,因為客戶端數據庫訪問將允許以結構化格式存儲數據(在應用程序脫機時生成),而脫機應用程序緩存將允許緩存來自服務器的HTTP響應。服務器; 您不應該緩存依賴於用戶提供的任何輸入的動態響應。

可以在W3C HTML5規范中找到建議的API的詳細信息,該規范目前正在草擬中,盡管某些用戶代理似乎已經實現了此功能。

首先,您將需要某種形式的脫機存儲。 正如Google Gears 開發者博客上所述,HTML5的功能是Google Gears的后繼產品; 本質上,Google Gears的目的只是推動HTML 5功能的開發和后續采用。

具體來說,您應該查看脫機HTML5 API( 這是一個教程 ),並且Storage API也可能派上用場( 相關的教程 )。

在設計方面,您基本上需要維護客戶端的完整Web應用程序狀態,然后在與服務器的連接再次可用時立即發送差異(即更新服務器端狀態)。

在我頭頂上,有兩種簡單的方法可以設計此方法:

  1. 明確維護客戶端和服務器的單獨應用程序狀態。 本質上,當用戶執行某項操作時,首先將其應用於客戶端應用程序狀態,然后按指定的時間間隔(和/或觸發,例如用戶單擊“保存”按鈕),客戶端發送過去的已知狀態之間的差異。服務器和客戶端的當前狀態。 這可能最適合高度交互的Web應用程序,我懷疑Google Docs可以在這種設計上工作。 根據您的應用程序(如果可能發生“沖突的更改”),您還需要考慮合並應用程序狀態:您是否使用上次接收到的客戶端狀態進行覆蓋,還是明智地嘗試合並? (您必須確定哪種方法更適合您的特定應用程序。)

  2. 離線記錄用戶操作,並在連接再次可用時重播它們。 本質上,您實現了Command設計模式 ,並且使您的客戶端代碼和服務器端代碼都能夠處理每個命令。 客戶端代碼始終處理每個命令,並且在與服務器的連接可用時,客戶端代碼也會將命令發送給服務器。 您可能要實現一些批處理,以避免對服務器的連續請求,以及對服務器的請求失敗(例如,更改發生沖突)時的一些回滾功能。 最終看起來或多或少像GMail的主電子郵件管理用戶界面,您可以在其中撤消操作。

這與J2EE無關,而與您如何編寫Web客戶端有關。 一種可能的解決方案是使用javascript客戶端,該客戶端會將數據確實保存在html5引入的本地存儲中(請參閱http://diveintohtml5.ep.io/storage.html )。 這基本上也是Google Gears被停止的原因...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM