2012-01-30 7 views
2

내 프로그램에 실시간 공동 작업 텍스트 편집기를 포함시키기 위해 Google-Mobwrite 실시간 공동 작업 텍스트 편집기 프로토콜로 Google에서 제공하는 Diff-Match-Patch 알고리즘을 사용하고 싶습니다.운영 변환 작업을 수행하는 서버에는 어떤 종류가 있습니까?

어쨌든 나는 정확히 사용자가 편집하고있는 각 문서의 "전역"복사본을 저장하는 가장 효율적인 방법이 무엇인지 궁금해하고있었습니다. 나는 각 사용자가 로컬 사용자가 아니며 사용자가 "작업"(붙여 넣기 잘라내 기 삭제)을 수행 할 때마다 각 문서를 서버에 저장하여 diff가 사본과 서버 및 패치 된 항목간에 계산되는 것을 원합니다. .. 만일 당신이 구글 mobwrite 프로토콜을 안다면 아마 내가하는 말을 이해할 것이다.

서버 텍스트 파일을 변경되거나 긴 문자열이나 sql 데이터베이스 내부에 저장해야합니까? 웹 소켓을 사용하여 서버와 통신해야합니까? 나는 솔직히 일종의 아마추어는 이것에 관해서는 일반적으로 빠른 학습자입니다. 누구나 따라갈 수있는 정보 나 자료가 있습니까? 고마워요

답변

1

이것은 처음부터 다루기에 큰 프로젝트가 될 것이므로이 분야에서 많은 오픈 소스 프로젝트 중 하나를 사용하는 것이 좋습니다. 예를 들어, etherPad :

https://code.google.com/p/etherpad/

0

Mobwrite은 차동 동기화 기술 및 운영 변환 기술로부터 완전히 다른를 사용하고 있습니다.

차동 동기화 항상 클라이언트 (브라우저)에서 시작하는 통신 서클이 있다고 가정합니다. 즉, 웹 소켓을 사용하여 서버에서 직접 diff를 보낼 수 없습니다. 브라우저는 업데이트를 받기 위해 서버를 자주 요청해야합니다 (2 초마다라고 말함) 그렇지 않으면 섀도 복사본이 동기화되지 않습니다.

사용자가 활성화되어있을 때 섀도 복사본을 저장하려면 원하는 것을 사용할 수 있지만 diff 및 패치를 수행하려면 빠른 액세스가 필요하므로 메모리 내장 DB (Redis)를 사용하는 것이 좋습니다. 사용자가 세션을 종료하면 더 이상 자신의 복사본이 필요하지 않습니다. 그러나 앱에 지속성이 필요한 경우 쉐도우 복사본이 아닌 서버 복사본 만 유지해야합니다 (쉐도우 복사본은 diff를 찾는 데 사용됩니다). 그런 다음 MySQL 등 원하는대로 사용할 수 있습니다.

그러나 운영 변환 기술에 대한

NodeJS 거기에 몇 가지 좋은 libs가있다 :

  • ShareJS은 (sharejs.org는) : JSON에 대한 모든 작업을 지원합니다.
  • RacerJS : ShareJS 상단에 동기화 모델
  • DerbyJS : 모델로 RacerJS를 사용하는 완벽한 프레임 워크.

OpenCoweb (opencoweb.org) : 서버는 자바 나 파이썬 중 하나이며, 클라이언트는 도장

에 내장되어 있습니다