2009-09-30 4 views
5

저는 빌드해야하는 앱을 다루는 방법을 연구하도록 요청 받았습니다. 이 응용 프로그램은 C#으로 작성된 Windows 양식이 연결되어있는 경우 서버에 직접 명령을 내릴 수 있지만 응용 프로그램이 오프라인 인 경우 연결된 상태로 유지 한 다음 동기화하여 데이터 변경/명령을 실행해야합니다. 한 번 서버 입니다..NET을 사용한 오프라인 동기화 옵션

어디서부터 시작해야할지 모르겠습니다. 이것은 Google Gears와 비슷한 기능이지만 Winform 라우트 (웹 애플리케이션이 수행 할 수없는 다른 기능이 필요하다는 점을 감안하면 가능성이 높습니다)로 이동하면 옵션이 없다고 생각합니다. Microsoft Sync framework은 실행 가능한 옵션입니까? Silverlight에서 이와 같은 작업을 수행합니까? 다른 옵션은 없습니까? 나는 조금 주위에 인터넷 검색을했는데 시나리오가 주어 졌을 때 가장 좋은 것이 무엇인지에 대한 커뮤니티 입력을 원합니다.

답변

9

Microsoft Sync Framework는 사용자가 설명하는 시나리오를 확실히 지원합니다.하지만 실제로 작동하게하는 것은 상당히 복잡합니다.

  • 동기화 프레임 워크
  • ADO.NET 동기화 서비스 2 절
:. 동기화 프레임 워크에 대한 이해

한 점은 같은 패키지 정말이 매우 독특한 프레임 워크의 배송 점이다

ADO.NET Sync 서비스는 설정하기가 훨씬 쉽지만 두 개의 관계형 데이터 저장소를 동기화하는 데 제약이 있습니다 (웹 서비스를 둘 사이의 원격 팩터 리로 설정할 수 있음).

코어 Sync Framework에는 이러한 제한이 없지만 구현하기가 훨씬 더 복잡합니다. 약 6 개월 전에 사용했을 때 배우기 가장 좋은 소스는 SDK였으며, 특히 파일/폴더 동기화 샘플 코드였습니다.

내가 말할 수있는 한, 두 '프레임 워크'간에 코드와 유형을 거의 공유하지 않아서 하나를 선택해야합니다.

어느 경우이든 동기화 코드를 호스팅하는 방법에 제약이 없으므로 Windows Forms는 많은 옵션 중 하나 일뿐입니다.

+0

매우 유익한 정보, 감사합니다. – Chris

2

정확하게 이해한다면 두 데이터베이스를 동기화하려는 실제 데이터 동기화 문제가 아닌 것 같습니다. 연결이 불안정한 환경에서 서버에서 클라이언트가 함수를 호출 할 수있는 신뢰할 수있는 메커니즘을 원하는 것처럼 들리며 연결이 그 시점에 없으면 연결이 다시 호출되는 즉시 함수를 호출해야합니다 쪽으로.

제 이해가 맞으면 하나의 옵션입니다. 그렇지 않은 경우에는 도움이되지 않을 것입니다.


이 문제는 심층적 인 문제에 대한 매우 짧은 답변이지만 비슷한 상황이 발생하여이를 처리했습니다.

우리는 상점의 PC에서 일부 데이터를 모니터해야하는 클라이언트 응용 프로그램이 있습니다. 특정 이벤트가 발생하면이 클라이언트 응용 프로그램은 본사 서버에서 Real-Time 서버를 업데이트해야합니다. 그러나 연결이 100 % 신뢰할 수있는 것은 아니므로 비슷한 메커니즘이 필요했습니다.

웹 서비스를 통해 서버에 쓰기를 시도하여이를 해결했습니다. 웹 서비스를 호출하는 중 오류가 발생하면 명령이 "waiting to upload"라는 폴더에 XML 파일로 직렬화됩니다.

n 분마다 타이머가 설정된 클라이언트 응용 프로그램에서 실행되는 루틴이 있습니다. 타이머가 경과하면이 폴더에서 XML 파일을 확인합니다. 파일이 발견되면 파일에 저장된 정보를 사용하여 웹 서비스를 호출하고 성공할 때까지 계속 시도합니다. 호출이 성공하면 XML 파일이 삭제됩니다.

해킹 소리가 들리지만 코드 작성이 간단하고 5 년 동안 완벽하게 작동했습니다. 실제로 실제로 가장 문제가없는 응용 프로그램이었으며 다른 곳에서도 패턴을 구현했습니다.

+0

올바른 해석, 예. 나는 MSMQ를 사용하려고 생각하고 있었기 때문에 그것이 도착할 때까지 계속 시도 할 화재 - 잊지 방법 이었지만 근본적으로 당신의 접근 방식과 같습니다. 고맙습니다! – Chris

+0

MSMQ도 좋은 선택입니다. 우리는 모든 고객에게 설치하지 않기를 원했기 때문에이를 사용하지 않았습니다. 우리가 취한 접근 방식은 개발 팀에서 추가 단계를 거쳤지 만 설치 팀과 관리자를위한 별도의 조치가 필요하지 않았습니다. . 그러나 MSMQ가 도움이된다면 아주 좋은 선택이라고 할 수 있습니다. – David

+0

무엇이든 지금 제안 할 수 있습니다. 오프라인 상태에서 API를 호출하는 동일한 응용 프로그램에서 msmq를 사용할 수 있습니까? msmq 용 수신기가 필요합니까? – coder771