문제

나를 구현하는 문서를 서버입니다.현재는 경우에,두 개의 사용자가 동 문서를 수정 및 변경 사항을 저장하는 문서의 상태가 정의되지 않은(중 첫 번째는 사용자의 변경 사항이 저장되어 영구적으로,또는 두 번째 s).이것은 전적으로 흡연 구역이 지정되어 있습니다.는 두 가지 가능성이 이 문제를 해결하기:

첫 번째는 잠 문서 열릴 때 사람에 의해 첫번째로,잠금을 해제 때 그것을 닫습니다.하지만 경우에는 네트워크 서버에 연결하는 것은 갑자기 중단,문서 머물 것에서 영원히 잠겨있는 상태입니다.확실한 해결책을 보내는 것입 정 핑하는 서버입니다.는 경우,서버는 받지 않는 K 핑 행(K>1)에서는 특정 클라이언트,문서에 의해 잠길이 클라이언트는 잠금 해제됩니다.는 경우에는 클라이언트 다시 나타납,문서 잠겨 있는 경우,다시 누군가가지 않는 이미니다.이것을 할 수 있도록 도와 줄 것으면 클라이언트 응용 프로그램(실행중인 웹 브라우저에서)이 종료되게 만드는 것이 불가능을 보낼'연의 잠금을 해제,나의 문서'신호를 서버입니다.

두 번째는 저장하는 여러 버전의 동일한 문서를 저장하여 다른 사용자.는 경우 변경 사항을 문서에서 연속적으로,시스템 제공하는 것이 중 하나를 병합하는 버전이나 선택하려면 원하는 버전입니다.을 최적화하는 저장 공간,문서 차이를 보관해야(단 소스는 제어 소프트웨어).

어떤 방법을 선택해야 하는 고려 사항으로는 서버에 연결할 때때로 수은 느리고 응답하지 않습니까?어떻게 해야한다 매개변수(핑 간격,연속적으로 간격)가 결정됩니까?

P.S.불행하게도,나는 저장할 수 없습니다 이 문서에서 데이터베이스입니다.

도움이 되었습니까?

해결책

제가 뭔가 될 것 같은 당신의 첫 번째 하나입니다.을 때 첫 번째 사용자가(Bob)가 문서를 열,그가 획득한 잠금 그래서 다른 사용자만 읽을 수 있는 현재 문서입니다.는 경우에는 사용자 문서를 저장 하는 동안 그는 그것을 사용하여,그 상태로 유지합니다.만할 때 그는 끝내는 문서,그것은 잠금을 해제하고 다른 사람들을 편집할 수 있습니다.

면 두 번째 사용자가(Kate)가 문서를 열면서 밥은 잠금에 그것은,케이트를 얻을 것이라는 메시지의 문서를 편집할 수 없지만 그녀는 그것을 읽을 수 있을 때까지 잠금이 출시되었습니다.

그래서 어떤 때 발생하는 밥을 취득한 잠금 장치,어쩌면 저장한 문서가는 한 번 또는 두 번지만 그 응용 프로그램을 종료합을 떠나 잠금까요?

당신이 말했듯이 자신을 요구하는 클라이언트와 잠금을 보내 핑 특정 주파수에서는 아마도 가장 좋은 방법입니다.을 얻지 않는 경우 핑 클라이언트에서 설정한 양의 시간 효과적으로 이미 자신의 클라이언트가 응답하지 않습니다 더 이상.이 경우 웹 응용 프로그램을 사용할 수 있습 javascript 에 대한 핑.는 문서를 마지막으로 저장 자료의 자물쇠와 Kate 을 수 있습니다.

Ping 수 있습의 이름을 포함하는 문서를 클라이언트에 대한 잠금을 가지고,서버와 계산할 수 있습니다면 마지막에 대한 핑는 문서를 받았습니다.

다른 팁

첫 번째 옵션을 설명은 근본적으로 잠그는 비관적 모델을 하는 동안 첫 번째는 낙관적인 모델입니다.선택하는 어느 정말 오는 요인을 하지만 본질적으로 귀결하여 어떻게 비즈니스장합니다.예를 들어,그것은 지나치게 불편 사용자는 경우 문서들을 편집하는 데 필요한 잠겨 다른 사용자가?면 무엇이 일어나는 문서가 잠기고 사람과 휴가를 간의 클라이언트 연결되어 있습니까?무엇을 가능성이 있는 경합을 위해 각각의 문서 i.e가능성이 어떻게 그것이 동일한 문서가 수정에 의해 두 개의 사용자에서 동일한가?, 어떻게 현지은 수정될 가능성이 높 단일 문서로?(경우에는 동일한 부분은 수정된 정기적으로 다음을 수행 병합보다 오래 걸릴 수 있습니다 단순히 변화시).

가정한 경쟁이 상대적으로 낮은 그리고/또는 각의 크기 변경이 매우 작으면 그때 나는 것 아마 선택한 낙관적 모델을 확인하는 충돌 사용하여 자동 또는 수동 병합합니다.버전 번호 또는 체크섬의 문서의 내용을 결정하는 데 사용할 수 있는 경우에는 병합이 필요합니다.

현재 문서가 출판하여 제한된 그룹의 사람들,그들 각각의 작업에서 별도의 주제입니다.그래서,그 불편을 도입하여 잠금 장치가 최소화됩니다.사람들은 대부분 기존 문서와 올바른 실수들.

에 대해 말하는 비관적 모델'왼쪽 클라이언트가 연결한 일 N'시나리오를 수 있을 방지할 잠금 설정이 만료하는 날짜를 말,하루 전에 잠금 시작 날짜입니다.기 때문에서 문서를 편집은 임무 중요하고,수정하여 여러 사용자가 아주 드물게 될 수 있는 충분합니다.

지금 고려 낙관적인 모델입니다.어떻게 해야의 차이를 감지할 경우,문서의 일부를 일반(예,계층)구조는?하지 않을 경우?무엇인가 기회의 성공적인 자동적인 병합 이러한 경우에는?

상황을 더욱 복잡하기 때문에 일부의 문서(편집'admins'사용자 그룹)을 포함한 중요한 구성 정보(문서 글로벌 index,사용자 역할,etc.).내 마음,잠금 더 유리에 대한 정확하게 이런 종류의 정보이기 때문에,그것은 변경되지 않 공유 기능을 지원합니다.그래서 일부 하이브리드 솔루션이 될 수 있습 허용됩니다.

당신은 무엇을 생각하십니까?

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