KR20170135011A - 공동 편집 문서를 공유하는 방법 및 장치 - Google Patents

공동 편집 문서를 공유하는 방법 및 장치 Download PDF

Info

Publication number
KR20170135011A
KR20170135011A KR1020160066188A KR20160066188A KR20170135011A KR 20170135011 A KR20170135011 A KR 20170135011A KR 1020160066188 A KR1020160066188 A KR 1020160066188A KR 20160066188 A KR20160066188 A KR 20160066188A KR 20170135011 A KR20170135011 A KR 20170135011A
Authority
KR
South Korea
Prior art keywords
command
client
editing
edit
server
Prior art date
Application number
KR1020160066188A
Other languages
English (en)
Other versions
KR101822401B1 (ko
Inventor
정새암
Original Assignee
주식회사 인프라웨어
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 인프라웨어 filed Critical 주식회사 인프라웨어
Priority to KR1020160066188A priority Critical patent/KR101822401B1/ko
Publication of KR20170135011A publication Critical patent/KR20170135011A/ko
Application granted granted Critical
Publication of KR101822401B1 publication Critical patent/KR101822401B1/ko

Links

Images

Classifications

    • G06F17/24
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F17/21
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Tourism & Hospitality (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Strategic Management (AREA)
  • Primary Health Care (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Document Processing Apparatus (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 개시의 일 실시예에 따라 공동 편집 문서를 공유하는 방법이 개시된다. 상기 방법은 명령어 전달 서버에서 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 상기 공동 편집 문서를 편집하기 위한 적어도 두 개의 편집 명령어를 수신하는 단계, 수신 큐(queue)에서 상기 적어도 두 개의 편집 명령어를 명령어 전달 서버에 수신된 순서에 기초하여 저장하는 단계 및 명령어 저장 서버에서 상기 수신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 수신 큐에 저장된 순서에 기초하여 획득하는 단계를 포함할 수 있다.

Description

공동 편집 문서를 공유하는 방법 및 장치{METHOD AND APPARATUS FOR SHARING A COLLABORATIVE EDITING DOCUMENT}
본 개시는 공동 편집 문서를 공유하는 방법 및 장치에 관한 것으로서, 보다 상세하게는 공동으로 편집하는 문서를 효율적으로 공유할 수 있는 공동 편집 문서를 공유하는 방법 및 장치에 관한 것이다.
최근 통신 기술이 발달함에 따라, 인터넷을 통해 다양한 서비스가 제공되고 있다. 특히, 인터넷을 통해 대용량의 파일들이 이동되고 대량의 데이터가 송수신된다. 이에 따라, 인터넷을 통해 언제 어디서든지 다양한 파일을 공유하는 기술도 발달하게 되었다.
이와 같이 다양한 통신 기술(예를 들어, 인터넷)을 기초로 단말기를 사용하는 사용자들이 가상의 저장소에 데이터 또는 파일을 저장하고 가상의 저장소를 통해 데이터 또는 파일을 주고 받고 공유도 할 수 있는 서비스를 클라우드(cloud)서비스라고 한다. 클라우드 서비스를 통해 사용자는 데이터 또는 파일을 자유롭게 사용할 수 있다. 구체적으로, 클라우드 서비스를 통해 사용자는 시간과 공간의 제약을 받지 않고 데이터 또는 파일을 다운로드(download)또는 업로드(upload)할 수 있고, 데이터 또는 파일을 다른 사용자들과 공유할 수도 있다.
이러한 클라우드 서비스는 데이터 또는 파일을 저장하고 공유하는 저장소인 공유 서버를 기반으로 제공된다. 구체적으로, 사용자들은 공유 서버를 통해 문서 파일을 저장 및 공유하고, 사용자들은 각자의 단말기를 통해 문서 파일을 편집할 수 있다.
다만, 사용자가 단말기에서 공유하는 공유 문서를 편집하는 경우, 사용자의 단말기에서 입력하는 편집 내용들이 단말기와 서버 간의 통신 문제 등으로 공유 서버에 순차적으로 전송되지 않는 경우가 발생할 수 있었다. 이에 따라, 개인의 편집 내용이 공유 문서에 온전하게 반영되지 않고, 개인의 편집 내용들 안에서도 순서가 섞여 클라우드 서비스의 질이 저하되는 문제점이 발생할 수 있었다.
따라서, 공유 및 편집을 위한 공유 문서를 제공하는 서버가 클라이언트로부터 수신한 편집 내용들 간의 순차성을 유지하기 위해 복수의 서버를 이용하여 문서를 공유하는 방법을 제공할 필요성이 증대되었다.
문서협업 방법(한국공개특허 제 10-2014-0028040 호)
본 개시는 전술한 배경기술에 대응하여 안출된 것으로, 본 개시가 해결하고자 하는 과제는 서버가 클라이언트로부터 다수의 클라이언트가 편집할 수 있도록 공유되는 문서(이하, 공동 편집 문서라 한다.)에 대하여 수신한 편집 내용들 간의 순차성을 유지할 수 있는 공동 편집 문서를 공유하는 방법 및 장치를 제공하는 것이다.
본 개시의 과제들은 이상에서 언급한 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
전술한 바와 같은 과제를 실현하기 위한 본 개시의 일 실시예에 따라 공동 편집 문서를 공유하는 방법이 개시된다. 상기 방법은 명령어 전달 서버에서 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 상기 공동 편집 문서를 편집하기 위한 적어도 두 개의 편집 명령어를 수신하는 단계, 수신 큐(queue)에서 상기 적어도 두 개의 편집 명령어를 명령어 전달 서버에 수신된 순서에 기초하여 저장하는 단계 및 명령어 저장 서버에서 상기 수신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 수신 큐에 저장된 순서에 기초하여 획득하는 단계를 포함할 수 있다.
대안적으로, 상기 수신 큐는 상기 클라이언트 그룹의 각각의 클라이언트에 일대일 대응되는 수로 구성될 수 있다.
대안적으로, 상기 적어도 두 개의 편집 명령어가 상기 수신 큐에 저장된 후, 상기 명령어 전달 서버에서 상기 명령어 저장 서버에게 상기 적어도 두 개의 편집 명령어가 상기 수신 큐에 저장되었음을 통지하기 위한 알림을 전송하는 단계를 더 포함하고, 상기 명령어 저장 서버에서 상기 수신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 수신 큐에 저장된 순서에 기초하여 획득하는 단계는 상기 명령어 저장 서버에서 상기 명령어 전달 서버로부터 상기 알림을 수신하는 경우에 수행될 수 있다.
대안적으로, 상기 명령어 전달 서버에서 상기 명령어 저장 서버에게 상기 적어도 두 개의 편집 명령어가 상기 수신 큐에 저장되었음을 통지하기 위한 알림을 전송하는 단계는 상기 명령어 전달 서버가 상기 수신 큐로부터 저장 완료 응답을 수신하는 경우에 수행될 수 있다.
대안적으로, 명령어 저장 서버에서 상기 수신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 수신 큐에 저장된 순서에 기초하여 획득하는 단계는 상기 적어도 두 개의 수신 큐 중 제 1 수신 큐에 저장된 상기 적어도 두 개의 편집 명령어의 수가 사전 결정된 개수 이상인 경우, 상기 명령어 저장 서버에서 상기 제 1 수신 큐에 저장된 상기 편집 명령어를 우선적으로 획득할 수 있다.
대안적으로, 송신 큐에서 상기 적어도 두 개의 편집 명령어를 상기 명령어 저장 서버로부터 전달 받아 명령어 전달 서버에 수신된 순서에 기초하여 저장하는 단계, 상기 명령어 전달 서버에서 상기 송신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 송신 큐에 저장된 순서에 기초하여 획득하는 단계 및 상기 명령어 전달 서버에서 상기 클라이언트 그룹의 각각의 클라이언트에게 상기 편집 명령어를 송신하는 단계를 더 포함할 수 있다.
대안적으로, 상기 적어도 두 개의 편집 명령어가 상기 송신 큐에 저장된 후, 상기 명령어 저장 서버에서 상기 명령어 전달 서버에게 상기 적어도 두 개의 편집 명령어가 상기 송신 큐에 저장되었음을 통지하기 위한 알림을 전송하는 단계를 더 포함하고, 상기 명령어 전달 서버에서 상기 송신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 송신 큐에 저장된 순서에 기초하여 획득하는 단계는 상기 명령어 전달 서버에서 상기 명령어 저장 서버로부터 상기 알림을 수신하는 경우에 수행될 수 있다.
대안적으로, 상기 명령어 저장 서버에서 상기 명령어 전달 서버에게 상기 적어도 두 개의 편집 명령어가 상기 송신 큐에 저장되었음을 통지하기 위한 알림을 전송하는 단계는 상기 명령어 저장 서버가 상기 송신 큐로부터 저장 완료 응답을 수신하는 경우에 수행될 수 있다.
대안적으로, 상기 송신 큐는 상기 각각의 명령어 전달 서버에 대응되도록 적어도 하나 이상으로 구성될 수 있다.
본 개시의 다른 일 실시예에 따른 하나 이상의 프로세서에 의해 실행되는 복수의 명령들을 포함하는, 컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램이 개시된다. 상기 컴퓨터 프로그램은 명령어 전달 서버에서 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하기 위한 적어도 두 개의 편집 명령어를 수신하도록 하기 위한 명령, 수신 큐에서 상기 적어도 두 개의 편집 명령어를 명령어 전달 서버에 수신된 순서에 기초하여 저장하도록 하기 위한 명령 및 명령어 저장 서버에서 상기 수신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 수신 큐에 저장된 순서에 기초하여 획득하도록 하기 위한 명령 을 포함할 수 있다.
본 개시의 또 다른 일 실시예에 따른 공동 편집 문서를 공유하는 시스템이 개시된다. 상기 시스템은 명령어 전달 서버, 수신 큐 및 명령어 저장 서버를 포함하고, 상기 명령어 전달 서버는 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 상기 공동 편집 문서를 편집하기 위한 편집 명령어를 수신하고, 상기 수신 큐는 상기 적어도 두 개의 편집 명령어를 명령어 전달 서버에 수신된 순서에 기초하여 저장하고, 그리고 상기 명령어 저장 서버는 상기 수신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 수신 큐에 저장된 순서에 기초하여 획득할 수 있다.
또한, 본 개시의 다른 일 실시예에 따른 클라이언트에서 공동 편집 문서를 공유하기 위한 방법이 개시된다. 상기 방법은 사용자 입력에 기초하여 상기 클라이언트에서 상기 공동 편집 문서를 편집하기 위한 편집 명령어를 생성하는 단계, 상기 클라이언트가 상기 생성된 편집 명령어를 명령어 전달 서버로 전송하는 단계 및 상기 클라이언트에서 상기 명령어 전달 서버로 전송된 편집 명령어가 명령어 저장 서버를 경유하여 상기 클라이언트에 재 수신되는 경우, 상기 클라이언트가 편집된 공동 편집 문서를 저장하는 단계를 포함할 수 있다.
본 개시는 서버가 클라이언트로부터 다수의 클라이언트가 편집할 수 있도록 공유되는 문서에 대하여 수신한 편집 내용들 간의 순차성을 유지할 수 있는 공동 편집 문서를 공유하는 방법 및 장치를 제공하는 것이다.
본 개시에 따른 효과는 이상에서 예시된 내용에 의해 제한되지 않으며, 더욱 다양한 효과들이 본 명세서 내에 포함되어 있다.
도 1은 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 장치와 공유 서버, 바로가기 파일 서버 및 클라이언트 사이의 관계를 도시한 것이다.
도 2는 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 방법에 따라 공동 편집 문서 파일을 공유하기 위한 절차를 도시한 것이다.
도 3은 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 장치의 구성 및 클라이언트 사이의 관계를 도시한 것이다.
도 4a 및 도 4b는 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 방법에 의해 공동 편집 문서를 공유하는 클라이언트의 엔진 및 클라이언트의 예시적인 출력 화면을 도시한 것이다.
도 5는 본 개시의 다른 실시예에 따른 공동 편집 문서를 공유하는 장치의 구성 및 클라이언트 사이의 관계를 도시한 것이다.
도 6a 및 도 6b는 본 개시의 다른 실시예에 따른 공동 편집 문서를 공유하는 방법에 의해 공동 편집 문서를 공유하는 클라이언트의 예시적인 출력 화면을 도시 한 것이다.
도 7은 본 개시의 또 다른 실시예에 따른 공동 편집 문서를 공유하는 장치의 구성 및 클라이언트 사이의 관계를 도시한 것이다.
도 8a 및 도 8b는 본 개시의 또 다른 실시예에 따른 공동 편집 문서를 공유하는 방법에 의해 공동 편집 문서를 공유하는 클라이언트의 엔진 및 클라이언트의 예시적인 출력 화면을 도시한 것이다.
도 9는 본 개시의 일 실시예에 따른 수신 큐가 명령어 전달 서버로부터 수신된 편집 명령어를 저장하고, 명령어 저장 서버가 수신 큐에서 편집 명령어를 획득하는 관계를 도시한 것이다.
도 10은 본 개시의 제 1 양상에 따른 일 실시예에서 공동 편집 문서를 공유하는 장치들과 서버들간의 관계를 도시한 것이다.
도 11은 본 개시의 제 2 양상에 따른 일 실시예에서 공동 편집 문서를 공유하는 장치들과 서버들간의 관계를 도시한 것이다.
도 12는 본 개시의 제 3 양상에 따른 일 실시예에서 공동 편집 문서를 공유하는 장치들과 서버들간의 관계를 도시한 것이다.
도 13은 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 방법의 순서도(flow chart)이다.
본 개시의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 개시는 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 개시의 개시가 완전하도록 하며, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 개시는 청구항의 범주에 의해 정의될 뿐이다.
본 개시의 실시예를 설명하기 위한 도면에 개시된 형상, 크기, 비율, 각도, 개수 등은 예시적인 것이므로 본 개시가 도시된 사항에 한정되는 것은 아니다. 또한, 본 개시를 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 개시의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명은 생략한다. 본 명세서 상에서 언급된 '포함한다', '갖는다', '이루어진다' 등이 사용되는 경우 '~만'이 사용되지 않는 이상 다른 부분이 추가될 수 있다. 구성요소를 단수로 표현한 경우에 특별히 명시적인 기재 사항이 없는 한 복수를 포함하는 경우를 포함한다.
구성요소를 해석함에 있어서, 별도의 명시적 기재가 없더라도 오차 범위를 포함하는 것으로 해석한다.
비록 제1, 제2 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않는다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성요소는 본 개시의 기술적 사상 내에서 제2 구성요소일 수도 있다.
별도로 명시하지 않는 한 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 개시의 여러 실시예들의 각각 특징들이 부분적으로 또는 전체적으로 서로 결합 또는 조합 가능하며, 당업자가 충분히 이해할 수 있듯이 기술적으로 다양한 연동 및 구동이 가능하며, 각 실시예들이 서로에 대하여 독립적으로 실시 가능할 수도 있고 연관 관계로 함께 실시 가능할 수도 있다.
이하, 본 명세서에서 사용되는 용어에 대해 정의한다.
본 명세서에서 문서 편집 단말기란, 전자 문서 파일을 편집할 수 있는 단말기로서, 클라우드 서버와 같은 공유 서버에 저장된 전자 문서 파일을 공유 하면서 전자 문서 파일의 내용 및 설정 등을 편집할 수 있는 단말기를 의미한다.
본 명세서에서 공동 편집 문서란, 다수의 문서 편집 단말기가 공유하는 협업에 의해 작성되는 문서로서, 문서 편집 단말기가 공유하는 전자 문서를 의미한다. 공동 편집 문서는 문서 편집 단말기들이 전자 문서를 공유하기 위해 접속한 클라우드 서버에 저장된 전자 문서를 의미할 수 있다.
본 명세서에서 공동 편집 문서 파일이란, 다수의 문서 편집 단말기를 통해 공유되고 편집 가능한 공동 편집 문서 자체 또는 공동 문서에 접근할 수 있는 경로(path)를 의미한다. 예를 들어, 공동 편집 문서 파일은 클라우드 서버와 같은 공유 서버로부터 전송되어 공동 문서 공유 장치에 일시적으로 저장되어 있는 공동 문서 자체이거나 문서 편집 단말기가 공동 문서에 접근할 수 있는 링크(link)일 수 있다.
본 명세서에서 시드 문서 파일이란, 클라이언트가 공동으로 편집하고자 하는 문서 파일(이하, 공동 편집 문서 파일)에 대응하는 편집용 파일로서, 편집 명령어가 적용되기 이전에 클라이언트가 공유하는 편집용 문서 파일을 의미한다. 이러한 시드 문서 파일은 공동 편집 문서를 공유하는 장치에 저장되어 있다가 클라이언트가 문서 파일의 공유를 요청하는 경우 클라이언트로 송신될 수 있다.
본 명세서에서 편집 명령어란, 클라이언트에서 공유하는 문서를 편집하는 명령어로서, 공동 편집 문서에 입력되는 다양한 명령어를 포함한다. 예를 들어, 편집 명령어는 공동 편집 문서의 적어도 일부 내용을 삭제하는 삭제 명령어, 추가하는 명령어, 문서의 서식 등을 변경하는 명령어 및 그림과 같은 객체를 삽입하는 삽입 명령어 등을 포함할 수 있다. 임의의 클라이언트에서 입력한 편집 명령어는 공동 편집 문서를 공유하는 장치로 송신된 후 공동 편집 문서를 공유하는 장치에 연결된 클라이언트로 송신될 수 있다.
본 명세서에서 명령어 리스트란, 편집 명령어를 수신하여 미리 정해진 규칙에 따라 수신한 편집 명령어를 저장한 리스트이다. 예를 들어, 명령어 리스트는 미리 설정된 조건이 충족되기 전까지 수신된 편집 명령어를 저장한 리스트일 수 있다.
본 명세서에서 추가 클라이언트란, 문서 파일에 대한 편집 명령어가 공동 편집 문서를 공유하는 장치에 적어도 하나 입력된 이후, 공동 편집 문서를 공유하는 장치에 연결된 클라이언트를 의미한다. 즉, 추가 클라이언트는 이미 공동 편집 문서를 공유하는 장치에 연결된 클라이언트가 시드 문서 파일을 편집한 이후 공동 편집 문서를 공유하는 장치에 연결된 클라이언트를 의미한다. 다시 말하면, 추가 클라이언트는 공동 편집 문서를 공유하는 장치에 연결된 클라이언트들을 포함하는 클라이언트 그룹에 포함되지 않는 클라이언트를 의미할 수 있다.
도 1은 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 장치와 공유 서버, 바로가기 파일 서버 및 클라이언트 사이의 관계를 도시한 것이다.
도 1을 참조하면, 공동 편집 문서를 공유하는 장치(이하, 공동 편집 문서 공유 장치)(100)는 시드 문서 서버(110), 명령어 전달 서버(120), 명령어 저장 서버(130)및 엔진-풀(engine-pool)서버(140)를 포함한다. 공동 편집 문서 공유 장치(100)는 적어도 하나의 클라이언트(900) 및 추가 클라이언트(910)와 통신 가능하도록 연결될 수 있다. 또한, 공동 편집 문서 공유 장치(100)는 공유 서버(1000)및 바로가기 파일 서버(1200)와도 통신 가능하도록 연결될 수 있다. 공동 편집 문서 공유 장치(100)에 연결된 적어도 하나의 클라이언트들은, 클라이언트 그룹(900)을 구성할 수 있다. 클라이언트 그룹(900)은 공동 편집 문서와 연관된 적어도 두 개의 클라이언트를 포함하는 그룹을 의미할 수 있으나, 이에 제한되는 것은 아니다. 예를 들어, 클라이언트 그룹(900)에 속한 클라이언트들이 클라이언트 그룹(900)에서 탈퇴하여 하나의 클라이언트만이 클라이언트 그룹(900)에 속하는 경우에도, 상기 하나의 클라이언트 또한 클라이언트 그룹(900)으로 지칭될 수 있다. 클라이언트 그룹(900)이 생성되고 하나의 클라이언트만이 지정된 경우에도, 상기 하나의 클라이언트 또한 클라이언트 그룹(900)으로 지칭될 수 있다. 클라이언트 그룹(900)은 동일한 공동 편집 문서에 액세스 가능한 클라이언트들 전체 또는 일부로 구성될 수 있다. 클라이언트 그룹(900)이 공동으로 편집하는 문서는 하나의 문서이거나 또는 복수의 문서일 수 있다. 클라이언트 그룹(900)이 공동으로 편집하는 문서가 복수인 경우, 복수의 문서들은 동일한 타입(예를 들어, 스프레드 시트 문서)의 조합이거나, 상이한 타입의 조합(예를 들어, 스프레드 시트 문서와 텍스트 문서의 조합)일 수 있다. 하나의 클라이언트 그룹(900)에 속한 클라이언트는 동시에 다른 클라이언트 그룹에 속할 수도 있다. 하나의 공동 편집 문서에 대하여 하나 이상의 클라이언트 그룹(900)이 생성될 수 있다. 클라이언트 그룹(900)은 임의의 이벤트를 공유하거나, 임의의 사유로 인하여 편집 명령어들을 공유할 필요성이 있는 클라이언트들을 포함할 수 있다. 이하 문서에서, "적어도 하나의 클라이언트"는 클라이언트 그룹(900)에 속한 하나 이상의 클라이언트를 의미하거나, 또는 클라이언트 그룹(900)전체의 집합적인 동작을 서술하기 위해 사용될 수 있다.
시드 문서 서버(110)는 시드 문서 파일 및 갱신 시드 문서 파일을 저장하고, 엔진-풀 서버(140)에 시드 문서 파일을 제공할 수 있다. 또한, 시드 문서 서버(110)는 공유 서버(1000)에 업로드된 문서 파일을 기초로 생성된 시드(seed)문서 파일을 저장하고, 상기 시드 문서 파일을 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트에게 전송할 수 있다.
명령어 전달 서버(120)는 적어도 하나의 클라이언트(900)로부터 편집 명령어를 수신하여 다시 적어도 하나의 클라이언트(900)로 편집 명령어를 송신한다. 명령어 전달 서버(120)는 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹(900)에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서와 관련되는 적어도 두 개의 편집 명령어들을 수신하고, 상기 적어도 두 개의 편집 명령어들을 수신된 순서에 기초하여 상기 클라이언트 그룹에 포함된 클라이언트들 각각에 송신할 수 있다. 예를 들어, 명령어 전달 서버(120)는 제2 클라이언트(902)로부터 수신한 편집 명령어를 적어도 하나의 클라이언트(900)모두에 송신한다. 또한, 명령어 전달 서버(120)는 적어도 하나의 클라이언트(900)로부터 수신한 편집 명령어를 명령어 저장 서버(130)로 전송한다.
명령어 저장 서버(130)는 명령어 전달 서버(120)로부터 전송된 편집 명령어들을 저장한다. 구체적으로, 명령어 저장 서버(130)는 명령어 전달 서버(120)가 전송한 순서대로 편집 명령어들을 저장할 수 있다. 여기서, 명령어 전달 서버(120)가 전송한 순서는 명령어 전달 서버(120)가 편집 명령어를 수신 한 순서와 동일할 수 있다. 나아가, 명령어 저장 서버(130)는 편집 명령어를 수신한 순서대로 저장하여 명령어 리스트를 생성할 수 있고, 미리 결정된 조건에 따라 명령어 리스트를 엔진-풀 서버(140)로 송신할 수 있다. 명령어 저장 서버(130)는 명령어 전달 서버(120)가 수신한 편집 명령어들이 수신된 순서에 기초하여 수집된 명령어 리스트를 생성하고, 미리 결정된 조건이 충족되면 명령어 리스트를 엔진-풀 서버(140)로 송신할 수 있다. 상기 미리 결정된 조건은, 상기 적어도 하나의 클라이언트로부터 편집 명령어를 일정 시간 동안 수신 하지 않는 경우, 편집 명령어가 명령어 저장 서버에 임계 값 이상 누적된 경우 또는 적어도 하나의 클라이언트의 접속 종료를 감지한 경우를 포함할 수 있다. 명령어 저장 서버(130)는 명령어 전달 서버(120)와 물리적으로 동일한 서버의 상이한 모듈일 수도 있고, 물리적으로 구분된 서버일 수도 있다.
엔진-풀 서버(140)는 시드 문서 서버(110)로부터 시드 문서 파일을 수신하고, 명령어 저장 서버(130)로부터 명령어 리스트를 수신하여, 시드 문서 파일 및 명령어 리스트를 기초로 갱신 시드 문서 파일을 생성한다. 예를 들어, 엔진-풀 서버(140)는 시드 문서 파일에 명령어 리스트에 포함된 편집 명령어를 병합하여, 갱신 시드 문서 파일을 생성할 수 있다. 또한, 엔진-풀 서버(140)는 시드 문서 파일 및 편집 명령어를 기초로 하거나 갱신 시드 문서 파일 및 추가 편집 명령어를 기초로 갱신 공동 편집 문서 파일을 생성하는 엔진(engine)을 포함할 수 있다. 엔진-풀 서버(140)는 미리 설정된 조건이 충족되면, 상기 수신된 편집 명령어들이 수신된 순서에 기초하여 수집된 명령어 리스트에 기초하여, 상기 공동 편집 문서와 관련되는 시드 문서 파일을 갱신할 수 있다. 또한, 엔진-풀 서버(140)는 갱신 시드 문서 파일을 다시 시드 문서 서버(110)로 전송한다.
도 1을 참조하면, 적어도 하나의 클라이언트(900)는 제1 클라이언트(901), 제2 클라이언트(902)및 제3 클라이언트(903)를 포함한다. 도 1에는 적어도 하나의 클라이언트(900)가 3개의 클라이언트를 포함하는 것으로 도시되었으나, 적어도 하나의 클라이언트(900)에 포함되는 클라이언트의 수는 이에 제한되지 않는다. 제1 내지 제3 클라이언트들은 클라이언트 그룹(900)을 구성할 수 있다.
도 1을 참조하면, 적어도 하나의 클라이언트(900)는 공유 서버(1000)에 문서 파일을 업로드할 수 있다. 구체적으로, 적어도 하나의 클라이언트(900) 중 임의의 하나의 클라이언트, 예를 들어, 제1 클라이언트(901)가 공유 서버(1000)에 공유하고자 하는 문서 파일을 업로드할 수 있다. 이하, 제1 클라이언트(901)가 공유 서버(1000)에 문서 파일을 업로드한 경우를 기준으로 공동 편집 문서를 공유하는 방법을 설명한다.
또한, 적어도 하나의 클라이언트(900) 각각은 시드 문서 파일 및 편집 명령어를 기초로 하거나 갱신 시드 문서 파일 및 추가 편집 명령어를 기초로 갱신 공동 편집 문서 파일을 생성하는 엔진(engine)을 포함한다. 적어도 하나의 클라이언트(900) 각각에 포함된 엔진의 구체적인 기능에 대해서는 도 4 및 도 8을 참조하여 후술한다.
도 1을 참조하면, 공유 서버(1000)는 공동 편집 문서 공유 장치(100)에 문서 파일에 관한 정보를 제공할 수 있다. 예를 들어, 공유 서버(1000)는 문서 파일을 복사하여 공동 편집 문서 공유 장치(100)에 시드 문서 파일을 제공할 수 있다.
도 1을 참조하면, 바로가기 파일 서버(1200)는 공유 서버(1000)와 통신 가능하도록 연결된다. 구체적으로, 바로가기 파일 서버(1200)는 공유 서버(1000)에 업로드된 문서 파일을 기초로 바로가기 파일을 생성한다. 예를 들어, 제1 클라이언트(901)로부터 문서 파일을 클라이언트 그룹(900)에 포함된 다른 클라이언트들 또는 클라이언트 그룹(900)에 포함되지 않은 추가 클라이언트(910)와 공유하고자 하는 공유 신호를 공유 서버(1000)가 수신하는 경우, 바로가기 파일 서버(1200)는 업로드된 문서 파일을 기초로 바로가기 파일을 생성한다. 바로가기 파일에 대한 구체적인 설명은 도 7 및 도 8을 참조하여 후술한다.
이에 따라, 명령어의 전달과 시드 문서 파일의 갱신을 이원화한 명령어 전달 서버(120)및 엔진-풀 서버(140)를 포함하는 공동 편집 문서 공유 장치(100)는 하나의 서버를 통해 편집 명령어가 수신될 때마다 공동 문서 파일이 갱신되는 경우 발생하는 서버의 리소스 낭비와 공동 문서 파일의 갱신 속도 및 성능의 저하를 개선할 수 있다.
본 개시의 일 실시 예에 공동 편집 문서 공유 장치(100)는 클라이언트로부터 수신된 편집 명령어를 다른 클라이언트로 전달하는 기능과, 편집 명령어를 공동 편집 문서에 병합하는 기능을 분리하여, 클라이언트 수의 증가에 따라 엔진의 수를 상응하게 증가시키지 않아도 되므로 리소스 요구량의 급증을 방지할 수 있고, 서버의 부담을 절감할 수 있다.
공동 편집 문서 공유 장치(100)의 각 구성들은 설명의 편의상 개별적인 구성으로 도시한 것일 뿐, 구현 방법에 따라 하나의 구성으로 구현되거나 하나의 구성이 2 이상의 구성으로 분리될 수 있다.
도 2는 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 방법에 따라 공동 편집 문서 파일을 공유하기 위한 절차를 도시한 것이다. 도 3은 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 장치의 구성 및 클라이언트 사이의 관계를 도시한 것이다. 설명의 편의를 위해 도 1을 참조하여 설명한다.
본 개시에 따른 공동 편집 문서를 공유하는 방법은 시드 문서 서버(110)가 공유 서버(1000)에 업로드된 문서 파일을 기초로 생성된 시드 문서 파일을 적어도 하나의 클라이언트(900)로 송신함으로써 개시된다(S210).
도 3을 참조하면, 시드 문서 서버(110)는 시드 문서 파일을 저장하고, 공동 편집 문서 공유 장치(100)에 연결되어 공동 편집을 요청한 클라이언트에 시드 문서 파일을 송신한다. 구체적으로, 시드 문서 서버(110)는 복수의 시드 문서 파일을 저장할 수 있다. 예를 들어, 클라이언트의 요청에 의해 시드 문서 파일이 생성되면 시드 문서 서버(110)는 생성된 시드 문서 파일을 저장한다.
또한, 시드 문서 서버(110)는 시드 문서 파일 및 명령어 리스트를 기초로 갱신 시드 문서 파일이 생성되면, 갱신 시드 문서 파일도 저장할 수 있다. 예를 들어, 제1 시드 문서 파일(111)이 클라이언트의 요청에 의해 생성되면 제1 시드 문서 파일(111)은 시드 문서 서버(110)에 저장되고, 제1 시드 문서 파일(111)및 명령어 리스트를 기초로 갱신 시드 문서 파일인 제2 시드 문서 파일이 생성되면 제2 시드 문서 파일도 시드 문서 서버(110)에 저장된다. 이에 따라, 시드 문서 서버(110)는 적어도 하나의 시드 문서 파일을 저장할 수 있다.
도 3을 참조하면, 시드 문서 서버(110)는 저장한 시드 문서 파일을 적어도 하나의 클라이언트(900)에 송신할 수 있다. 구체적으로, 적어도 하나의 클라이언트(900)가 문서 파일을 공유하고자 하는 경우, 시드 문서 서버(110)는 공유 요청한 문서 파일에 대응하는 시드 문서 파일을 클라이언트에 송신할 수 있다. 시드 문서 서버(110)가 시드 문서 파일을 클라이언트에 송신하는 구체적인 과정에 대해서는 도 5 및 도 6을 참조하여 후술한다.
나아가, 시드 문서 서버(110)는 공동 편집 문서 공유 장치(100)에 연결되어 있는 클라이언트 이외에 추가로 공동 편집을 요청하여 공동 편집 문서 공유 장치(100)에 연결된 추가 클라이언트(910)에 갱신 시드 문서 파일을 송신 할 수 있다. 추가 클라이언트(910)에 갱신 시드 문서를 송신하는 구체적인 과정에 대해서는 도 7 및 도 8을 참조하여 후술한다.
이어서, 명령어 전달 서버(120)는 적어도 하나의 클라이언트(900)로부터 편집 명령어를 수신한다(S220). 이어서, 명령어 전달 서버(120)는 편집 명령어를 수신한 순서에 대응하여 편집 명령어를 적어도 하나의 클라이언트(900)각각으로 송신한다(S230).
도 3을 참조하면, 명령어 전달 서버(120)는 적어도 하나의 클라이언트(900)중 어느 하나로부터 편집 명령어를 수신하면 곧바로 적어도 하나의 클라이언트(900)에 포함된 모든 클라이언트 각각에 수신한 편집 명령어를 송신한다. 예를 들어, 제1 클라이언트(901)가 제1 편집 명령어(131)를 입력하면 명령어 전달 서버(120)는 제1 편집 명령어(131)를 수신하여 적어도 하나의 클라이언트(900)각각으로 송신한다. 나아가, 제1 클라이언트(901)가 제2 편집 명령어(132)및 제3 편집 명령어(133)를 순서대로 입력하면 명령어 전달 서버(120)는 편집 명령어를 수신한 순서에 대응하여 제2 편집 명령어(132)를 먼저 적어도 하나의 클라이언트(900)각각으로 송신하고 그 다음 제3 편집 명령어(133)를 적어도 하나의 클라이언트(900)각각에 송신한다. 도 3에서는 제1 클라이언트(901)로부터 편집 명령어가 전달되는 것으로 도시되었으나, 이에 제한되지 않고 편집 명령어는 적어도 하나의 클라이언트(900)각각으로부터 임의로 송신될 수 있다.
또한, 명령어 전달 서버(120)는 수신한 순서대로 편집 명령어를 명령어 저장 서버(130)에 전송한다. 예를 들어, 적어도 하나의 클라이언트(900)각각으로부터 제1 편집 명령어(131), 제2 편집 명령어(132)및 제3 편집 명령어(133)순서로 명령어 전달 서버(120)가 편집 명령어를 수신한 경우, 명령어 전달 서버(120)도 편집 명령어를 제1 편집 명령어(131), 제2 편집 명령어(132)및 제3 편집 명령어(133)순서로 명령어 저장 서버(130)에 전송한다.
이에 따라, 적어도 하나의 클라이언트(900)각각은 명령어 전달 서버(120)를 통해 편집 명령어를 실시간으로 수신하고, 적어도 하나의 클라이언트(900)각각이 갖고 있는 시드 문서 파일에 편집 명령어를 적용하여 실시간으로 갱신 공동 편집 문서를 생성할 수 있다. 적어도 하나의 클라이언트(900)각각은 공동 편집 문서를 편집하는 편집 명령어를 명령어 전달 서버를 통해 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 다른 클라이언트에게 전달되도록 상기 명령어 전달 서버로 전송하고, 상기 명령어 전달 서버로부터 전송된, 다른 클라이언트에서 행해진 상기 공동 편집 문서에 대한 편집을 나타내는 공동 편집 문서를 편집하는 편집 명령어를 수신하고, 상기 적어도 하나의 다른 클라이언트로부터의 수신된 공동 편집 문서를 편집하는 편집 명령어 및 상기 공동 편집 문서를 기초로 갱신 공동 편집 문서를 생성함으로써, 적어도 하나의 클라이언트(900)각각이 갱신 공동 편집 문서를 생성할 수 있다. 적어도 하나의 클라이언트(900)각각이 갱신 공동 편집 문서를 생성하는 구체적인 과정에 대해서는 도 4를 참조하여 후술한다.
이어서, 명령어 저장 서버(130)는 편집 명령어를 수신한 순서에 대응하여 편집 명령어를 저장한다(S240).
여기서, 명령어 전달 서버(120)가 명령어 저장 서버(130)로 편집 명령어를 송신하는 단계는 명령어 전달 서버(120)가 적어도 하나의 클라이언트(900)에 편집 명령어를 송신하는 단계와 동시에 이루어질 수도 있다.
또한, 명령어 저장 서버(130)는 편집 명령어를 수신한 순서대로 명령어 리스트를 생성하여 편집 명령어를 저장할 수 있다. 나아가, 명령어 저장 서버(130)는 미리 결정된 조건에 의해 저장된 편집 명령어 또는 명령어 리스트를 엔진-풀 서버(140)로 전송할 수 있다. 명령어 저장 서버(130)및 엔진-풀 서버(140)사이에서 편집 명령어 및 명령어 리스트의 구체적인 전송 관계에 대해서는 도 7 및 도 8을 참조하여 후술한다.
이에 따라, 공동 편집 문서 공유 장치(100)는 편집 명령어를 명령어 전달 서버(120)를 통해 곧바로 적어도 하나의 클라이언트(900)에 전송함으로써, 적은 처리 부하 및 적은 리소스 사용만으로 효율적으로 문서 파일에 대한 공동 편집과 갱신을 구현할 수 있다. 또한, 공동 편집 문서 공유 장치(100)는 수신한 편집명령어를 순서대로 명령어 저장 서버(130)에 저장함으로써, 문서 파일을 공동 편집하고자 하는 클라이언트가 추가적으로 연결되더라도 저장된 편집 명령어를 기초로 최신의 갱신 공동 편집 문서를 추가 클라이언트(910)에 제공할 수 있다.
도 4a 및 도 4b는 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 방법에 의해 공동 편집 문서를 공유하는 클라이언트의 엔진 및 클라이언트의 예시적인 출력 화면을 도시한 것이다.
도 4a를 참조하면, 적어도 하나의 클라이언트(900)각각은 엔진(940)을 포함한다. 엔진(940)은 시드 문서 파일 및 편집 명령어를 기초로 갱신 공동 편집 문서를 생성한다. 예를 들어, 적어도 하나의 클라이언트(900)각각이 제1 시드 문서 파일(111)을 갖고 공동 편집하는 경우, 적어도 하나의 클라이언트(900)각각에서 엔진(940)은 수신한 제1 편집 명령어(131)를 제1 시드 문서 파일(111)에 적용하여 갱신 공동 편집 문서를 생성한다. 즉, 적어도 하나의 클라이언트(900)각각은 편집 명령어를 수신할 때마다 엔진(940)을 통해 시드 문서파일을 기초로 갱신 공동 편집 문서를 생성하여 출력할 수 있다.
도 4b를 참조하면, 공동 편집 문서 출력 화면(400)이 적어도 하나의 클라이언트(900)각각에 출력된다. 구체적으로, 공동 편집 문서 출력 화면(400)은 시드 문서 파일을 출력하고, 시드 문서 파일에 편집 명령어가 적용되어 생성된 갱신 공동 편집 문서를 출력할 수도 있다. 예를 들어, 제1 공동 편집 문서 출력 화면(401)은 제1 시드 문서 파일(111)을 출력한다. 이후, 적어도 하나의 클라이언트(900)각각이 제1 편집 명령어(431)를 수신하면, 제2 공동 편집 문서 출력 화면(402)은 엔진(940)을 통해 제1 시드 문서 파일(111)및 제1 편집 명령어(431)를 기초로 생성된 갱신 공동 편집 문서를 출력한다.
이에 따라, 명령어 전달 서버(120)로부터 송신된 편집 명령어들은 적어도 하나의 클라이언트(900)각각에서 엔진(940)에 의해 시드 문서 파일에 적용되어, 적어도 하나의 클라이언트(900)각각은 갱신 공동 편집 문서를 생성하여 실시간으로 전송된 편집 명령어들을 적용한 갱신 공동 편집 문서를 출력할 수 있다.
본 개시의 실시예에 따른 명령어 전달 서버(120)는 편집 명령어를 시드 문서 파일에 적용시켜 갱신 공동 편집 문서를 생성하는 엔진을 포함하지 않고 편집 명령어를 수신하는대로 적어도 하나의 클라이언트(900)로 전송할 수 있다. 이에 따라, 공동 편집 문서 공유 장치(100)는 공동 편집 문서를 생성하기 위한 엔진을 위한 리소스 및 부하를 절감할 수 있고, 편집 명령어를 실시간으로 적어도 하나의 클라이언트(900)각각에 송신할 수 있다. 즉, 공동 편집 문서 공유 장치(100)를 통해 적어도 하나의 클라이언트(900)각각은 보다 신속하게 공동 편집 문서를 출력할 수 있다.
도 5는 본 개시의 다른 실시예에 따른 공동 편집 문서를 공유하는 장치의 구성 및 클라이언트 사이의 관계를 도시한 것이다. 도 5는 시드 문서 파일이 생성되고 클라이언트에 송신되는 과정을 도시한 것으로서, 도 3을 참조하여 이미 설명된 구성요소에 대한 중복 설명을 생략한다.
도 5를 참조하면, 적어도 하나의 클라이언트(900)중 어느 하나는 공유 서버(1000)에 문서 파일을 업로드한다. 공유 서버(1000)가 공유 신호를 수신하는 경우, 공유 서버(1000)는 업로드된 문서 파일을 바로가기 파일 서버(1200)로 전송할 수 있다. 또한, 공유 서버(1000)는 업로드된 문서 파일을 복사하여 시드 문서 파일을 생성하고, 시드 문서 파일을 시드 저장 서버(110)에 송신할 수 있다. 이에, 시드 문서 파일은 시드 저장 서버(110)에 저장되고, 바로 가기 파일 서버(1200)는 업로드된 문서 파일을 기초로 바로가기 파일을 생성한다. 여기서, 바로가기 파일은 시드 문서 파일이 저장된 위치에 대한 정보를 포함한다. 구체적으로, 바로가기 파일은 대응하는 문서 파일을 기초로 생성된 시드 문서 파일이 저장된 시드 저장 서버(110)의 주소, 시드 저장 서버(110)내에서 저장된 구체적인 위치에 대한 정보를 포함할 수 있다.
도 5를 참조하면, 적어도 하나의 클라이언트(900)각각은 바로가기 파일을 통해 시드 문서 파일을 시드 문서 서버(110)로부터 수신한다. 구체적으로, 적어도 하나의 클라이언트(900)가 공유 서버(1000)에 업로드된 문서 파일을 공유하는 경우, 적어도 하나의 클라이언트(900)는 업로드된 문서 파일을 직접 공유하지 않고, 바로가기 파일을 통해 시드 문서 파일을 수신한다. 이에 따라, 적 어도 하나의 클라이언트(900)각각은 수신한 시드 문서 파일을 기초로 공동 편집을 하고, 공동 편집을 위해 입력한 편집 명령어를 명령어 전달 서버(120)로 송신한다. 적어도 하나의 클라이언트(900)가 바로가기 파일을 통해 시드 문서 파일을 공유하는 구체적인 태양에 대해서는 도 6을 참조하여 후술한다.
본 개시의 실시예에 따른 공동 편집 문서 공유 장치(100)는 공동 편집을 위한 시드 문서 파일을 저장하고 적어도 하나의 클라이언트(900)로 송신함으로써, 공유 서버(1000)에 실제로 업로드된 문서 파일과 별개로 공동 편집을 위한 문서 파일을 저장할 수 있다. 즉, 문서 파일을 업로드한 클라이언트는 공동 편집을 위한 문서 파일과 개인 소유의 문서 파일을 분리하여 관리할 수 있게 된다.
도 6a 및 도 6b는 본 개시의 다른 실시예에 따른 공동 편집 문서를 공유하는 방법에 의해 공동 편집 문서를 공유하는 클라이언트의 예시적인 출력 화면을 도시한 것이다.
도 6a를 참조하면, 공동 편집 문서 출력 화면(610)은 임의의 클라이언트에서 출력되는 문서 파일을 표시한다. 또한, 공동 편집 문서 출력 화면(610)은 공유 버튼(611)을 표시한다. 이에, 임의의 클라이언트의 사용자는 현재 출력되고 있는 문서 파일에서 공유 버튼(611)을 클릭하여 공유 신호를 공유 서버(1000)로 송신할 수 있다.
도 6b를 참조하면, 문서 파일 관리 화면(620)은 임의의 클라이언트에서 출력되는 문서 파일을 관리하는 어플리케이션의 예시적인 화면이다. 예를 들어, 문서 파일 관리 화면(620)은 문서 파일을 저장하고 문서 파일의 공유 여부를 관리할 수 있는 파일 매니저(file manager)의 예시적인 화면일 수 있다. 여기서, 문서 파일 관리 화면(620)은 공유 버튼(621)을 표시하고, 문서 파일(631)및 바로가기 파일(632)을 표시한다. 또한, 문서 파일 관리 화면(620)은 문서 파일(631)또는 바로가기 파일(632)에 중첩되어 드롭-다운 메뉴(dropdownmenu)(622)를 더 표시할 수 있다. 이에, 임의의 클라이언트의 사용자는 현재 출력되고 있는 문서 파일에서 공유 버튼(621)또는 드롭-다운 메뉴(622)에서의 '공유'를 선택하여 공유 신호를 공유 서버(1000)로 송신할 수 있다.
이에 따라, 공유 신호를 수신한 공유 서버(1000)는 바로가기 파일 서버(1200)가 바로가기 파일을 생성하도록 신호를 전송하고, 시드 문서 파일을 생성하여 시드 저장 서버(110)로 송신한다.
도 7은 본 개시의 또 다른 실시예에 따른 공동 편집 문서를 공유하는 장치의 구성 및 클라이언트 사이의 관계를 도시한 것이다. 도 7은 추가 클라이언트에 갱신 시드 문서 파일 및 추가 편집 명령어를 송신하는 과정을 도시한 것으로서, 도 3 및 도 5를 참조하여 이미 설명된 구성요소에 대한 중복 설명을 생략한다.
도 7을 참조하면, 문서 파일을 공동 편집하도록 시드 문서 서버(110)에 추가 클라이언트(910)가 연결된 경우, 시드 문서 서버(110)는 추가 클라이언트(910)에 갱신 시드 문서 파일을 송신한다. 여기서, 추가 클라이언트(910)는 적어도 하나의 클라이언트(900)각각이 제1 시드 문서 파일(111)및 적어도 하나의 편집 명령어를 기초로 갱신 공동 편집 문서를 생성한 이후 시드 문서 서버(110)에 문서 파일의 공동 편집을 요청한 클라이언트일 수 있다. 여기서 추가 클라이언트(910)는 클라이언트 그룹(900)에 포함되지 않은 클라이언트 일 수 있다. 추가 클라이언트(910)는 이하에서 서술하는 공동 문서 편집 장치(100)에 연결 후, 갱신 공동 편집 문서를 생성한 후에는 클라이언트 그룹(900)에 포함될 수 있다.
먼저, 시드 문서 서버(110)는 미리 결정된 조건에 따라 시드 문서 파일을 엔진-풀 서버(140)로 송신한다. 예를 들어, 적어도 하나의 클라이언트(900)로부터 편집 명령어를 일정 시간 동안 수신하지 않는 경우, 편집 명령어가 명령어 저장 서버(130)에 200개 이상 저장된 경우 또는 적어도 하나의 클라이언트(900)중 어느 하나가 공동 편집 문서 공유 장치(100)에 접속을 종료한 경우, 시드 문서 서버(110)는 제1 시드 문서 파일(111)을 엔진-풀 서버(140)로 송신한다.
또한, 명령어 저장 서버(130)는 미리 결정된 조건에 따라 생성된 명령어 리스트(730)를 엔진-풀 서버(140)로 송신한다. 여기서, 명령어 리스트(730)는 적어도 하나의 편집 명령어를 포함한다. 예를 들어, 명령어 리스트(730)는 제1 편집 명령어(131)및 제2 편집 명령어(132)를 포함하여 생성될 수 있다.
도 7을 참조하면, 명령어 저장 서버(130)는 미리 결정된 조건에 따라 적어도 하나의 편집 명령어를 기초로 생성된 명령어 리스트(730)를 엔진-풀 서버(140)로 송신한다. 예를 들어, 적어도 하나의 클라이언트(900)로부터 편집 명령어를 일정 시간 동안 수신하지 않는 경우, 편집 명령어가 명령어 저장 서버(130)에 200개 이상 저장된 경우 또는 적어도 하나의 클라이언트(900)중 어느 하나가 공동 편집 문서 공유 장치(100)에 접속을 종료한 경우, 명령어 저장 서버(130)는 명령어 리스트(730)를 엔진-풀 서버(140)로 송신할 수 있다.
이어서, 엔진-풀 서버(140)는 수신한 시드 문서 파일 및 명령어 리스트(730)를 기초로 갱신 시드 문서 파일을 생성한다. 예를 들어, 엔진-풀 서버(140)는 제1 시드 문서 파일(111)을 수신하고 명령어 리스트(730)를 수신하여, 제1 시드 문서 파일(111)에 제1 편집 명령어(131)및 제2 편집 명령어(132)를 적용하여 갱신 시드 문서 파일인 제2 시드 문서 파일(112)을 생성한다.
이어서, 엔진-풀 서버(140)는 생성된 갱신 시드 문서 파일을 시드 문서 서버(110)로 송신하고, 시드 문서 서버(110)는 제1 시드 문서 파일(111)과 함께 갱신 시드 문서 파일인 제2 시드 문서 파일(112)을 저장한다. 이에 따라, 시드 문서 서버(110)는 추가 클라이언트(910)가 연결된 경우, 갱신 시드 문서 파일을 추가 클라이언트(910)에 송신할 수 있다.
도 7을 참조하면, 명령어 저장 서버(130)는 명령어 리스트(730)가 엔진-풀 서버(140)에 송신된 이후 저장된 추가 편집 명령어(133)를 명령어 전달 서버(120)에 전송한다. 명령어 리스트(730)가 엔진-풀 서버(140)로 송신된 이후, 명령어 저장 서버(130)가 수신한 편집 명령어는 추가 편집 명령어가 된다. 예를 들어, 명령어 리스트(730)가 엔진-풀 서버(140)로 송신된 이후 추가적으로 수신된 제3 편집 명령어(133)는 추가 편집 명령어가 된다.
도 7을 참조하면, 명령어 전달 서버(120)는 추가 클라이언트(910)에 추가 편집 명령어(133)를 송신한다. 구체적으로, 시드 문서 서버(110)에 추가 클라이언트(910)가 연결된 경우, 추가 편집 명령어인 제3 편집 명령어(133)는 명령어 전달 서버(120)로 송신되고, 명령어 전달 서버(120)를 통해 추가 편집 명령어인 제3 편집 명령어(133)가 추가 클라이언트(910)로 송신된다.
즉, 추가 클라이언트(910)는 시드 문서 서버(110)로부터 갱신 시드 문서 파일을 수신하고, 명령어 전달 서버(120)로부터 추가 편집 명령어만을 수신하여 갱신 공동 편집 문서를 생성할 수 있다. 갱신 공동 편집 문서를 생성하는 엔진에 대해서는 도 8을 참조하여 후술한다.
즉, 추가 클라이언트(910)는 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹(900)에서 편집 중인 공동 편집 문서에 대한 공동 편집 요청을 시드 문서 서버(110)로 전송하고, 상기 시드 문서 서버(110)로부터, 엔진-풀 서버(140)가 상기 클라이언트 그룹(900)에 포함된 클라이언트로부터 갱신 시드 문서 파일을 생성하기 전에 수신된 공동 편집 문서를 편집 하는 적어도 하나의 편집 명령어 및 시드 문서에 기초하여 생성된 갱신 시드 문서 파일을 수신하고, 명령어 저장 서버(130)로부터, 상기 클라이언트 그룹에 포함된 클라이언트로부터 상기 갱신 시드 문서 파일을 생성한 후 수신된 공동 편집 문서를 편집 하는 적어도 하나의 추가 편집 명령어를 수신하여, 상기 시드 문서 서버(110)로부터 수신된 갱신 시드 문서 파일 및 상기 명령어 저장 서버(130)로부터 수신된 추가 편집 명령어를 기초로 갱신 공동 편집 문서를 생성할 수 있다.
이와 같은 추가 클라이언트(910)가 이미 갱신 공동 편집 문서로 변환된 제1 시드 문서 파일(111)을 수신하는 경우, 제1 시드 문서 파일(111)및 적어도 하나의 편집 명령어를 모두 수신하는 것은 문서를 공동 편집하는데 비효율적일 수 있다.
이에 따라, 공동 편집 문서 공유 장치(100)는 미리 결정된 조건에 따라 편집 명령어를 명령어 리스트(730)로 저장하고, 엔진-풀 서버(140)를 이용하여 갱신 시드 문서 파일을 생성함으로써, 추가 클라이언트(910)는 갱신 시드 문서 파일 및 추가 편집 명령어만을 수신하여 보다 효율적으로 문서 파일을 공동 편집할 수 있다.
나아가, 명령어 전달 서버(120)는 실시간으로 개별 편집 명령어 또는 추가 편집 명령어를 직접 적어도 하나의 클라이언트(900)및 추가 클라이언트(910)에 전달하고, 엔진-풀 서버(140)는 시드 문서 파일과 명령어 리스트(730)만을 기초로 갱신 시드 문서 파일을 생성하여, 공동 편집 문서 공유 장치(100)가 명령어의 전달과 시드 문서 파일의 갱신을 서로 다른 기능을 갖는 이원화된 서버에서 실행하도록 함으로써, 서버 각각의 처리 부하를 저감시킬 수 있고 신속하게 추가 클라이언트(910)에 공동 편집을 위한 파일을 제공할 수 있다. 이에 따라, 공동 편집 문서 공유 장치(100)를 통해 많은 클라이언트들이 공유하는 문서 파일의 편집을 보다 효율적이고 신속하게 실행할 수 있다.
도 8a 및 도 8b는 본 개시의 또 다른 실시예에 따른 공동 편집 문서를 공유하는 방법에 의해 공동 편집 문서를 공유하는 클라이언트의 엔진 및 클라이언트의 예시적인 출력 화면을 도시한 것이다.
도 8a를 참조하면, 추가 클라이언트(910)도 엔진(940)을 포함한다. 이와 같은 엔진(940)은 도 4a에 도시된 바와 같이 적어도 하나의 클라이언트(900)각각에 포함된 엔진(940)과 동일한 기능을 한다. 구체적으로, 엔진(940)은 수신한 갱신 시드 문서 파일(112)및 추가 편집 명령어(133)를 기초로 갱신 공동 편집 문서를 생성한다.
도 8b를 참조하면, 공동 편집 문서 출력 화면(800)은 추가 클라이언트(910)에 출력되는 화면으로서, 갱신 공동 편집 문서를 출력한다. 구체적으로, 공동 편집 문서 출력 화면(800)은 갱신 시드 문서 파일(112)에 추가 편집 명령어(133)가 적용된 표시(833)를 포함한 갱신 공동 편집 문서를 표시한다.
예를 들어, 추가 편집 명령어(133)가 'HIJK' 줄을 삭제하는 것이면, 공동 편집 문서 출력 화면(800)은 삭제가 적용된 표시를 포함한 갱신 공동 편집 문서를 표시한다. 도 8b에서는 공동 편집 문서 출력 화면(800)이 삭제가 적용된 것으로 표시하는 것으로 도시되었으나, 실시예에 따라 삭제가 적용된 부분은 표시되지 않을 수 있으며, 추가 편집 명령어(133)의 특성에 따라 공동 편집 문서 출력 화면(800)에 표시되거나 표시되지 않을 수 있다.
본 개시의 실시예에 따른 공동 편집 문서 공유 장치(100)는 엔진-풀 서버(140)를 통해서 갱신 시드 문서 파일을 생성함으로써, 명령어 전달 서버(120)를 통해서는 추가 편집 명령어만을 추가 클라이언트(910)에 송신하도록 하여 명령어 전달 서버(120)가 공동 편집 문서의 갱신을 위한 엔진을 포함하지 않을 수 있게 된다. 이에 따라, 명령어 전달 서버(120)는 클라이언트가 추가됨에 따라 공동 편집 문서의 갱신을 위한 엔진을 추가하지 않아도 되며, 엔진의 증가에 따른 처리 부하도 증가하지 않게 된다. 즉, 공동 편집 문서 공유 장치(100)는 공동 편집 문서의 갱신을 위한 엔진을 감소시키거나 최소화하여 클라이언트의 수가 증가하더라도 효율적이고 신속한 문서의 공동 편집을 가능하게 한다.
이하에서는 본 개시의 일 실시예에 따른 공동 편집 문서를 편집하기 위한 편집 명령어들의 순차성을 유지하기 위한 방법과 관련한 내용을 서술한다. 이하에서 기재되는 실시예들은 전술한 실시예들과 독립적일 수 있으며, 이하에서 기재되는 실시예들에 포함되는 구성요소들은 전술한 실시예와는 상이한 동작을 수행할 수 있다.
이하에서는 본 개시의 실시예를 설명하기 위하여 추가적으로 사용되는 용어에 대해 정의한다.
본 명세서에서 수신 큐(Queue)란, 명령어 전달 서버가 클라이언트 그룹(900)에 포함된 클라이언트로부터 수신한 편집 명령어를 명령어 저장 서버(130)로 송신하기 위해 상기 편집 명령어를 일시적으로 저장하는 대기열이다. 여기서 수신 큐(150)는 명령어 전달 서버(120) 또는 명령어 저장 서버(130)의 일부일 수도 있고, 별개의 독립 서버일 수 있다. 또한, 상기 수신 큐는 캐쉬와 같은 일시적, 또는 비일시적 저장 매체일 수도 있다. 그리고 명령어 저장 서버는 수신 큐에 저장된 편집 명령어를 수신하여 획득할 수 있고, 상기 편집 명령어는 수신 큐에서 명령어 저장 서버로 전송될 수 있다. 따라서, 상기 수신 큐에 저장된 편집 명령어 중 명령어 저장 서버가 획득한 편집 명령어는 더 이상 존재 하지 않을 수 있다.
또한, 본 개시의 일 실시예에 따른 수신 큐(150)는 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹(900)에 포함된 각각의 클라이언트에 대응되도록 적어도 두 개로 구성될 수 있다. 또한 본 개시의 다른 일 실시예에 따라 수신 큐는 공동 편집 문서에 대응되도록 구성될 수도 있다. 그리고, 수신 큐(150)는 클라이언트, 또는 공동 편집 문서와 일대일 대응되도록 적당한 수로 구성될 수 있다. 예를 들어, 수신 큐는 두 개의 클라이언트와 대응되도록 2개로 구성될 수 있다. 또한, 수신 큐는 하나의 공동 편집 문서와 대응되도록 1개로 구성될 수도 있다.
도 9는 본 개시의 일 실시예에 따른 수신 큐(150)가 명령어 전달 서버(120)로부터 수신된 편집 명령어를 저장하고, 명령어 저장 서버(130)가 수신 큐에서 편집 명령어를 획득하는 관계를 도시한 것이다.
본 개시의 일 실시예에 따른 수신 큐(150)는 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트 각각에 대응되는 수로 구성될 수 있다. 예를 들어, 수신 큐는 클라이언트와 동일한 개수로 구성될 수 있다.
또한, 본 개시의 일 실시예에 따른 명령어 전달 서버(120)는 상기 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하기 위한 편집 명령어를 수신할 수 있다. 그리고 수신 큐(150)는 명령어 전달 서버(120)가 상기 편집 명령어를 클라이언트로부터 수신한 순서에 기초하여 저장할 수 있다.
예를 들어, 도 9에 도시된 바와 같이, 클라이언트 그룹(900)에 포함된 제 1 클라이언트(901)에 대응되는 제 1 수신 큐(151)는 제 1, 2, 3 및 4 편집 명령어(1, 2, 3, 4)를 저장할 수 있다. 여기서 제 1, 2, 3 및 4 편집 명령어들의 제 1, 2, 3 및 4는 명령어 전달 서버(120)가 편집 명령어들을 수신한 순서를 나타낼 수 있다. 또한, 상기 편집 명령어들(1, 2, 3, 4)은 명령어 전달 서버(120)가 제 1 클라이언트(901)로부터 수신한 편집 명령어일 수 있다. 그리고, 상기 편집 명령어들(1, 2, 3, 4)은 상기 명령어 전달 서버(120)가 제 1 클라이언트(901)로부터 편집 명령어를 수신한 순서에 기초하여 수신 큐에 저장될 수 있다.
그리고, 명령어 전달 서버(120)가 제 1 클라이언트(901)로부터 제 5 편집 명령어(5)를 추가적으로 수신한 경우, 제 1 클라이언트와 대응되는 제 1 수신 큐(151)는 제 5 편집 명령어를 상기 명령어 전달 서버(120)로부터 전달 받아 저장할 수 있다. 이러한 경우, 상기 제 5 편집 명령어(5)는 명령어 전달 서버(120)가 직전에 제 1 클라이언트(901)로부터 수신한 제 4 편집 명령어(4) 다음에 저장될 수 있다.
또한, 명령어 저장 서버(130)는 제 1 수신 큐(151)로부터 상기 제 1 수신 큐 상에 존재하는 편집 명령어들 중 가장 먼저 저장된 제 1 편집 명령어(1)를 획득할 수 있다. 그리고 명령어 저장 서버(130)가 추가적으로 상기 편집 명령어들을 획득하는 경우, 상기 제 1 수신 큐(151)에 저장된 순서에 기초하여, 먼저 저장된 편집 명령어를 우선적으로 획득할 수 있다. 명령어 저장 서버가 제 1 편집 명령어를 획득한 후, 상기 제 1 수신 큐(151)는 제 1 편집 명령어(1)를 제외한 제 2, 3, 4 및 5 편집 명령어(2, 3, 4, 5)만을 저장할 수 있다. 전술한 수신 큐(150)에 대한 명령어 전달 서버(120) 및 명령어 저장 서버(130)의 동작은 예시일 뿐, 본 개시는 이에 제한되지 않는다.
상술한 바와 같이, 본 개시에 따른 수신 큐(150)는 명령어 전달 서버(120)가 클라이언트로부터 수신한 순서에 기초하여 편집 명령어들을 저장할 수 있다. 또한, 명령어 저장 서버(130)는 수신 큐(150)에 저장된 편집 명령어들을 상기 순서에 기초하여 획득함으로써, 클라이언트가 입력한 편집 명령어들간의 순차성을 유지할 수 있다. 또한, 수신 큐(150)는 각각의 클라이언트에 대응될 수 있다. 따라서, 수신 큐(150)를 이용하여 각각의 클라이언트의 편집 명령어는 순서가 보장될 수 있다. 그러므로, 본 개시의 일 실시예에 따른 공동편집에서 클라이언트의 편집은 입력된 순서를 유지하여 다른 클라이언트에 공유될 수 있다.
또한, 본 개시의 일 실시예에 따른 적어도 두 개의 수신 큐(150) 중 제 1 수신 큐(151)는 편집 명령어를 사전 결정된 개수 이상 저장할 수 있다. 이러한 경우, 명령어 저장 서버(130)는 상기 제 1 수신 큐(151)에 존재하는 편집 명령어들을 우선적으로 획득할 수 있다. 보다 구체적으로, 명령어 저장 서버(130)는 제 1 수신 큐를 제외한 다른 수신 큐들에 존재하는 편집 명령어들의 획득보다 우선적으로 제 1 수신 큐(151)에 존재하는 사전 결정된 개수 이상의 편집 명령어들을 획득할 수 있다.
예를 들어, 사전 결정된 편집 명령어의 개수가 4개이고, 도 9에 도시된 바와 같이 제 1 수신 큐(151)에 존재하는 편집 명령어가 제 2, 3, 4 및 5 편집 명령어(2, 3, 4, 5)를 포함하여 4개 이상일 수 있다. 이러한 경우, 명령어 저장 서버(130)는 수신 큐(150) 중 제 1 수신 큐를 제외한 다른 수신 큐들(미도시)에 존재하는 편집 명령어들의 획득을 일시적으로 정지할 수 있다. 따라서, 상기 명령어 저장 서버(130)는 제 1 수신 큐(151)에 존재하는 상기 제 2, 3, 4 및 5 편집 명령어(2, 3, 4, 5)를 연속적으로 획득 할 수 있다. 이러한 연속 동작을 통해 명령어 전달 서버는 보다 신속하게 편집 명령어를 획득할 수 있다. 전술한 명령어 저장 서버의 동작은 예시일뿐, 본 개시는 이에 제한되지 않는다.
도 10은 본 개시의 제 1 양상에 따른 일 실시예에서 공동 편집 문서를 공유하는 장치들과 서버들간의 관계를 도시한 것이다.
클라이언트 그룹(900)은 공유하는 공동 편집 문서를 공동으로 편집할 수 있다. 그리고 클라이언트 그룹(900)은 적어도 두 개 이상의 클라이언트를 포함할 수 있다. 예를 들어, 도 10에 도시된 바와 같이, 클라이언트 그룹(900)은 제 1 클라이언트(901), 제 2 클라이언트(902) 및 제 3 클라이언트(903)를 포함할 수 있다. 전술한 클라이언트 그룹의 구성은 예시일 뿐, 본 개시는 이에 제한되지 않는다.
또한, 상기 클라이언트 그룹(900)에 포함된 클라이언트들은 상기 공동 편집 문서에 대한 편집 명령어를 생성하여 명령어 전달 서버(120)로 전송할 수 있다(1011, 1012, 1013).
본 개시에 따른 수신 큐(150)는 명령어 전달 서버(120)가 클라이언트로부터 편집 명령어들을 수신한 순서에 기초하여 편집 명령어들을 저장할 수 있다(1020). 여기서 수신 큐(150)는 클라이언트 그룹(900)에 포함된 각각의 클라이언트에 대응되도록 구성될 수 있고, 또한, 본 개시의 다른 일 실시예에 따라 각각의 공동 편집 문서에 대응되도록 구성될 수도 있다. 전술한 복수의 수신 큐(150)에 대한 상세한 설명은 후술한다.
또한, 본 개시의 일 실시예에 따른 명령어 전달 서버(120)는 수신 큐(150)로부터 편집 명령어의 저장 완료에 관련한 응답을 수신할 수 있다. 그리고 명령어 전달 서버(120)는 응답을 수신하는 경우, 수신 큐(150)에 편집 명령어가 저장되었음을 통지하기 위한 알림을 명령어 저장 서버(130)에 송신할 수 있다(1030). 여기서 알림은 MQTT(Message Queuing Telemetry Transport) protocol, Socket 통신 및 직접 통신 등의 통신 방법을 통해 이뤄질 수 있다. 상기 통신 방법의 기재는 예시일뿐, 본 개시는 이에 제한되지 않는다. 따라서, 명령어 저장 서버(130)는 정확한 저장 완료 통지에 기초하여 수신 큐(150)에 저장된 편집 명령어들을 획득할 수 있는 일 효과를 얻을 수 있다.
본 개시의 일 실시예에 따른 명령어 저장 서버(130)는 상기 알림을 수신하는 경우, 수신 큐(150)에 저장된 편집 명령어를 상기 수신 큐에 저장된 순서에 기초하여 획득할 수 있다(1040). 보다 구체적으로, 명령어 저장 서버(130)는 명령어 전달 서버(120)로부터 수신 큐(150)에 편집 명령어가 저장되었음을 통지하는 알림을 수신할 수 있다. 이러한 경우, 명령어 저장 서버(130)는 상기 수신 큐에서 편집 명령어를 획득할 수 있다.
명령어 전달 서버(120)는 클라이언트 그룹(900)에 포함된 클라이언트로부터 편집 명령어를 수신할 수 있다. 그리고 수신 큐(150)는 상기 명령어 전달 서버(120)가 편집 명령어를 클라이언트로부터 수신한 순서에 기초하여 상기 편집 명령어들을 저장할 수 있다. 또한, 명령어 전달 서버(120)는 각각의 편집 명령어에 대하여 편집 명령어가 수신 큐(150)에 저장되었음을 통지하는 알림을 명령어 저장 서버(130)에 송신할 수 있다. 따라서, 명령어 저장 서버(130)는 상기 알림을 수신하는 경우, 수신 큐에서 알림의 횟수에 대응되는 수의 상기 편집 명령어를 획득할 수 있다. 보다 구체적으로, 명령어 전달 서버(120)에서 3 개의 편집 명령어가 순차적으로 수신되는 경우, 명령어 전달 서버(120)는 각각의 편집 명령어를 수신된 순서대로 수신 큐(150)에 전달할 수 있다. 그리고, 명령어 전달 서버(120)는 명령어 저장 서버(130)에 3 번의 알림을 전송할 수 있다. 그 후 명령어 저장 서버(130)는 각 알림을 수신한 때마다, 수신 큐(150)로부터 편집 명령어를 가져올 수 있으며, 총 3회의 알림을 수신하였으므로, 3개의 편집 명령어를 획득할 수 있다. 전술한 편집 명령어의 개수와 알림의 횟수는 예시일 뿐이며, 본 발명은 이에 제한되지 않는다.
상술한 바와 같이, 본 개시에 따른 명령어 저장 서버(130)는 수신 큐(150)를 통해 편집 명령어들을 획득함으로써, 통신 장애가 발생한 경우에도 클라이언트가 입력한 편집 명령어들간의 순차성을 유지할 수 있다. 보다 구체적으로, 수신 큐 없이 클라이언트와 서버 및 서버와 서버 간의 통신에서 장애가 발생하는 경우, 명령어 저장 서버가 수신한 편집 명령어들 간의 순서가 클라이언트가 입력한 편집 명령어들 간의 순서와 다를 수 있는 문제점이 있을 수 있다. 하지만 수신 큐를 사용함으로써, 편집 명령어들이 클라이언트에게 입력된 순서를 유지하며, 명령어 저장 서버(130)에 저장될 수 있다.
도 11은 본 개시의 제 2 양상에 따른 일 실시예에서 공동 편집 문서를 공유하는 장치들과 서버들간의 관계를 도시한 것이다.
도 11에 도시된 클라이언트 그룹(900)에 포함된 클라이언트로부터의 편집 명령어 수신 단계(1010)에서 명령어 저장 서버(130)의 수신 큐(150) 상에 저장된 편집 명령어 획득 단계(1040)에 해당하는 단계들은 전술한 도 10에 대한 상세한 설명에서 서술하였으므로 생략한다.
이하에서는 본 개시의 실시예를 설명하기 위하여 추가적으로 사용되는 용어에 대해 정의한다.
본 명세서에서 송신 큐(160)란, 명령어 저장 서버(130)가 수신 큐(150)로부터 획득한 편집 명령어를 명령어 전달 서버(120) 및 클라이언트 그룹(900)으로 송신하기 위해 일시적으로 저장하는 편집 명령어들의 대기열이다. 여기서 송신 큐(160)는 전술한 수신 큐와 같이, 명령어 전달 서버 또는 명령어 저장 서버의 일부일 수도 있고, 별개의 독립 서버일 수 있다. 또한, 송신 큐는 캐쉬와 같은 일시적, 또는 비일시적 저장 매체일 수도 있다. 그리고 명령어 전달 서버는 송신 큐에 저장된 편집 명령어를 수신하여 획득할 수 있고, 상기 편집 명령어는 송신 큐에서 명령어 전달 서버(120)로 전송될 수 있다. 따라서, 상기 송신 큐에 저장된 편집 명령어 중 명령어 전달 서버가 획득한 편집 명령어는 더 이상 존재 하지 않을 수 있다. 또한, 본 개시의 일 실시예에 따른 송신 큐(160)는 각각의 명령어 전달 서버(120), 또는 각각의 클라이언트에 대응되도록 적어도 하나 이상으로 구성될 수 있다.
본 개시에 일 실시예에 따른 송신 큐(160)는 편집 명령어를 명령어 저장 서버(130)로부터 전달 받아 명령어 전달 서버에 수신된 순서에 기초하여 저장할 수 있다(1050). 여기서 명령어 전달 서버(120)에 수신된 순서는 수신 큐(150)가 편집 명령어를 명령어 전달 서버로부터 수신한 순서와 동일할 수 있다. 또한, 상기 순서는 명령어 저장 서버(130)가 상기 수신 큐에서 상기 편집 명령어를 획득한 순서와 동일할 수 있다.
또한, 본 개시의 일 실시예에 따른 명령어 저장 서버(130)는 송신 큐(160)로부터 편집 명령어의 저장 완료에 관련한 응답을 수신할 수 있다. 그리고 명령어 저장 서버(130)는 응답을 수신하는 경우, 송신 큐(160)에 편집 명령어가 저장되었음을 통지하기 위한 알림을 명령어 전달 서버(120)에 송신할 수 있다(1060). 여기서 알림은 MQTT(Message Queuing Telemetry Transport) protocol, Socket 통신 및 직접 통신 등의 통신 방법을 통해 이뤄질 수 있다. 또한, 여기서 알림을 수신하는 명령어 전달 서버(120)는 상기 송신 큐에 대응되는 서버일 수 있다. 그리고, 상기 명령어 전달 서버는 송신 큐에 대응되도록 하나 이상일 수 있다. 전술한 송신 큐에 대응되기 위한 복수의 명령어 전달 서버의 상세한 설명은 후술한다. 따라서, 명령어 전달 서버(120)가 정확한 저장 완료 통지에 기초하여 송신 큐(160)에 저장된 편집 명령어들을 획득할 수 있는 일 효과를 지닐 수 있다.
그리고, 본 개시의 일 실시예에 따른 명령어 전달 서버(120)는 상기 알림을 수신하는 경우, 송신 큐(160)에 저장된 편집 명령어를 상기 송신 큐에 저장된 순서에 기초하여 획득할 수 있다(1070). 보다 구체적으로, 명령어 전달 서버(120)는 명령어 저장 서버(130)로부터 송신 큐(160)에 편집 명령어가 저장되었음을 통지하는 알림을 수신할 수 있다. 이러한 경우, 명령어 전달 서버(120)는 상기 송신 큐(160)에서 편집 명령어를 획득할 수 있다.
또한, 본 개시의 일 실시예에 따른 명령어 전달 서버(120)는 클라이언트 그룹(900)의 각각의 클라이언트에게 편집 명령어를 송신할 수 있다(1080). 여기서 각각의 클라이언트는 상기 편집 명령어가 편집하는 공동 편집 문서를 편집하기 위한 클라이언트 그룹(900)에 포함된 클라이언트일 수 있다.
명령어 전달 서버(120)가 클라이언트 그룹(900)에 포함된 클라이언트로부터 편집 명령어를 수신할 수 있다. 그리고 수신 큐(150)는 상기 명령어 전달 서버(120)가 편집 명령어를 클라이언트로부터 수신한 순서에 기초하여 상기 편집 명령어들을 저장할 수 있다. 또한, 명령어 전달 서버(120)는 각각의 편집 명령어에 대하여 편집 명령어가 수신 큐(150)에 저장되었음을 통지하는 알림을 명령어 저장 서버(130)에 송신할 수 있다. 따라서, 명령어 저장 서버(130)는 상기 알림을 수신하는 경우, 수신 큐에서 알림의 횟수에 대응되는 수의 상기 편집 명령어를 획득할 수 있다. 그리고 송신 큐(160)는 명령어 전달 서버(120)가 편집 명령어를 수신한 순서, 즉, 상기 명령어 저장 서버(130)가 수신 큐에서 편집 명령어를 획득한 순서에 기초하여 편집 명령어들을 저장할 수 있다. 또한, 명령어 저장 서버(130)는 각각의 편집 명령어에 대하여 편집 명령어가 송신 큐에 저장되었음을 통지하는 알림을 상기 송신 큐에 대응되는 명령어 전달 서버(120)에 송신할 수 있다. 명령어 전달 서버(120)는 상기 알림을 수신하는 경우, 송신 큐에서 알림의 횟수에 대응되는 수의 편집 명령어를 획득할 수 있다. 그런 다음, 명령어 전달 서버는 자신과 연결된 클라이언트 각각에게 편집 명령어를 송신할 수 있다. 보다 구체적으로, 명령어 전달 서버(120)에서 3 개의 편집 명령어가 순차적으로 수신되는 경우, 명령어 전달 서버(120)는 각각의 편집 명령어를 수신된 순서대로 수신 큐(150)에 전달할 수 있다. 그리고, 명령어 전달 서버(120)는 명령어 저장 서버(130)에 3 번의 알림을 전송할 수 있다. 그 후 명령어 저장 서버(130)는 각 알림을 수신한 때마다, 수신 큐(150)로부터 편집 명령어를 가져올 수 있으며, 총 3회의 알림을 수신하였으므로, 3개의 편집 명령어를 획득할 수 있다. 명령어 저장 서버(130)에서 송신 큐(160)를 통한 명령어 전달 서버(120)로의 편집 명령어의 전달 또한 동일한 방식으로 수행될 수 있다. 전술한 편집 명령어의 개수와 알림의 횟수는 예시일 뿐이며, 본 발명은 이에 제한되지 않는다.
명령어 전달 서버(120)는 송신 큐(160)로부터 획득한 편집 명령어를 공동 편집 문서를 편집하는 클라이언트들에게 각각 송신할 수 있다. 그러므로 클라이언트가 전송한 편집 명령어들이 순차성을 유지하며 명령어 전달 서버 및 명령어 저장 서버를 경유하여 공동 편집 문서를 편집하는 클라이언트 각각에게 전송될 수 있다. 이에 따라, 공동 문서 편집에 있어서 통신 장애가 발생한 경우에도 클라이언트가 입력한 편집 명령어들간의 순차성을 유지할 수 있다. 보다 구체적으로, 수신 큐 및 송신 큐를 사용하지 않고, 클라이언트와 서버 및 서버와 서버 간의 통신에서 장애가 발생하는 경우, 최초 클라이언트가 입력한 편집 명령어들 간의 순서와 클라이언트 그룹(900)에 포함된 다른 클라이언트들에게 전달된 편집 명령어들 간의 순서가 상이할 수 있다. 하지만 수신 큐 및 송신 큐를 사용함으로써, 편집 명령어들이 최초 클라이언트가 입력한 순서를 유지하며, 명령어 전달 서버(120) 및 명령어 저장 서버(130)를 경유할 수 있다, 그러므로, 본 개시의 일 실시예에 따른 공동편집에서 클라이언트의 편집은 입력된 순서를 유지하여 다른 클라이언트에 공유될 수 있다.
도 12는 본 개시의 제 3 양상에 따른 일 실시예에서 공동 편집 문서를 공유하는 장치들과 서버들간의 관계를 도시한 것이다.
본 개시에 일 실시예에 따른 수신 큐(150)는 클라이언트 그룹(900)의 각각의 클라이언트에 대응되도록 적어도 두 개로 구성될 수 있다. 보다 구체적으로, 수신 큐는 명령어 전달 서버(120)와 통신하고, 공동 편집 문서를 편집하기 위한 클라이언트 별로 일대일 대응되도록 구성될 수 있다.
예를 들어, 도 12에 도시된 바와 같이, 명령어 전달 서버(120)와 연결된 클라이언트가 클라이언트 그룹(900)의 제 1, 2, 3 및 4 클라이언트(901, 902, 903, 904)를 포함하여 4개 존재할 수 있다. 이러한 경우, 수신 큐(150)는 제 1, 2, 3 및 4 수신 큐에 해당하는 4개의 수신 큐로 구성될 수 있다. 그리고, 상기 제 1, 2, 3 및 4 수신 큐는 각각 제 1, 2, 3 및 4 클라이언트(901, 902, 903, 904)에 대응될 수 있다. 따라서, 상기 제 1, 2, 3 및 4 수신 큐들은 각각의 클라이언트에서 생성되고 명령어 전달 서버(120)에서 수신한 편집 명령어들을 각기 저장할 수 있다. 즉, 제 1 수신 큐(151)는 제 1 클라이언트(901)가 송신한 편집 명령어를 저장할 수 있다. 그리고, 제 2 수신 큐(152)는 제 2 클라이언트(902)가 송신한 편집 명령어를 저장할 수 있다. 전술한 수신 큐 및 클라이언트의 개수 한정에 대한 기재는 예시일뿐, 본 개시는 이에 제한되지 않는다. 또한, 본 개시의 일 실시예에 따른 수신 큐(150)는 공동 편집 문서에 대응되도록 구성될 수도 있다.
또한, 본 개시에 일 실시예에 따른 송신 큐(160)는 각각의 명령어 전달 서버(120)에 대응되도록 적어도 하나 이상으로 구성될 수 있다. 보다 구체적으로, 송신 큐는 공동 편집 문서를 편집하기 위한 클라이언트들과 연결된 명령어 전달 서버(120) 별로 일대일 대응되도록 구성될 수 있다.
예를 들어, 도 12에 도시된 바와 같이, 제 1 명령어 전달 서버(121)는 클라이언트 그룹(900)에 포함된 제 1 및 2 클라이언트(901, 902)와 통신하고, 제 2 명령어 전달 서버(122)는 제 3 및 4 클라이언트(903, 904)와 통신할 수 있다. 이러한 경우, 송신 큐(160)는 제 1 및 2 송신 큐(161, 162)에 해당하는 2개의 송신 큐로 구성될 수 있다. 그리고, 상기 제 1 및 2 송신 큐는 각각 제 1 및 2 명령어 전달 서버(121, 122)에 대응될 수 있다. 따라서, 제 1 송신 큐(161)에 저장된 편집 명령어가 제 1 명령어 전달 서버(121)로부터 획득되어 제 1 송신 큐(161)에서 제거되어도, 제 2 명령어 전달 서버(122)가 동일한 편집 명령어를 제 2 송신 큐(162)로부터 획득할 수 있다. 또한, 상기 제 1 및 2 명령어 전달 서버는 상기 제 1 및 2 송신 큐 상에 저장된 편집 명령어를 저장한 순서에 기초하여 획득할 수 있다. 또한, 제 1 및 2 명령어 전달 서버는 획득한 편집 명령어를 각각 통신하는 클라이언트에 각각 송신할 수 있다(1081, 1082, 1083, 1084). 전술한 송신 큐 및 명령어 전달 서버의 개수 한정에 대한 기재는 예시일뿐, 본 개시는 이에 제한되지 않는다.
상술한 바와 같이, 본 개시에 따른 공동 편집 문서를 공유하는 방법은 클라이언트가 입력한 편집 명령어들간의 순차성을 수신 큐 및 송신 큐를 통해 유지할 수 있다. 이에 따라, 공동 문서 편집에 있어서 통신 장애가 발생한 경우에도 클라이언트가 입력한 편집 명령어들간의 순차성을 유지할 수 있다. 보다 구체적으로, 수신 큐 및 송신 큐를 사용하지 않고, 클라이언트와 서버 및 서버와 서버 간의 통신에서 장애가 발생하는 경우, 최초 클라이언트가 입력한 편집 명령어들 간의 순서와 클라이언트 그룹(900)에 포함된 다른 클라이언트들이 수신한 편집 명령어들 간의 순서가 상이할 수 있다. 하지만 수신 큐 및 송신 큐를 사용함으로써, 편집 명령어들이 최초 클라이언트가 입력한 순서를 유지하며, 명령어 전달 서버(120) 및 명령어 저장 서버(130)를 경유할 수 있다, 그러므로, 본 개시의 일 실시예에 따른 공동편집에서 클라이언트의 편집은 입력된 순서를 유지하여 다른 클라이언트에 공유될 수 있다.
도 13은 본 개시의 일 실시예에 따른 공동 편집 문서를 공유하는 방법의 순서도이다.
본 개시의 일 실시예에 따른 명령어 전달 서버(120)는 클라이언트 그룹(900)에 포함된 클라이언트로부터 편집 명령어를 수신할 수 있다(1101). 여기서 클라이언트 그룹(900)은 공동 편집 문서와 연관된 적어도 두 개의 클라이언트를 포함하는 그룹을 의미할 수 있으나, 이에 제한되는 것은 아니다. 또한, 여기서 편집 명령어는 클라이언트에서 공유하는 상기 공동 편집 문서를 편집 하는 명령어로서, 공동 편집 문서에 입력되는 다양한 명령어를 포함한다.
수신 큐(150)는 명령어 전달 서버(120)가 클라이언트로부터 편집 명령어를 수신하는 경우, 상기 편집 명령어를 전달 받아 저장할 수 있다(1102). 여기서 수신 큐는 클라이언트 그룹에 포함된 각각의 클라이언트에 일대일 대응되도록 구성될 수 있다. 또한, 수신 큐는 편집 명령어를 명령어 전달 서버로부터 수신한 순서에 기초하여 순차적으로 저장할 수 있다.
또한, 본 개시의 일 실시예에 따른 수신 큐(150)는 상기 편집 명령어가 수신되었음을 나타내는 응답을 명령어 전달 서버(120)에게 전송할 수 있다. 여기서 편집 명령어와 응답은 각각 일대일 대응될 수 있다. 따라서, 상기 명령어 전달 서버(120)는 수신 큐 상에 각각의 편집 명령어가 저장됨을 각각의 응답에 기초하여 알 수 있다.
명령어 전달 서버(120)는 상기 응답을 수신한 후, 명령어 저장 서버(130)에게 수신 큐(150)에 편집 명령어가 저장되었음을 통지하기 위한 알림을 전송할 수 있다(1103). 여기서 수신 큐로부터 수신한 알림과 명령어 저장 서버로 통지하기 위한 알림은 일대일 대응될 수 있다.
상기 명령어 저장 서버(130)는 명령어 전달 서버로부터 알림을 수신한 경우, 상기 수신 큐(150)에서 편집 명령어를 수신하여 획득할 수 있다(1104). 따라서, 본 개시의 일 실시예에 따른 명령어 저장 서버는 클라이언트, 명령어 전달 서버 및 수신 큐를 경유한 편집 명령어를 실시간으로 상기 알림에 기초하여 획득할 수 있다. 또한, 클라이언트와 서버 및 서버와 서버 간의 통신 장애가 발생하더라도 편집 명령어는 수신 큐(150)에 순차적으로 저장될 수 있다. 그리고 명령어 저장 서버(130)는 수신한 알림의 횟수에 대응하는 개수의 편집 명령어를 수신 큐에서 획득함으로써, 통신 장애 상황에서도 편집 명령어들 간의 순차성을 유지할 수 있다. 즉, 수신 큐(150)에서 편집 명령어를 순차적으로 저장하고, 명령어 저장 서버(130)는 수신한 알림의 횟수에 대응하는 개수의 편집 명령어를 수신 큐에서 획득하여, 명령어 전달 서버(120)와 명령어 저장 서버(130) 사이의 통신 장애로 인한 데이터 전송의 순서가 뒤바뀐 경우(예를 들어, 제 1 편집 명령어 저장에 대한 알림이 제 2 편집 명령어 저장에 대한 알림보다 늦게 수신된 경우라도, 총 알림의 수는 2회가 되며, 명령어 저장 서버는 2개의 편집 명령어를 수신 큐로부터 획득함)라도 명령어 저장 서버(130)는 올바른 순서의 편집 명령어를 획득할 수 있다.
또한, 본 개시의 일 실시예에 따른 송신 큐(160)는 명령어 저장 서버(130)가 수신 큐로부터 편집 명령어를 획득하는 경우, 상기 편집 명령어를 전달 받아 저장할 수 있다(1105). 여기서 송신 큐는 각각의 명령어 전달 서버(120)에 일대일 대응되도록 구성될 수 있다. 또한, 송신 큐는 편집 명령어를 명령어 저장 서버로부터 수신한 순서에 기초하여 순차적으로 저장할 수 있다.
또한, 본 개시의 일 실시예에 따른 송신 큐(160)는 상기 편집 명령어가 수신되었음을 나타내는 응답을 명령어 저장 서버(130)에게 전송할 수 있다. 여기서 편집 명령어와 알림은 각각 일대일 대응될 수 있다. 따라서, 상기 명령어 저장 서버(130)는 송신 큐 상에 각각의 편집 명령어가 저장됨을 각각의 알림에 기초하여 알 수 있다.
명령어 저장 서버(130)는 상기 응답을 수신한 후, 명령어 전달 서버(120)에게 송신 큐(160)에 편집 명령어가 저장되었음을 통지하기 위한 알림을 전송할 수 있다(1106). 여기서 송신 큐로부터 수신한 알림과 명령어 전달 서버로 통지하기 위한 알림은 일대일 대응될 수 있다.
상기 명령어 전달 서버(130)는 명령어 저장 서버로부터 알림을 수신한 경우, 상기 송신 큐(160)에서 편집 명령어를 수신하여 획득할 수 있다(1107). 여기서 명령어 전달 서버(130)는 자신과 대응되는 송신 큐에서만 편집 명령어를 획득할 수 있다. 따라서, 각각의 명령어 전달 서버(120)가 동일한 편집 명령어를 획득할 수 있다.
그리고, 명령어 전달 서버(120)는 자신과 연결된 각각의 클라이언트에게 편집 명령어를 송신할 수 있다(1108). 따라서, 본 개시의 일 실시예에 따른 클라이언트들은 편집 명령어를 입력한 클라이언트와 동일한 편집 명령어를 획득할 수 있다. 또한, 클라이언트와 서버 및 서버와 서버 간의 통신 장애가 발생하더라도 편집 명령어는 송신 큐(160)에 순차적으로 저장될 수 있다. 그리고 명령어 전달 서버(120)는 수신한 명령어 저장 서버(130)의 알림의 횟수에 대응하는 개수의 편집 명령어를 송신 큐에서 획득함으로써, 통신 장애 상황에서도 편집 명령어들 간의 순차성을 유지할 수 있다. 이에 관해서는 명령어 저장 서버(130)가 수신 큐를 통해 편집 명령어를 획득하는 과정과 동일할 수 있다.
이하에서는 본 개시의 다른 일 실시예에 따른 클라이언트에서 공동 편집 문서를 공유하기 위한 방법이 개시된다.
클라이언트에서 사용자 입력에 기초하여 공동 편집 문서를 편집하기 위한 편집 명령어를 생성할 수 있다. 상기 클라이언트는 클라이언트 그룹(900)에 포함된 클라이언트일 수 있다. 또한, 여기서 클라이언트 그룹(900)은 공동 편집 문서와 연관된 하나 이상의 클라이언트를 포함할 수 있으나, 본 개시는 이에 제한되지 않는다.
또한, 클라이언트는 생성한 상기 편집 명령어를 명령어 전달 서버(120)로 전송할 수 있다. 상기 전송은 유/무선 네트워크 등을 포함하는 통신 방법의 하나로 이루어 질 수 있으나, 본 개시는 이에 제한되지 않는다.
그런 다음, 클라이언트는 상기 명령어 전달 서버로 전송된 편집 명령어가 명령어 저장 서버(130)를 경유하여 상기 클라이언트에 재 수신되는 경우, 클라이언트가 편집된 공동 편집 문서를 저장할 수 있다. 보다 구체적으로, 클라이언트는 명령어 전달 서버(120)에 송신한 편집 명령어를 재 수신할 수 있다. 그리고, 여기서 편집 명령어는 상기 명령어 전달 서버(120) 및 명령어 저장 서버(130)를 경유한 편집 명령어일 수 있다. 따라서, 상기 편집 명령어는 클라이언트 그룹(900)에 포함된 각각의 클라이언트에게 동일하게 수신되는 편집 명령어일 수 있다.
이에 따라, 클라이언트는 자신이 생성한 상기 편집 명령어가 반영된 공동 편집 문서를 생성할 수 있다. 그리고 클라이언트는 상기 편집 명령어를 재 수신함에 기초하여, 편집된 공동 편집 문서를 자동적으로 저장할 수 있다.
본 개시의 기술 분야에서 통상의 지식을 가진 자는 정보 및 신호들이 임의의 다양한 상이한 기술들 및 기법들을 이용하여 표현될 수 있다는 것을 이해할 것이다. 예를 들어, 위의 설명에서 참조될 수 있는 데이터, 지시들, 명령들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 입자들, 광학장들 또는 입자들, 또는 이들의 임의의 결합에 의해 표현될 수 있다.
본 개시의 기술 분야에서 통상의 지식을 가진 자는 여기에 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 프로세서들, 수단들, 회로들 및 알고리즘 단계들이 전자 하드웨어, (편의를 위해, 여기에서 "소프트웨어"로 지칭되는) 다양한 형태들의 프로그램 또는 설계 코드 또는 이들 모두의 결합에 의해 구현될 수 있다는 것을 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 호환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 이들의 기능과 관련하여 위에서 일반적으로 설명되었다. 이러한 기능이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정한 애플리케이션 및 전체 시스템에 대하여 부과되는 설계 제약들에 따라 좌우된다. 본 발명의 기술 분야에서 통상의 지식을 가진 자는 각각의 특정한 애플리케이션에 대하여 다양한 방식들로 설명된 기능을 구현할 수 있으나, 이러한 구현 결정들은 본 개시의 범위를 벗어나는 것으로 해석되어서는 안 될 것이다.
여기서 제시된 다양한 실시예들은 방법, 장치, 또는 표준 프로그래밍 및/또는 엔지니어링 기술을 사용한 제조 물품(article)으로 구현될 수 있다. 용어 "제조 물품"은 임의의 컴퓨터-판독가능 장치로부터 액세스 가능한 컴퓨터 프로그램, 캐리어, 또는 매체(media)를 포함한다. 예를 들어, 컴퓨터-판독가능 매체는 자기 저장 장치(예를 들면, 하드 디스크, 플로피 디스크, 자기 스트립, 등), 광학 디스크(예를 들면, CD, DVD, 등), 스마트 카드, 및 플래쉬 메모리 장치(예를 들면, EEPROM, 카드, 스틱, 키 드라이브, 등)를 포함하지만, 이들로 제한되는 것은 아니다. 또한, 여기서 제시되는 다양한 저장 매체는 정보를 저장하기 위한 하나 이상의 장치 및/또는 다른 기계-판독가능한 매체를 포함한다. 용어 "기계-판독가능 매체"는 명령(들) 및/또는 데이터를 저장, 보유, 및/또는 전달할 수 있는 무선 채널 및 다양한 다른 매체를 포함하지만, 이들로 제한되는 것은 아니다.
제시된 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조는 예시적인 접근들의 일례임을 이해하도록 한다. 설계 우선순위들에 기반하여, 본 개시의 범위 내에서 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조가 재배열될 수 있다는 것을 이해하도록 한다. 첨부된 방법 청구항들은 샘플 순서로 다양한 단계들의 엘리먼트들을 제공하지만 제시된 특정한 순서 또는 계층 구조에 한정되는 것을 의미하지는 않는다.
제시된 실시예들에 대한 설명은 임의의 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시를 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 개시의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 개시의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 개시는 여기에 제시된 실시예들로 한정되는 것이 아니라, 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.

Claims (12)

  1. 공동 편집 문서를 공유하는 방법에 있어서,
    명령어 전달 서버에서 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 상기 공동 편집 문서를 편집하기 위한 적어도 두 개의 편집 명령어를 수신하는 단계;
    수신 큐(queue)에서 상기 적어도 두 개의 편집 명령어를 명령어 전달 서버에 수신된 순서에 기초하여 저장하는 단계; 및
    명령어 저장 서버에서 상기 수신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 수신 큐에 저장된 순서에 기초하여 획득하는 단계;
    를 포함하는,
    공동 편집 문서를 공유하는 방법.
  2. 제 1 항에 있어서,
    상기 수신 큐는,
    상기 클라이언트 그룹의 각각의 클라이언트에 일대일 대응되는 수로 구성되는,
    공동 편집 문서를 공유하는 방법.
  3. 제 1 항에 있어서,
    상기 적어도 두 개의 편집 명령어가 상기 수신 큐에 저장된 후, 상기 명령어 전달 서버에서 상기 명령어 저장 서버에게 상기 적어도 두 개의 편집 명령어가 상기 수신 큐에 저장되었음을 통지하기 위한 알림을 전송하는 단계;
    더 포함하고,
    상기 명령어 저장 서버에서 상기 수신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 수신 큐에 저장된 순서에 기초하여 획득하는 단계는,
    상기 명령어 저장 서버에서 상기 명령어 전달 서버로부터 상기 알림을 수신하는 경우에 수행되는,
    공동 편집 문서를 공유하는 방법.
  4. 제 3 항에 있어서,
    상기 명령어 전달 서버에서 상기 명령어 저장 서버에게 상기 적어도 두 개의 편집 명령어가 상기 수신 큐에 저장되었음을 통지하기 위한 알림을 전송하는 단계는,
    상기 명령어 전달 서버가 상기 수신 큐로부터 저장 완료 응답을 수신하는 경우에 수행되는,
    공동 편집 문서를 공유하는 방법.
  5. 제 2 항에 있어서,
    명령어 저장 서버에서 상기 수신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 수신 큐에 저장된 순서에 기초하여 획득하는 단계는,
    상기 적어도 두 개의 수신 큐 중 제 1 수신 큐에 저장된 상기 적어도 두 개의 편집 명령어의 수가 사전 결정된 개수 이상인 경우, 상기 명령어 저장 서버에서 상기 제 1 수신 큐에 저장된 상기 편집 명령어를 우선적으로 획득하는,
    공동 편집 문서를 공유하는 방법.
  6. 제 1 항에 있어서,
    송신 큐에서 상기 적어도 두 개의 편집 명령어를 상기 명령어 저장 서버로부터 전달 받아 명령어 전달 서버에 수신된 순서에 기초하여 저장하는 단계;
    상기 명령어 전달 서버에서 상기 송신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 송신 큐에 저장된 순서에 기초하여 획득하는 단계; 및
    상기 명령어 전달 서버에서 상기 클라이언트 그룹의 각각의 클라이언트에게 상기 편집 명령어를 송신하는 단계;
    를 더 포함하는,
    공동 편집 문서를 공유하는 방법.
  7. 제 6 항에 있어서,
    상기 적어도 두 개의 편집 명령어가 상기 송신 큐에 저장된 후, 상기 명령어 저장 서버에서 상기 명령어 전달 서버에게 상기 적어도 두 개의 편집 명령어가 상기 송신 큐에 저장되었음을 통지하기 위한 알림을 전송하는 단계;
    를 더 포함하고,
    상기 명령어 전달 서버에서 상기 송신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 송신 큐에 저장된 순서에 기초하여 획득하는 단계는,
    상기 명령어 전달 서버에서 상기 명령어 저장 서버로부터 상기 알림을 수신하는 경우에 수행되는,
    공동 편집 문서를 공유하는 방법.
  8. 제 7 항에 있어서,
    상기 명령어 저장 서버에서 상기 명령어 전달 서버에게 상기 적어도 두 개의 편집 명령어가 상기 송신 큐에 저장되었음을 통지하기 위한 알림을 전송하는 단계는,
    상기 명령어 저장 서버가 상기 송신 큐로부터 저장 완료 응답을 수신하는 경우에 수행되는,
    공동 편집 문서를 공유하는 방법.
  9. 제 6 항에 있어서,
    상기 송신 큐는,
    상기 각각의 명령어 전달 서버에 대응되도록 적어도 하나 이상으로 구성되는,
    공동 편집 문서를 공유하는 방법.
  10. 하나 이상의 프로세서에 의해 실행되는 복수의 명령들을 포함하는, 컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은,
    명령어 전달 서버에서 적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 공동 편집 문서를 편집하기 위한 적어도 두 개의 편집 명령어를 수신하도록 하기 위한 명령;
    수신 큐에서 상기 적어도 두 개의 편집 명령어를 명령어 전달 서버에 수신된 순서에 기초하여 저장하도록 하기 위한 명령; 및
    명령어 저장 서버에서 상기 수신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 수신 큐에 저장된 순서에 기초하여 획득하도록 하기 위한 명령;
    을 포함하는,
    컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램.
  11. 공동 편집 문서를 공유하는 시스템으로서,
    명령어 전달 서버, 수신 큐 및 명령어 저장 서버를 포함하고,
    상기 명령어 전달 서버는,
    적어도 두 개의 클라이언트를 포함하는 클라이언트 그룹에 포함된 적어도 하나의 클라이언트로부터 상기 공동 편집 문서를 편집하기 위한 편집 명령어를 수신하고,
    상기 수신 큐는,
    상기 적어도 두 개의 편집 명령어를 명령어 전달 서버에 수신된 순서에 기초하여 저장하고, 그리고
    상기 명령어 저장 서버는,
    상기 수신 큐에 저장된 상기 적어도 두 개의 편집 명령어를 상기 수신 큐에 저장된 순서에 기초하여 획득하는,
    공동 편집 문서를 공유하는 시스템.
  12. 클라이언트에서 공동 편집 문서를 공유하기 위한 방법으로서,
    사용자 입력에 기초하여 상기 클라이언트에서 상기 공동 편집 문서를 편집하기 위한 편집 명령어를 생성하는 단계;
    상기 클라이언트가 상기 생성된 편집 명령어를 명령어 전달 서버로 전송하는 단계; 및
    상기 클라이언트에서 상기 명령어 전달 서버로 전송된 편집 명령어가 명령어 저장 서버를 경유하여 상기 클라이언트에 재 수신되는 경우, 상기 클라이언트가 편집된 공동 편집 문서를 저장하는 단계;
    를 포함하는,
    클라이언트에서 공동 편집 문서를 공유하기 위한 방법.

KR1020160066188A 2016-05-30 2016-05-30 공동 편집 문서를 공유하는 방법 및 장치 KR101822401B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160066188A KR101822401B1 (ko) 2016-05-30 2016-05-30 공동 편집 문서를 공유하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160066188A KR101822401B1 (ko) 2016-05-30 2016-05-30 공동 편집 문서를 공유하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170135011A true KR20170135011A (ko) 2017-12-08
KR101822401B1 KR101822401B1 (ko) 2018-01-26

Family

ID=60919531

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160066188A KR101822401B1 (ko) 2016-05-30 2016-05-30 공동 편집 문서를 공유하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101822401B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102017293B1 (ko) * 2018-05-29 2019-09-02 주식회사 한글과컴퓨터 문서 공동 편집 환경에서 효율적 편집 명령의 전송 처리를 수행하는 클라이언트 단말 장치 및 그 동작 방법
KR20190122993A (ko) * 2018-04-23 2019-10-31 주식회사 한글과컴퓨터 브라우저에 탑재된 웹 에디터를 통해 웹 기반 문서의 저장을 위한 포맷 변환을 지원하는 클라이언트 단말 장치 및 그 동작 방법
CN113421048A (zh) * 2020-04-30 2021-09-21 阿里巴巴集团控股有限公司 产品协同设计方法、装置及电子设备
EP4287042A1 (en) * 2022-05-31 2023-12-06 Samsung Sds Co., Ltd., Method and system for providing edit service of document

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4764300B2 (ja) * 2006-09-26 2011-08-31 日本電信電話株式会社 ストリームデータ管理システム、ストリームデータ管理方法およびそのプログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190122993A (ko) * 2018-04-23 2019-10-31 주식회사 한글과컴퓨터 브라우저에 탑재된 웹 에디터를 통해 웹 기반 문서의 저장을 위한 포맷 변환을 지원하는 클라이언트 단말 장치 및 그 동작 방법
KR102017293B1 (ko) * 2018-05-29 2019-09-02 주식회사 한글과컴퓨터 문서 공동 편집 환경에서 효율적 편집 명령의 전송 처리를 수행하는 클라이언트 단말 장치 및 그 동작 방법
CN113421048A (zh) * 2020-04-30 2021-09-21 阿里巴巴集团控股有限公司 产品协同设计方法、装置及电子设备
EP4287042A1 (en) * 2022-05-31 2023-12-06 Samsung Sds Co., Ltd., Method and system for providing edit service of document

Also Published As

Publication number Publication date
KR101822401B1 (ko) 2018-01-26

Similar Documents

Publication Publication Date Title
JP6621543B2 (ja) ハイブリッドアプリケーションの自動更新
US10567484B2 (en) Identifying content items for inclusion in a shared collection
JP6797290B2 (ja) メッセージングサービス向けのコンテンツ管理機能
US9747582B2 (en) Implementing a consistent ordering of operations in collaborative editing of shared content items
US7818679B2 (en) Method, system, and apparatus for enabling near real time collaboration on an electronic document through a plurality of computer systems
US11799810B2 (en) Managing message attachments
KR101822401B1 (ko) 공동 편집 문서를 공유하는 방법 및 장치
CN101272313B (zh) 进行文件级的虚拟化的中间装置、文件服务器系统和中继方法
CN108370345A (zh) 用于存储消息数据的系统和方法
KR20040077566A (ko) 피어 컴퓨팅 장치 사이에서 공유된 데이터를 동기화하는방법 및 시스템
US20100005138A1 (en) Electronic file sharing
US20150227605A1 (en) Information processing terminal, synchronization control method, and computer-readable recording medium
JP2000132443A (ja) コンピュータ、情報共有システム、及びレプリカ同一性保持方法
KR20100070359A (ko) 리치 클라이언트와 브라우저 클라이언트 간의 스프레드시트 협업
US20170102852A1 (en) Sharing a file with a single contact
CN112069265A (zh) 配置数据的同步方法、业务数据系统、计算机系统和介质
CN104717239A (zh) 共享文件的协同编辑方法、服务器及用户端
US20150326620A1 (en) Media presentation in a virtual shared space
US11553013B2 (en) Chat room-based file sharing device and method
AU2019216773A1 (en) Live-rendered and forkable graphic edit trails
CN112835524A (zh) 存储资源配置方法、存储资源控制器及调度系统
US20190079949A1 (en) Synchronizing virtualized file systems
US10860184B2 (en) Sharing groups for capturing digital media
CN116016420A (zh) 一种任务清单分享方法、装置、设备及介质
KR20190143228A (ko) 추적 식별자를 이용한 객체 관리 방법, 장치, 컴퓨터 프로그램 및 그 기록 매체

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant