당신은 어떻게 관리 할 때 응용 프로그램 데이터베이스는 오프라인 상태가?

StackOverflow https://stackoverflow.com/questions/49426

  •  09-06-2019
  •  | 
  •  

문제

이 걸릴.Net Winforms 응용 프로그램입니다..혼합 flakey 무선 네트워크 연결,볶음 몇 가지 사용자는 다음과 같은 단순히 당겨 블루 플러그와 좋은 측정,추가 시스템을 관리하기로 결정 재부팅 SQL server 상자 경고없이 지금 다시 그 모두를 유지에서 자신의 발가락에 있습니다.

어떤 제안을 처리하기 위한 전략 이런 종류의 시나리오에 대하여:

  • 오류 처리-예를 들어,당신은 모든 포장 call 으로 서버 시험/캐치 또는 당신은에 의존하고 어떤 형태의 일반적인 오류 처리하는 관리 이?그렇다면 무엇일까요?

  • 응용 프로그램 관리-예를 들어,당신은 당신 응용 프로그램을 사용하지 않도록하고 사용자를 허용하지 않을 와 상호 작용이 있을 때까지 연결이 검색되 again?당신은 무엇을 할 것인가?

도움이 되었습니까?

해결책

응답의 종류에 따라 달라집니다.응용 프로그램이 있는 오프라인으로 작업 할 수 있습니다-Microsoft Outlook 에 대한 예입니다.이러한 응용 프로그램을 연결 예외적으로 중요한,그들은 작업을 저장하는 로컬과 동기화됩니다.다른 응용 프로그램과 같은 온라인 게임을 치료할 것입 통신으로 문제 중요한 예외이며 종료할 것이면 연결됩니다.

로 오류 처리,생각을 제어해야 합 예외에서 모든 레이어에 의존하기보다 일반적인 예외 처리를 조각의 코드입니다.귀하의 사업 층을 이해해야에 무슨 일이 낮은층(데이터 액세스를 계층에서 우리의 사례)에 대응하여.연결을 잃었으로 취급되지 않도 예기치 않은 예외 다.에 대한 모범 사례의 예외를 관리하는 것이 좋습 살펴보 Exception Handling 응용 프로그램 차단.

에 관한 응용 프로그램 동작에,당신은 자신에 대답해야에서 다음과 같은 질문에"내 응용 프로그램이 비즈니스 고객을 위한 가치에 연결이 끊긴 상태?" 많은 경우에 도움이 될 것입니다 최종 사용자 수가 계속 자신의 작품에서 연결이 끊긴 상태로 있습니다.그러나 이러한 행동에 엄청난 하드를 구현할 수 있습니다.

특히 시나리오에 대한 Microsoft 개발 연결이 끊어 서비스 에이전트 응용 프로그램 차단

다른 팁

손을 대지 않았 WinForms 다.순 년 동안 지금,그래서 내가 줄 수 없다 당신이 어떤 기술적인 세부정보,그러나 거기에는 맥주 그림 응답:

가장 먼저지-바인딩의 양식을 직접 데이터를 데이터베이스입니다.

별도의 데이터/모델는 레이어 바인딩할 양식을 위젯니다.

거기에서,당신은 몇 가지 옵션을 사용할 수 있에 따라 수준의 안정성과 가용성을 필요를 제공합니다.

아마 하나의 간단한 솔루션이 여기 것을 활성화/비활성화 부분의 응용 프로그램과 상호 작용하는 데 필요에 따라 데이터베이스 연결 상태입니다.

다음을 수준의 보호를 포함 캐싱하는 부분의 데이터 모델은 로컬에 데이터베이스 연결,아래 로컬 캐시를 사용에 대한 보기와 비활성화 기능을 필요로 하는 명시적인 데이터베이스 연결을 사용합니다.

아마 가장 까다로운 일(수 있는 가장 안정적인 경험을 최종 사용자 사용)이에 복제 데이터베이스에 로컬로 사용하여 어떤 종류의 스키마 동기화를 유지하는 데이터베이스의 복사본과 동기화 원격 db.

이 수 있습니다 많은 지원을 위해 오프라인 시나리오,하지만 당신은 고려"Microsoft Sync Framework"?에 포함되는 프레임워크가"동기화 서비스 ADO.NET 2.0"할 수 있는 응용 프로그램을 칠 로컬 SQL Server CE 인스턴스입니다.이 쉽게 수 있습과 동기화 중앙 서버를 통해 다양한 방법입니다.

이 프레임워크를 핸들의 영원한 오프라인 시나리오,그리고 내가 말했듯이,그것은 되지 않을 수 있습니다의 특정 요구에 적합한다 그러나,줄 것입니다 당신의 응용 프로그램 솔리드 오프라인 지원합니다.

우리는 이것에서 우리의 Main() 방법는 트랩의 처리되지 않은 모든 예외를...

Application.ThreadException += new 
System.Threading.ThreadExceptionEventHandler(UnhandledExceptionCatcher);

Thread.GetDomain().UnhandledException += new 
UnhandledExceptionEventHandler(Application_UnhandledException);

다음 Application_UnhandledExceptionUnhandledExceptionCatcher 표시 사용자 친화적 메시지입니다.

또한 응용 프로그램은 다음을 이메일로 데이터와 같은 스택 추적이 개발자에게는 매우 유용할 수 있습니다.

에 따라 물론 응용 프로그램이지만의 실패의 종류는 당신이 설명하는데 가깝습니다.

우리의 응용 프로그램에서,우리는 사용자에게 제공하는 옵션을 연결하는 다른 서버로,예를 들면,데이터베이스 연결에 실패하는 대화 상자를 표시하는 서버가 사용할 수 없고 그들은 입력하는 또 다른 IP 주소를 시도합니다.

다음과 같은 코드를 사용하면 SQLite 데이터를 저장할 때까지 오프라인 연결이 가능합니다.

업데이트:믿 SQLite 은 다시 끝 Google 장치, 는 나의 이해에서 무엇을 찾고 계신에서 웹 앱을...하지만 내가 알지 못하는 경우 사용할 수 있는 비 웹다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top