2010-02-12 5 views
5

오프라인 및 온라인 모드에서 작동해야하는 iPhone 응용 프로그램에서 작업하고 있습니다.
온라인 모드에서는 사용자가 입력 한 모든 정보를 GWT/GAE이 지원하는 웹 서비스에 제공해야합니다. 오프라인 모드에서는 정보를 로컬에 저장해야하며 연결이 가능하면 웹 서비스와 동기화합니다.iPhone 응용 프로그램을 GWT 응용 프로그램과 동기화 유지

  1. 는 응용 프로그램 및 코어 데이터
  2. 설문 조사를 사용하여 효율적인 회선을 통한 통신을 위해 지역의 DB와
  3. 일을 Protobuffers를 사용하여 웹 서비스 사이의 연결을 제공 : 다음과 같이

    현재 내 계획은 네트워크 상태 및 사용 가능한 경우 데이터베이스를 동기화하고 일종의 local-db-to-remote-db 키 동기화를 유지합니다.

질문은 - 올바른 방향으로 가고 있습니까? 이것을 구현하기위한 표준 패턴이 있습니까? 누군가 비슷한 방식으로 작동하는 오픈 소스 응용 프로그램을 가르쳐 줄 수 있습니까?

저는 iPhone 코딩에 새로운 것이므로 어떤 제안이라도 듣게되어 매우 기쁩니다.

감사합니다.

+1

나는 당신의 질문이 마스터이고 누가 (일반 동기화 문제를 함께 할 더 생각 : http://openmobster.googlecode.com 다음

는 아이폰 응용 프로그램 동기화에 대한 링크입니다 :

다음은 오픈 소스 프로젝트에 대한 링크입니다 아이폰이나 gwt 백엔드에서 로컬 변경) 오른쪽? 나는 이것에 또한 흥미있을 것입니다. – EightyEight

+0

그게 내가 뭘에 관심이 exactcly. 웹 서버에서 마스터 데이터 세트에 로컬 변경 사항을 동기화. – reflog

답변

0

: 2 개의 다른 응용 한 GWT 및 기타 아이폰 하나를 만들 수 있지만, 잘 쓰여진 GWT 애플리케이션을 생성하지 않는 진짜 필요가없는 경우 첫째. 문제가없는 라인에서 문제없이 작동하며 데이터를 관리합니다 HTML feature -- offline application cache 2 개의 별도 앱을 만들려면 적어도이상의 노력을 기울여야하며 서버를 두 번 쓰지 마십시오. 표준 GWT를 사용하면 거의 실패 할 것입니다. 독립형 응용 프로그램 (일부 까다로운 헤더를 사용하여 HTTP를 통해 JSON을 압축하는 ...)에서 서버에 연결하거나 twice를 작성하므로 RestLet library을 GAE에서 잘 지원합니다.

오프라인/온라인 전환과의 동기화 유지 방법 : 고려해야 할 몇 가지 사항이 있으며 모두 완벽하지는 않습니다. 따라서 당신이 당신의 생각에 당신이 기대하는 바를 생각할 때 ... 마이크로 소프트 워드가 사용자보다 현명하지 못하게하려고하지 마십시오. 사용자 개입을 요구하는 시나리오에서 적어도 UI를 구현해야하는 것보다 변경 사항을 병합 (그리고 은행에 가져갈 것임)하는 시나리오가 적어도 하나 이상있는 경우가 종종 있습니다 - 사용자가 익숙해집니다. 그것은 아주 특별한 경우에만 사용자에게 묻는 슈퍼 듀퍼 병합 로직을 구현했기 때문에 드물기 때문에 앱을 사용하기 시작한 이후 잠시 후에 보게됩니다.하지 마세요. 노력의 균형을 유지하십시오. 왜냐하면 그러한 코드에서 버그가 사용자에게 전달하게되는 혼란은 모두 함께 얻는 것보다 훨씬 고통 스럽기 때문입니다.

그래서 어떻게 : 한 가지 방법은 Do-UnDo 방식입니다. 오프라인 상태 일 때 사용자가 시간 순서대로 데이터에 수행 한 작업의 로그를 유지하면 사용자가 연결 한 후 곧 서버에 보내고 실행합니다. . 서버에서 클라이언트로 동일합니다. 작업 당 많은 양의 데이터가 포함 된 Photoshop 소프트웨어를 작성하지 않는 한 대부분의 경우 정상적으로 작동합니다. GangOfFour에서 Action Pattern이라고도합니다.

또 다른 방법은 소스 제어 방법입니다. - 버전은 잠금 장치 일 수도 있습니다. 매우 응용 프로그램에 의존. DBMS는 내부적으로 트랜잭션 구현에 사용합니다. Ofline이

2

나는 당신이 함께 질문을 모호하다고 생각합니다.

  • GWT 웹 인터페이스를 만드는 데 대한 질문이 있으면 그 하나의 질문입니다.
  • iPhone을 웹 서비스에 동기화하는 방법에 대한 질문은 다른 질문입니다. 이를 위해 GWT의 RPC를 동기화에 사용하고 싶지는 않습니다. GWT가 일반적으로 제공하는 iPhone 코드에서 직렬화 시스템의 '브라우저 측'을 가짜로 만들어야하기 때문입니다. 시스템 디자인 방향에 대한
+0

제 질문이 약간 모호하다는 데 동의합니다. 첫 번째 요점에 대해 - 내가 묻는 것이 아니고 두 번째 요점은 더 가깝습니다. GWT의 RPC를 사용할 수 없다는 것을 알았고 사용자 정의 웹 서비스를 제공해야합니다. 그 질문에 쓴 것이므로 ProtoBufs 인터페이스를 제공 할 계획입니다. 내가 물어 본 것은 -이 워크 플로우에 공통 패턴이 있습니까? 핵심 데이터를 원격 데이터와 동기화하는 데 도움이되는 라이브러리는 무엇입니까? 자습서? – reflog

0

원더 :-) 당신은 동기화를 관리하는 동기화 프레임 워크를 사용하는 것으로 간주 한 경우에만

그리고 옵션이 항상 존재를 읽을 수 있습니다. 관심이 있다면 OpenMobster의 Sync 서비스 인 오픈 소스 프로젝트를 살펴볼 수 있습니다. 다음과 같은 동기화 작업에게 그 외에

  • 양방향
  • 편도 클라이언트
  • 편도 장치
  • 부팅

을 할 수있는 모든 수정 사항이 자동으로 추적 및 동기화 구름과. 네트워크 연결이 끊어지면 앱을 오프라인으로 설정할 수 있습니다. 모든 변경 사항을 추적하고 백그라운드에서 자동으로 연결이 반환 될 때 클라우드와 동기화합니다. 또한 여러 장치에 iCloud와 같은 동기화 기능을 제공합니다.

또한 Cloud 알림은 Push 알림을 사용하여 동기화되므로 데이터가 로컬에 저장되어 있어도 항상 최신 상태로 유지됩니다. , http://code.google.com/p/openmobster/wiki/iPhoneSyncApp

+0

더 이상 OpenMobster가 없습니다! – confile

관련 문제