2012-04-04 2 views
2

데이터 연결이 일시적으로 끊긴 경우에도 작동해야하는 Android 앱과 같은 POS를 구축 중입니다.오프라인 동기화를위한 일반 아키텍처 Android 앱

데이터 연결이 가능한 경우 모든 트랜잭션을 즉시 서버에보고하는 것이 좋습니다. 그렇지 않다면 SQLite에 로컬로 저장하고 나중에 연결이 가능 해지면 동기화하십시오.

첫 번째 계획은 서버에서 유지 관리되는 것과 동일한 일반 DB 구조로 개별 트랜잭션을 저장하는 것이었지만 많은 다른 유형의 트랜잭션과 관계가 서버에 있으므로 전체 DB 구조를 전화 자체의 서버.

대체 방법은 서버에 변경 사항을 알리는 데 사용되는 최종 HTTP 요청을 저장하는 것입니다. 이러한 접근법의 장점은 단지 URL, 요청 내용, 메서드 등을 저장하기 위해 하나의 테이블 만 필요하다는 것입니다. 그러나 응답시 코드를 실행해야하는 호출이있을 수 있으며 익명 내부 클래스로 구현됩니다 . 이 접근법의 유일한 문제점은 이러한 익명 내부 클래스를 직렬화하여 DB에서로드하고 (가능한) 전화를 다시 시작한 후에도 실행할 수있는 것 같습니다.

이것을 구현하는 가장 좋은 방법은 무엇입니까? 옵션 A 또는 옵션 B? 그리고 옵션 B 인 경우 익명의 내부 클래스를 직렬화 및 직렬화 해제하는 것이 실제로 가능합니까 (효과적으로 여기서 클로저로 사용됩니까?)?

답변

1

옵션 A의 경우, CouchDB가 디바이스/서버 복제를 처리하도록 고려할 수 있습니다.

Couchdb on Android