3

저는 VB.NET (소형 프레임 워크)으로 모바일 응용 프로그램을 구축하고 있으며, 장치에서 잠재적 인 오프라인 상호 작용에 접근하는 가장 좋은 방법이 무엇인지 궁금합니다. 기본적으로 장치에는 셀룰러와 802.11이 있지만 여전히 오프라인 일 수 있습니다 (수신율이 나쁜 곳 등). 드라이버는 트럭을 떠날 때 상자를 스캔하고 네트워크 신호가있는 경우 즉시 새 위치를 업데이트하려고합니다. 오프라인 인 경우 나 나중에 처리하는 경우 대기합니다. 하지만 오프라인에서의 일반적인 처리 방법에 대해 생각하게했습니다..NET CF 모바일 장치 응용 프로그램 - 잠재적 인 오프라인 상태를 처리하는 가장 좋은 방법은 무엇입니까?

  • 오프라인 일 때 최대한 많은 데이터를 장치에 캐시합니까? 본질적으로 각 장치에는 관련 데이터가 저장됩니다. 또는 나중에 동기화의 두통을 피하기 위해 오프라인 일 때 특정 기능을 사용하지 않는 것이 더 낫습니까? 나는 이것이 내 앱에 달려있는 매우 구체적인 질문이라는 것을 알고 있지만, 다른 사람들이이 길을 택한 것인지 궁금하다.
  • 항상 오프라인 상태 인 것처럼 행동하는 응용 프로그램 자체를 빌드하여 로컬 클래스가 소유 한 정렬 유형의 로컬 대기열에 모든 것을 제출하고 (기본적으로 온라인/오프라인 상태를 추상화 한 다음) 클래스에 항목을 제출하게하십시오. 그것을 할 수있는 서버? 데이터 검색은 어떻게됩니까? "세미 라이브"방식으로 어떻게 처리 할 수 ​​있습니까?
  • 또는 응용 프로그램에서 요청을 서버에 직접 실시간으로 제출하고 자체 요청이 실패한 경우 처리해야합니까? 사용자가 타임 아웃을 기다릴 수있는 잠재적 인 문제를 볼 수는 있지만 가장 신뢰할 수있는 방법입니까?

구체적인 해결책을 찾는 것이 아니라 개발자가 어떻게하면 가장 매끄러운 사용자 환경에서 가능한 방법을 찾았는지, 방법 또는 heres-what-to-consider 또는 무언가에 대한 링크가 포함되어 있습니다. 그런 식으로. 이것에 대한 귀하의 포인터 주셔서 감사합니다!

답변

2

모든 사용 시나리오에 적합한 "올바른"대답이 없으므로 확실한 대답을 드릴 수는 없습니다. 예를 들어 백엔드에서 SQL Server를 사용하고 로컬에서 SQL CE를 사용하는 경우 병합 복제를 설정하고 데이터 엔진에서이 모든 작업을 처리하도록 할 수 있습니다. 꽤 깨끗합니다. 오프라인 응용 프로그램 블록을 사용하면 문제를 해결할 수 있습니다. 저장 및 전달 사용은 옵션 일 수 있습니다.

로컬로 저장 한 다음 네트워크가 감지 될 때 사용되는 WCF 서비스의 직접 연결 인 웹 서비스를 사용하여 자신의 동기화를 롤 할 수 있습니다. 배달에 MSMQ를 사용할 수 있습니다.

당신이 생각해야 할 것은 "올바른"방법이 아니라 응용 프로그램의 유용성에 어떤 영향을 미치는지에 관한 것입니다. 연결이 끊어져 기능을 사용 중지해도 앱을 계속 사용할 수 있습니까? 부실 데이터가있는 경우 문제가 있습니까? GSM/GPRS (일반적으로 무료는 아님)가있을 때 중요한 데이터를 전송해야 할 수도 있고 802.11을 가지고있을 때 더 많은 데이터가 전송 될 수도 있습니다. 매일 아침 룩업 테이블을 사용하여 하루 종일 운영하고 변경 사항을 추적하는 장치로 트랜잭션 만 업로드 할 수 있습니다.

기본적으로 사용 방법, 데이터의 특성, 필드 장치 간 데이터 트랜잭션의 중요성, 데이터 대기 시간의 영향 및 기타 미처 생각할 수없는 요소에 따라 달라집니다.

첫 번째 단계는 앱을 사용해야하는 방식을 결정하는 것입니다. 다음은 필요한 연결성 및 데이터 액세스를 제공하는 인프라 및 아키텍처를 결정합니다.

0

본인은 직접 사용하지 않았지만 CF의 "저장 및 전달"기능을 살펴 보았습니까? 귀하의 필요에 부합 할 수 있습니다. Exchange 큐브를 메시지 큐로 사용하여 장치간에 SOAP 패킷을 보내고 있다고 생각합니다.

0

이 방법을 사용하는 가장 좋은 방법은 항상 오프라인으로 작업 한 다음 메시지 큐를 사용하여 장치와주고받는 변경 사항을 처리하는 것입니다. 운전자가 배달 된 것으로 표시 할 때 (예 : 현지 상점에서 배달 된 품목을 업데이트하고 배송 대기열에 메시지를 넣어 서버에 배달되었음을 알립니다). 연결이 끝나면 대기중인 항목을 서버로 다시 보내고 서버에서 대기중인 모든 메시지를 가져옵니다.

관련 문제