2010-02-12 47 views
5

Tôi đang làm việc trên ứng dụng iPhone sẽ hoạt động ở chế độ ngoại tuyến và trực tuyến.
Ở chế độ trực tuyến, nó phải cho tất cả thông tin mà người dùng nhập vào một dịch vụ web được hỗ trợ bởi GWT/GAE. Ở chế độ ngoại tuyến, nó phải lưu trữ thông tin cục bộ và khi kết nối có sẵn, hãy đồng bộ hóa với dịch vụ web.Giữ ứng dụng iPhone đồng bộ với ứng dụng GWT

Hiện nay kế hoạch của tôi là như sau:

  1. Cung cấp một kết nối giữa ứng dụng và một webservice bằng Protobuffers cho hiệu quả truyền thông over-the-wire
  2. Làm việc với DB địa phương sử dụng Core Data
  3. Thăm dò ý kiến trạng thái mạng và khi có sẵn đồng bộ hóa cơ sở dữ liệu và giữ một số loại đồng bộ hóa khóa cục bộ-db-tới-từ xa-db.

Câu hỏi đặt ra là - tôi có đúng hướng không? Các mẫu chuẩn để thực hiện điều này? Có lẽ ai đó có thể chỉ cho tôi một ứng dụng mã nguồn mở hoạt động theo cách tương tự?

Tôi thực sự mới đối với mã hóa iPhone và sẽ rất vui khi nghe bất kỳ đề xuất nào.

Cảm ơn

+1

Tôi nghĩ rằng câu hỏi của bạn có nhiều để làm với vấn đề đồng bộ nói chung (là bậc thầy, thay đổi cục bộ trên iphone hoặc phụ trợ gwt) phải không? Tôi cũng muốn được quan tâm đến điều này. – EightyEight

+0

đó chính xác là điều tôi quan tâm. Đồng bộ hóa các thay đổi cục bộ với tập dữ liệu chính trên máy chủ web. – reflog

Trả lời

0

về hệ thống hướng thiết kế: Đầu tiên nếu không có REAL cần không tạo ra 2 ứng dụng khác nhau một GWT và iPhone khác tạo ra một nhưng cũng bằng văn bản ứng dụng GWT. Nó sẽ làm việc ra khỏi dòng không có vấn đề và sẽ quản lý dữ liệu của bạn bằng cách sử dụng HTML feature -- offline application cache Nếu bạn phải tạo 2 ứng dụng riêng biệt ít nhất là tiết kiệm công sức và không viết máy chủ hai lần như bạn đi với tiêu chuẩn GWT aproach, bạn sẽ gần như sertanly thất bại để nói chuyện với máy chủ từ ứng dụng độc lập (nó được nén JSON qua HTTP với một số tiêu đề khó khăn ...) hoặc sẽ viết những thứ twise để xem xét các RestLet library nó cũng được hỗ trợ bởi GAE.

Giới thiệu về cách giữ đồng bộ hóa với chuyển đổi ngoại tuyến/trực tuyến: Có một số vấn đề cần xem xét và tất cả chúng đều không hoàn hảo. Vì vậy, khi bạn conseder của bạn nghĩ về những gì bạn mong đợi ... Đừng Microsoft Word không cố gắng để outsmart người sử dụng. Nếu có ít nhất một kịch bản trong trường hợp sử dụng yêu cầu người dùng can thiệp để hợp nhất các thay đổi (Và sẽ có - mang nó đến ngân hàng) - hơn bạn sẽ thực hiện giao diện người dùng cho điều này - hơn là có lý do chính đáng để sử dụng nó - người dùng sẽ quen với nó. nó tốt hơn là nó sẽ thấy nó trong một thời gian kể từ khi anh ta bắt đầu sử dụng ứng dụng bởi vì cần fro nó là hiếm bởi vì bạn đã thực hiện một logic siêu kết hợp siêu yêu cầu người dùng chỉ trong các trường hợp rất đặc biệt ... Đừng làm điều đó. cân bằng nỗ lực. Bởi vì mớ hỗn độn mà một lỗi trong mã như vậy sẽ giới thiệu cho người dùng là đau đớn hơn nhiều so với lợi ích tất cả cùng nhau.

vì vậy CÁCH: Cách duy nhất là Do-UnDo. Trong khi tắt dòng - giữ nhật ký các hành động mà người dùng đã thực hiện trên dữ liệu trong người dùng đặt hàng theo thời gian đã làm họ ngay sau khi bạn kết nối - gửi tới máy chủ và thực thi chúng. Tương tự từ máy chủ đến máy khách. Sẽ hoạt động tốt trong hầu hết các trường hợp miễn là bạn không viết một loại phần mềm Photoshop với lượng dữ liệu khổng lồ cho mỗi thao tác. Còn được gọi là Mẫu hành động của GangOfFour.

Cách khác là cách kiểm soát nguồn. - Các phiên bản và thậm chí có thể bị khóa. rất phụ thuộc vào ứng dụng. DBMS nội bộ một số lần sử dụng nó để triển khai giao dịch.

Và luôn luôn có một tùy chọn để được Chỉ đọc khi Ofline :-)

2

Tôi nghĩ bạn đã làm mờ các câu hỏi cùng nhau.

  • Nếu bạn có câu hỏi về cách tạo giao diện web GWT, đó là một câu hỏi.
  • Các câu hỏi về cách đồng bộ hóa iPhone với dịch vụ web là một câu hỏi khác. Đối với điều đó, bạn không muốn sử dụng RPC của GWT để đồng bộ hóa, vì bạn phải giả mạo 'phía trình duyệt' của hệ thống tuần tự hóa trong mã iPhone của bạn, mà GWT thường cung cấp cho bạn.
+0

Tôi đồng ý rằng câu hỏi của tôi có thể hơi mờ. Về điểm đầu tiên của bạn - đó không phải là những gì tôi đã hỏi, điểm thứ hai là gần hơn. Tôi nhận ra rằng tôi không thể sử dụng RPC của GWT và sẽ phải cung cấp dịch vụ web tùy chỉnh, đó là những gì tôi đã viết trong câu hỏi, tôi dự định cung cấp giao diện ProtoBufs. Điều tôi đang hỏi là - có một mô hình chung cho quy trình làm việc này không? Thư viện giúp đồng bộ hóa dữ liệu lõi với dữ liệu từ xa? Hướng dẫn? – reflog

0

Wonder nếu bạn đã xem xét sử dụng một khung Sync để quản lý đồng bộ hóa. Nếu bạn quan tâm, bạn có thể xem dự án nguồn mở, dịch vụ Đồng bộ hóa của OpenMobster. Bạn có thể làm các hoạt động đồng bộ sau

  • hai chiều
  • một chiều client
  • một chiều thiết bị
  • khởi động

Bên cạnh đó, tất cả thay đổi được theo dõi tự động và đồng bộ hóa với Cloud. Bạn có thể ẩn ứng dụng của mình khi kết nối mạng bị gián đoạn. Nó sẽ theo dõi bất kỳ thay đổi nào và tự động trong nền đồng bộ hóa với đám mây khi kết nối trả về. Nó cũng cung cấp đồng bộ hóa như iCloud trên nhiều thiết bị

Ngoài ra, các thay đổi trong Đám mây được đồng bộ hóa bằng thông báo Đẩy, vì vậy dữ liệu luôn luôn hiện hành ngay cả khi dữ liệu được lưu trữ cục bộ.

Dưới đây là một liên kết đến các dự án mã nguồn mở: http://openmobster.googlecode.com

Dưới đây là một liên kết đến iPhone App Sync: http://code.google.com/p/openmobster/wiki/iPhoneSyncApp

+0

Không còn OpenMobster nữa! – confile

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