2009-06-19 2 views
0

나는 Silverlight 앱을 개발 중이므로 오프라인 일 수있는 다른 Silverlight 인스턴스의 목록을 동기화해야합니다. 온라인으로 서버를 동기화하겠습니다.Silverlight 동기화

그래서 우리는이 상상할 수 :

PC1 : A1 A2 A3

PC2 : A1 A2 (A3 삭제)

서버 : A1 A2 A3는 ( PC2를 반영하기 위해 A3를 삭제하고 그런 다음 pc1을 업데이트하여 삭제)

항목의 순서도 반영해야합니다. 온라인에서 오프라인으로 실버 라이트를 사용하고 싶습니다 (브라우저 외부에서).

여러분 중 누구와 비슷한 문제가 해결 되었습니까? 그것에 대한 좋은 접근 방법은 무엇입니까?

는이를 처리하기 위해 동기화 서비스 같은 것을 사용하십시오 정상적인 연결이 끊긴 환경에서 아르투르

+0

질문을 명확히 할 수 있습니까? "오프라인이 될 수있는 다양한 Silverlight 인스턴스"가 무엇을 의미하는지 정확히 모르겠다. –

+0

@Jason : Artur는 두 사용자가 모두 동일한 목록을 편집하는 Silverlight 앱을 실행하고 있음을 의미한다고 생각합니다. 그는 서버에 연결되어 있지 않아도 즉시 클라이언트 측에서 편집 작업을 원합니다. 통신이 복원되면 목록을 서버와 동기화하려고하며 다른 클라이언트는 변경 사항을 확인해야합니다. –

+0

바로 그게 스캇이에요. –

답변

2

, 감사합니다,하지만 실버 라이트 클라이언트에서 가지고 조금 무거운 무게입니다.

목록의 각 항목에 GUID를 부여하면됩니다. 그런 다음 각 클라이언트와 서버에서 목록의 삽입, 업데이트 및 삭제 로그를 보관합니다. 그런 다음 클라이언트가 서버에 연결할 때마다 병합 동기화를 수행해야합니다. 이 경우 당신은 감지하고 충돌을 처리 할 수있다 : 다른 사람이 그것을

  • 두 클라이언트가 항목을 편집 삭제하면서,

    • 누군가가 항목을 편집을 동시에

    의 재 주문을 처리하기 위해 귀하의 요구 사항 항목은 약간의 복잡성을 추가합니다. 목록에서 모든 항목의 모든 색인을 업데이트하지 않고 "항목 x 이동 전"또는 "항목 x 이동 후"조치로 재주문을 기록 할 수 있습니다.

  • +0

    Scot, 답변 해 주셔서 감사합니다. 나는 Microsoft Sync Framework를보고 있는데, 당신이 말하는 것과 같은 동기화 물건을 구현해야 할 것 같습니다. 나는 그것을 피하려고 노력했다. 목록에 항목을 저장 해요, 그래서 InsertAt (x) 말할 수 있으며 문제가 해결되었습니다. –

    +0

    @Artur : 기본적으로 대부분의 업데이트가 충돌하지 않는다고 가정하는 낙관적 인 알고리즘을 구현하려고합니다. 그러나 서버는 여전히 충돌을 감지하고 중재하고 해당 클라이언트를 변경 사항으로 업데이트하기 위해 많은 작업을해야합니다. 즉, 사용자가 변경을 수행하고 커밋 된 것으로 생각하고 서버가 해당 변경 사항을 덮어 써야하는 경우 사용자는 변경 사항을 덮어 쓰거나 잃어 버렸다는 메시지를 받게됩니다. –