2011-04-30 1 views
8

오프라인 및 온라인으로 작업 할 응용 프로그램을 작성하는 경우 오프라인으로 작업하기 위해 한 번 작성하면 온라인 모드가 오프라인과 동일하게 작동합니다.오프라인으로 작업 할 응용 프로그램 작성 (웹 응용 프로그램)

예를 들어 일반적인 장바구니 예를 볼 수 있습니다. 장 Y 구니에는 품목 W 고객이 들어 있습니다.

장바구니를로드 할 때 모든 항목 + 고객을 로컬 저장소에 캐시하고 온라인 및 오프라인 데이터 캐시를 사용해야하며 필요에 따라 캐시를 업데이트해야합니까? 오프라인/온라인 하이브리드 웹 응용 프로그램을 개발할 때 모범 사례는 무엇입니까?

답변

7

온라인/오프라인 모드로 작동하도록 웹 응용 프로그램을 작성하는 것은 실제로는 "정상적인"서버 구동 웹 응용 프로그램을 작성하는 것과 매우 흡사합니다. 단, 데이터 액세스 계층 (DAL) 앱 및 서버 (온라인 모드) 또는 브라우저의 데이터 (오프라인 모드)에있는 데이터 중 하나입니다.

응용 프로그램과 요구 사항에 따라 다음 두 가지 모드 중 하나에서 실행할 수 있습니다. a. 캐시 및 시도가 가장 좋은 모드 또는 b.로드 및 모든 사항에 대한 확인 - 업데이트 모드.

이러한 두 가지 모드에는 각각 좋은 부분과 나쁜 부분이 있습니다. 응용 프로그램의 한 부분이나 다른 부분이 틀릴 수 있습니다.

캐시 - 및 - 시도 - 당신의 최고의 모드이 모드의 경우

, 그것은 작업의 정상적인 과정입니다 중에 데이터를 액세스로 브라우저의 데이터 저장소에 서버에서 DAL 캐시 데이터입니다. 오프라인 모드가되면 DAL은 사용자의 요청을 충족시키는 것이 가장 좋지만 캐시 된 데이터 만 가지고 있으므로 일부 작업을 완료하지 못할 수도 있습니다. 위쪽에는 데이터로드를 기다리는 시작 시간이 거의 없지만 아래쪽에는 모든 작업에 서버 적중 (연결되어있는 경우)이 필요하며 데이터를 캐시해야합니다. 또한 앱은 불완전한 데이터로 인해 완료 할 수없는 작업에 대해서는 정상적으로 실패해야합니다.

로드 모든-및 체크를 위해 업데이트이 경우 모드

의 DAL로드 앱이 브라우저 때 응용 프로그램 시작에 필요한 모든 데이터. 앱이 이미로드 된 경우 캐시가 부실하지 않도록 모든 데이터를 업데이트해야합니다. 위쪽면에서 사용자는 모든 작업이 로컬 작업이므로 매우 오래 기다릴 필요는 없지만 많은 양의 데이터가있는 경우에는 시작 시간이 길어질 수 있습니다. 오히려 길다.

부실 캐시 문제를 해결해야하며 오프라인 작업을 서버에 지속적으로 수행해야합니다. 즉, 시작할 때 및 응용 프로그램이 실행되는 동안 주기적으로 주기적으로 캐시 된 데이터를 유지하고 서버와있을 수있는 모든 로컬 전용 상태를 공유하기 위해 서버에 다시 동기화해야합니다 나머지 국가에서는 해당 응용 프로그램 인스턴스의 업데이트를 확인합니다.

오프라인 모드에서 발생한 서버로의 지속 작업은 해당 작업과 관련된 데이터가 응용 프로그램의 업데이트 사이에서 변경 될 때 특히 까다로운 작업 일 수 있습니다. 예를 들어, 캐시 된 은행 잔액이 오래되어 서버에 반영된 "실제"상태보다 훨씬 많은 돈을 나타내는 경우 사용자는 모르게 계정을 초과 작성 할 수 있습니다. 이는 극단적 인 예이지만 이러한 종류의 운영 충돌 감지는 서로 실행할 수있는 업데이트를 처리하기 위해 필요합니다.

일반적으로 온라인 및 오프라인 모두 가능할 수있는 앱이있는 경우 앱 자체를 작성해야 앱 자체가 신경 쓸 필요가 없습니다. 낮은 수준의 데이터 레이어는 모든 문제를 추상화하고 앱은 원하는 정보 (온라인 또는 오프라인에서 좋은 앱)가 필요없는 정보를 처리 할 수있는 방법 만 알아야합니다.

장바구니의 경우 개별 고객이 장바구니에 넣을 가능성이있는 제품보다 많은 양의 제품이있을 가능성이 높습니다 (또는 희망적입니까?). 모든 사용자의 브라우저에 모든 파일을로드하는 것은 거의 확실한 대역폭 낭비이며 대규모 대역폭 비용과 매출 손실 (응답 시간이 느려짐)로 인해 비즈니스가 급속하게 중단되는 등의 지연을 초래할 수 있습니다. 필요한 경우 브라우저 데이터에 제품을로드하고 원하는 경우 장바구니에 실제로있는 항목과 관련된 "다른 사용자가 구입 한"다른 제품을로드 할 수 있습니다.