2011-08-24 19 views
5

Tôi muốn làm cho ứng dụng web của tôi có thể hoạt động ngoại tuyến và ngay sau khi nó trở thành trực tuyến hoặc được kết nối lại, thì nó có thể chuyển các sửa đổi được thực hiện bởi người dùng ở chế độ ngoại tuyến.Làm cách nào để ứng dụng web J2EE của tôi hoạt động ngoại tuyến?

Tôi đã xem Google Gears là giải pháp lý tưởng cho sự cố của mình, không được khuyến nghị sử dụng vì hiện không được dùng nữa.

Cách tốt nhất để ứng dụng của tôi hoạt động ngoại tuyến, cả về mặt công nghệ để sử dụng và thiết kế ứng dụng là gì?

+0

Bạn có thể thử cách khác. Ví dụ: một ứng dụng flash được sử dụng cho chế độ ngoại tuyến. Trong khi một ứng dụng web được sử dụng cho chế độ trực tuyến. –

+0

Bộ nhớ ngoại tuyến được ghi đè. – bhagyas

Trả lời

4

Gears không được chấp nhận vì tiêu chuẩn HTML5 cho phép các tính năng tương đương có mặt trong trình duyệt tuân thủ.

Đối với vấn đề hiện tại của bạn khi xử lý truy cập ứng dụng web ngoại tuyến, bạn có thể xem hỗ trợ được cung cấp bởi HTML5 for offline web applications thông qua hỗ trợ client-side SQL database accessclient-side application HTTP cache.

Các tính năng sẽ phải được sử dụng kết hợp, vì quyền truy cập cơ sở dữ liệu phía máy khách sẽ cho phép lưu trữ dữ liệu (được tạo khi ứng dụng ngoại tuyến) ở định dạng có cấu trúc, trong khi bộ nhớ cache ứng dụng ngoại tuyến sẽ cho phép lưu bộ nhớ đệm Phản hồi HTTP từ máy chủ; bạn không nên lưu vào bộ nhớ đệm các phản hồi có tính chất động, phụ thuộc vào bất kỳ đầu vào do người dùng cung cấp nào.

Chi tiết về các API được đề xuất có thể được tìm thấy trong W3C HTML5 specification, hiện đang được soạn thảo, mặc dù có vẻ như một số tác nhân người dùng nhất định đã triển khai tính năng này.

0

Điều này không liên quan gì đến J2EE, nhưng đúng hơn là cách bạn mã hóa ứng dụng khách web của mình. Một giải pháp có thể là sử dụng một trình khách javascript lưu dữ liệu trong bộ nhớ cục bộ được giới thiệu với html5 (xem http://diveintohtml5.ep.io/storage.html). Đó cũng là cơ bản lý do tại sao google bánh răng đã được dừng lại ...

+0

Tôi đã thấy những người bạn đó nhưng nếu bộ nhớ cache của trình duyệt bị xóa thì nó sẽ không hoạt động. đây là một trong những loopback trong này. – deepmoteria

1

Thứ nhất, bạn sẽ cần một số hình thức lưu trữ ngoại tuyến. Khả năng của HTML5 là sự kế thừa cho Google Gears, như đã nêu trên số google gears developer blog; về cơ bản, mục đích của Google Gears chỉ là thúc đẩy sự phát triển & tiếp theo sử dụng các tính năng HTML 5.

Cụ thể là bạn nên xem các API HTML5 offline (here's a tutorial) và các API Storage cũng có thể hữu ích (relevant tutorial).

Về thiết kế, về cơ bản bạn cần phải duy trì trạng thái ứng dụng web hoàn chỉnh của ứng dụng web, sau đó gửi qua các khác biệt (tức là cập nhật trạng thái phía máy chủ) ngay sau khi kết nối với máy chủ khả dụng trở lại.

Off đỉnh đầu của tôi, có 2 cách đơn giản để thiết kế này:

  1. Rõ ràng duy trì trạng thái ứng dụng riêng biệt cho các client và server. Về cơ bản, khi người dùng thực hiện hành động, trước tiên nó được áp dụng cho trạng thái ứng dụng khách, và sau đó tại các khoảng thời gian được chỉ định (và/hoặc trình kích hoạt, ví dụ như người dùng nhấp vào nút lưu), máy khách gửi qua sự khác biệt giữa trạng thái đã biết cuối cùng của máy chủ và trạng thái hiện tại của máy khách. Điều này có thể phù hợp nhất với các ứng dụng web có tính tương tác cao và tôi nghi ngờ Google Documents hoạt động trên loại thiết kế này. Tùy thuộc vào ứng dụng của bạn (nếu "thay đổi xung đột" có thể xảy ra), bạn cũng cần phải tính đến trạng thái hợp nhất của ứng dụng: bạn có ghi đè trạng thái ứng dụng khách đã nhận cuối cùng hay bạn cố hợp nhất không? (bạn sẽ phải quyết định điều gì có ý nghĩa hơn cho ứng dụng cụ thể của bạn.)

  2. Ghi lại hành động của người dùng khi ngoại tuyến và phát lại chúng sau khi kết nối khả dụng trở lại. Về cơ bản, bạn triển khai thực hiện Command design pattern và có cả mã phía máy khách lẫn mã phía máy chủ của bạn có thể xử lý từng lệnh. Mã phía máy khách luôn xử lý mỗi lệnh và trong khi kết nối với máy chủ có sẵn, mã phía máy khách của bạn cũng sẽ gửi các lệnh tới máy chủ. Có thể bạn sẽ muốn triển khai một số lô, để tránh các yêu cầu liên tục đến máy chủ và cũng có một số chức năng quay lại khi yêu cầu máy chủ không thành công (ví dụ: các thay đổi xung đột). Điều này kết thúc bằng việc tìm kiếm nhiều hơn hoặc ít hơn như giao diện người dùng quản lý email chính của GMail, nơi bạn có thể hoàn tác các hoạt động.

Các vấn đề liên quan