2014-08-29 6 views
3

배경 : 모바일 용으로 먼저 요구되는 프로젝트를 시작할 준비가되었습니다. 저는 AngularJS를 클라이언트 측, SQL을 DB, 통신용 WEBApi2를 사용하고 있습니다. 저는 BreezeJS에 대해 읽었으며 오프라인 데이터 관리 도구로 사용하고 싶습니다. 주로 .NET의 측면에서 EF6을 사용하고 있기 때문에 Breeze가 EF 메타 데이터를 통해 엔티티를 관리하고 생성 할 수 있다는 생각을 좋아합니다.BreezeJS 오프라인/온라인 관리

응용 프로그램을 디자인하는 동안 급격한 네트워크 손실을 관리하는 방법에 대한 아이디어에 매달 렸습니다. BreezeJS는 EntityManager가 사용되는 동안 작업 메모리에 저장한다는 것을 알고 있습니다. 사용자가 온라인으로 작업하고 브라우저가 충돌하거나 컴퓨터가 종료 된 다음 오프라인 상태에서 webapp가 다시 열리면 Breeze가 정상적으로 복구합니까? 아니면 처리해야하는 사용 사례입니까?

질문 : 내가 작업 메모리를 사용하지 BreezeJS을 강제 할 수 있지만 대신 로컬 스토리지를 작동하는 방법이 내 질문에, 단순히 추측? 그렇지 않다면, 모든 변경 사항을 로컬 스토리지로 export해야합니까 아니면이 특정 유스 케이스를 처리 할 수있는 더 나은 방법이 있습니까?

답변

2

Breeze는 자동으로 localStorage와 작동하지 않지만 주기적으로 EntityManager 상태를 localStorage에 저장하는 타이머를 만들 수 있습니다. 그러나 좋은 생각인지는 모르겠다.

서버를 사용할 수없는 경우를 구분해야합니다.이 경우 서버를 다시 시작할 때 변경 사항을 유지할 수 있도록 EntityManager를 localStorage에 저장하는 것이 좋습니다. 브라우저/클라이언트 컴퓨터가 손상되는 것에 대한 걱정과는 달리,이 경우에는이 문제를 처리하지 않는 것이 좋습니다. 복잡성과 퍼펙트 함의 크기가 꽤 크고 이라면 실제로는이 걱정됩니다. 각 변경 후에도 서버에 저장을 수행하십시오 (다시는 권장되는 방법이 아닐 수도 있지만 사용 가능합니다).

+0

주요 문제는 배터리가 갑자기 또는 예기치 않게 죽는 현장의 사람들이 응용 프로그램을 사용한다는 것입니다. 배터리가 다 소모 될 때까지 입력 된 모든 정보가 저장되도록해야합니다. 타이머는 좋은 대안이지만 모든 데이터가 있는지 확인하기 위해 각 변경 후에 로컬 저장소의 업데이트를 수행해야 할 것 같습니다. – JakeHova