KR101584828B1 - 웹-기반 다중사용자 협업 - Google Patents

웹-기반 다중사용자 협업 Download PDF

Info

Publication number
KR101584828B1
KR101584828B1 KR1020107022864A KR20107022864A KR101584828B1 KR 101584828 B1 KR101584828 B1 KR 101584828B1 KR 1020107022864 A KR1020107022864 A KR 1020107022864A KR 20107022864 A KR20107022864 A KR 20107022864A KR 101584828 B1 KR101584828 B1 KR 101584828B1
Authority
KR
South Korea
Prior art keywords
cell
user
interest
document
users
Prior art date
Application number
KR1020107022864A
Other languages
English (en)
Other versions
KR20110000655A (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 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20110000655A publication Critical patent/KR20110000655A/ko
Application granted granted Critical
Publication of KR101584828B1 publication Critical patent/KR101584828B1/ko

Links

Images

Classifications

    • 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
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/197Version control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/954Navigation, e.g. using categorised browsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • 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
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/107Computer-aided management of electronic mailing [e-mailing]

Abstract

웹-기반 다중사용자 협업 도구들 및 기법들이 기술되어 있다. 이러한 도구들은 사용자들이 각자의 브라우저들을 사용하여 문서들에 관해 원격적으로 협업할 수 있게 해주는 방법들을 제공할 수 있다. 이러한 방법들은 주어진 문서의 일부분들의 표현들을 브라우저들로 전송하고 문서들의 일부분들을 특정의 사용자들과 연관시킬 수 있다. 브라우저들은 사용자들에 의해 제공되는 명령들의 표현들을 수신할 수 있고, 또 브라우저에서 명령들을 실행할지 여부를 결정할 수 있다. 이 방법들은 또한 문서의 일부분들에 대한 수정들을 브라우저들로부터 수신하는 단계, 및 문서의 이러한 부분들을 비교적 최근에 변경된 내용을 저장하도록 구성되어 있는 저장 영역들에 저장하는 단계도 포함할 수 있다.

Description

웹-기반 다중사용자 협업{WEB-BASED MULTIUSER COLLABORATION}
다양한 이유들로, 서로 지리적으로 떨어져 있는 서로 다른 사용자들이 문서들에 관해 협업하고자 할 수 있다. 이러한 유형의 원격 협업을 용이하게 해주는 이전의 기법들에서는 통상적으로 이러한 서로 다른 사용자들이 원격 워크스테이션 상에 풍부한 기능을 가진 적당한 클라이언트를 설치해야만 한다.
웹-기반 다중사용자 협업 도구들 및 기법들이 기술되어 있다. 이러한 도구들은 사용자들이 각자의 브라우저들을 사용하여 문서들에 관해 원격적으로 협업할 수 있게 해주는 방법들을 제공할 수 있다. 이러한 방법들은 주어진 문서의 일부분들의 표현들을 브라우저들로 전송하고 문서들의 일부분들을 특정의 사용자들과 연관시킬 수 있다. 브라우저들은 사용자들에 의해 제공되는 명령들의 표현들을 수신할 수 있고, 또 브라우저에서 명령들을 실행할지 여부를 결정할 수 있다. 이 방법들은 또한 문서의 일부분들에 대한 수정들을 브라우저들로부터 수신하는 단계, 및 문서의 이러한 부분들을 비교적 최근에 변경된 내용을 저장하도록 구성되어 있는 저장 영역들에 저장하는 단계도 포함할 수 있다.
상기한 발명 대상이 컴퓨터-제어 장치, 컴퓨터 프로세스, 컴퓨팅 시스템, 또는 컴퓨터-판독가능 매체 등의 제조 물품으로서도 구현될 수 있다. 이들 및 다양한 다른 특징들이 이하의 상세한 설명을 읽어보고 또 관련 도면들을 살펴보면 명백하게 될 것이다.
이 요약은 이하에서 상세한 설명에 더 기술되는 일련의 개념들을 간략화된 형태로 소개하기 위해 제공된 것이다. 이 요약은 청구된 발명 대상의 주요 특징들 또는 필수적인 특징들을 확인하기 위한 것이 아니며, 또한 이 요약은 청구된 발명 대상의 범위를 제한하는 데 사용되기 위한 것도 아니다. 게다가, 청구된 발명 대상은 본 개시 내용의 임의의 부분에 기술된 단점들의 일부 또는 그 전부를 해결하는 구현들로 제한되지 않는다.
도 1은 웹-기반 다중사용자 협업들을 제공하는 시스템들 또는 운영 환경들을 나타내는 블록 흐름도.
도 2는 도 1에 도시된 것과 같은 협업 프로세스들을 개시하는 것과 관련된 구성요소들 및 데이터 흐름들을 나타낸 블록 흐름도.
도 3은 특정의 문서에 대한 협업적 작업들(예를 들어, 편집)을 개시하는 프로세스들을 나타낸 흐름도.
도 4는 주어진 브라우저에서 협업을 개시하는 구성요소들 및 흐름들을 나타낸 블록 흐름도.
도 5는 협업하는 사용자들에 의해 문서들에 행해진 수정들을 처리하는 구성요소들 및 흐름들을 나타낸 블록 흐름도.
도 6은 브라우저들에 의해 보고되는 수정들을 처리하는 프로세스들을 나타낸 흐름도.
도 7은 복수의 사용자들에 의해 협업적으로 편집되는 내용에 대한 수정들을 처리하기 위해 브라우저가 제공할 수 있는 구성요소들 및 데이터 흐름들을 나타낸 블록 흐름도.
도 8은 브라우저들로부터 수정들을 수신하여 처리하는 서버측 구성요소들 및 흐름들을 나타낸 블록 흐름도.
도 9는 협업적 클라이언트 서비스들을 제공하는 서버측 구성요소들을 나타낸 블록도.
이하의 상세한 설명은 웹-기반 다중사용자 협업 기술에 관한 것이다. 본 명세서에 기술된 발명 대상이 일반적으로 컴퓨터 시스템 상에서 운영 체제 및 애플리케이션 프로그램을 실행하는 것과 관련하여 실행되는 프로그램 모듈들과 관련하여 제공되어 있지만, 당업자라면 다른 구현들이 다른 유형의 프로그램 모듈들과 관련하여 수행될 수 있다는 것을 잘 알 것이다. 일반적으로, 프로그램 모듈들은 특정의 태스크들을 수행하거나 특정의 추상 데이터 유형들을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조, 및 기타 유형의 구조체를 포함한다. 게다가, 당업자라면 본 명세서에 기술된 발명 대상이 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능 가전 제품, 미니컴퓨터, 메인프레임 컴퓨터, 기타 등등을 비롯한 기타 컴퓨터 시스템 구성에서 실시될 수 있다는 것을 잘 알 것이다.
이하의 상세한 설명에서, 본 명세서의 일부를 형성하고 예로서 구체적인 실시예들 또는 일례들이 도시되어 있는 첨부 도면들이 참조되고 있다. 이제부터, 유사한 참조 번호들이 몇개의 도면들에 걸쳐 유사한 구성요소들을 나타내고 있는 도면들을 참조하여, 멀티-클라이언트 협업이 구조화된 데이터 요소들에 액세스하여 업데이트하기 위한 도구들 및 기법들의 여러 측면들에 대해 기술할 것이다.
도 1은 웹-기반 다중사용자 협업을 제공하는 시스템들 또는 동작 환경들(그 전체를 100으로 나타냄)을 나타낸 것이다. 이 시스템들(100)은 하나 이상의 서버 시스템들(102)을 포함할 수 있으며, 이 설명의 구현들은 이하에서 더 상세히 설명하는 바와 같이 임의의 수의 프런트-엔드 및/또는 백-엔드 서버들을 포함한다. 서버들은 특정의 구현들에 적절한 것으로 선택된, 특정의 유형 또는 아키텍처를 가질 수 있는 하나 이상의 프로세서들(104)을 포함할 수 있다. 프로세서들(104)은 프로세서들(104)과 호환하도록 선택되는 하나 이상의 버스 시스템들(106)에 결합될 수 있다.
서버들(102)은 또한 버스 시스템들(106)에 결합되어 있는 컴퓨터-판독가능 저장 매체(108)의 하나 이상의 인스턴스들도 포함할 수 있다. 이 버스 시스템들에 의해 프로세서들(104)이 컴퓨터-판독가능 저장 매체(108)로/로부터 코드 및/또는 데이터를 판독할 수 있다. 매체(108)는 반도체, 자성 물질, 광학, 기타(이들로 제한되지 않음)를 비롯한 임의의 적당한 기술을 사용하여 구현된 저장 요소들을 나타낼 수 있다. 매체(108)는 메모리 구성요소들(RAM, ROM, 플래쉬, 또는 기타 유형들이든 상관없음)을 포함할 수 있고 또한 하드 디스크 드라이브들도 나타낼 수 있다.
저장 매체(108)는, 프로세서(104)에 로드되어 실행될 때, 서버(102)로 하여금 웹-기반 다중사용자 협업을 용이하게 해주는 다양한 기법들을 수행하게 하는 하나 이상의 명령어 모듈들을 포함할 수 있다. 보다 구체적으로는, 저장 매체(108)는 복수의 클라이언트 시스템들에 협업적 클라이언트 서비스들(110)을 제공하는 명령어 모듈들을 포함할 수 있다. 도 1은 이러한 클라이언트 시스템들 중 2개의 일례(112A 및 112N으로 표시됨)[모두 합하여 클라이언트 시스템들(112)이라고 함]를 제공한다. 그렇지만, 이 설명의 구현들은 다수의 클라이언트 시스템들을 포함할 수 있다.
저장 매체(108)는 문서 저장소(114)의 하나 이상의 인스턴스들을 포함할 수 있다. 문서 저장소에 대한 추가적인 상세가 이하에서 제공되지만, 요약하면, 문서 저장소는 복수의 클라언트 시스템들이 협업적으로 편집하거나 생성할 수 있는 문서들을 갖고 있거나 포함하고 있다. 비록 도 1이 문서 저장소(114) 및 협업적 클라이언트 서비스들(110)에 대한 소프트웨어가 동일한 저장 매체(108) 상에 존재하는 시나리오를 나타내지만, 이 일례는 단지 설명의 편의상 제공된 것이며 가능한 구현들을 제한하기 위한 것이 아니다. 특히 유의할 점은, 어떤 시나리오들에서, 문서 저장소 및 협업적 클라이언트 서비스들이 별도의 매체 상에 및/또는 별도의 시스템 또는 물리적 박스 상에 존재할 수 있다는 것이다.
협업적 클라이언트 서비스들(110)을 더 상세히 살펴보면, 이 서비스들은 서버들(102)과 클라이언트 시스템들(112) 사이의 협업 흐름을 용이하게 해줄 수 있다. 도 1은 협업 흐름의 2개의 일례를 제공하며, 협업 흐름(116A)은 서버(102)와 클라이언트 시스템(112A) 사이의 데이터 및 프로세스 흐름을 나타내고 협업 흐름(116)은 서버(102)와 클라이언트 시스템(112N) 사이의 데이터 및 프로세스 흐름을 나타낸다.
클라이언트 시스템들(112)을 더 상세히 살펴보면, 이 클라이언트 시스템들은 프로세서(104)와 동일한 유형 및 아키텍처이거나 그렇지 않을 수 있는 각자의 프로세서들(118A 및 118N)[모두 합하여, 프로세서들(118)이라고 함]을 포함할 수 있다. 도 1에 도시된 바와 같이, 버스 시스템들(120A 및 120N)[모두 합하여, 시스템들(120)이라고 함]이 프로세서들(118A 및 118N)에 각각 연결될 수 있다. 이 버스 시스템들(120)은 그들의 대응하는 프로세서들(118)과 호환가능한 유형 및 아키텍처일 수 있으며, 서버(102) 상의 버스 시스템들(106)과 동일한 유형 및 아키텍처이거나 그렇지 않을 수 있다. 컴퓨터-판독가능 저장 매체(122A 및 122N)[모두 합하여, 저장 매체(122)라고 함]의 각자의 인스턴스들은 브라우저 소프트웨어(124A 및 124N)[모두 합하여, 브라우저들(124)이라고 함]를 포함할 수 있다.
클라이언트 시스템들(112) 및 서버 시스템들(102)은 각자의 최종 사용자들(126A 및 126N)[모두 합하여, 최종 사용자들(126)이라고 함]이 문서 저장소(114)로부터 문서들을 (전체적으로 또는 부분적으로) 편집 및/또는 생성하는 것에 관해 협업할 수 있게 해주기 위해 본 명세서에 기술된 바와 같이 협동할 수 있다. 어떤 시나리오들에서, 서로 다른 최종 사용자들(126)은 주어진 문서의 동일한 부분을 협업적으로 편집할 수 있다. 다른 시나리오들에서, 서로 다른 최종 사용자들(126)은 주어진 문서의 서로 다른 부분들에 관해 부연 설명할 수 있다.
서버 시스템들(102) 및 다양한 클라이언트 시스템들(112)은 하나 이상의 적당한 네트워크들(그 전체를 128로 나타냄)을 통해 서로 통신을 할 수 있다. 이러한 네트워크들(128)은, 전세계 네트워크, 지역 네트워크, 로컬 네트워크, 개인 네트워크, 또는 다른 유형의 네트워크들로 기술되는지에 상관없이, 임의의 적당한 형태를 가질 수 있다. 서버 시스템들 및 클라이언트 시스템들이 네트워크들(128)과 인터페이스하기에 적절한 임의의 네트워크 어댑터들, 하드웨어, 소프트웨어, 프로토콜 스택들, 기타를 포함할 수 있지만, 이러한 특징들이 명료함 및 간명함을 위해 도 1에서 생략되어 있다.
이하에서 더 상세히 기술하는 바와 같이, 협업적 클라이언트 서비스들(110)은 사용자들(126)이 브라우저들을 사용하여 문서들의 적어도 일부분을 편집하거나 생성하는 것에 협업할 수 있게 해줄 수 있다. 사용자들(126)이 브라우저들을 사용할 수 있기 때문에, 클라이언트 시스템들(112)은 사용자들이 이러한 협업적 경험에 들어갈 수 있게 해주기 위해 부가의 클라이언트 소프트웨어를 설치하는 것을 피할 수 있다. 협업적 클라이언트 서비스들(110)은 어디에나 있는 브라우저들을 통해 사용자들(126)에게 풍부한 클라이언트 경험을 제공할 수 있다. 보다 구체적으로는, 협업적 클라이언트 서비스들은 사용자들이 다양한 유형의 최종-사용자 기능들(워드 프로세싱, 데이터베이스 관리, 스프레드시트 관리, 데이터 공유, 전자 수첩 기능, 기타를 포함하지만 이들로 제한되지 않음)에 액세스할 수 있게 해줄 수 있다. 이러한 사용자 경험을 가능하게 해주기 위해, 서버측에서의 협업적 클라이언트 서비스들은 이상의 기능들 중 임의의 기능을 수행하는 풍부한 기능을 가진 클라이언트들에 의해 사용되는 임의의 네이티브 형식들로/로부터 변환될 수 있다.
서버 및 클라이언트 시스템들을 나타내기 위해 도 1에서 사용된 그래픽 요소들은 단지 설명을 용이하게 해주기 위해 선택된 것이며, 본 명세서에서의 설명의 가능한 구현들을 제한하기 위해 선택된 것이 아니다. 보다 상세하게는, 도 1은 서버 시스템(102)이 어쩌면 2개 이상의 클라이언트 시스템들에 의해 공유되는 중앙집중식 컴퓨팅 시스템인 일례들을 나타내고 있다. 클라이언트 시스템들(112)은 데스크톱 시스템, 랩톱 또는 모바일 컴퓨팅 시스템, 스마트폰, 무선-지원 PDA(personal digital assistant), 또는 다른 적당한 시스템들을 나타낼 수 있다. 그렇지만, 본 명세서에서의 설명은 또한 도 1에 도시된 일례들(이들로 제한되지 않음)을 비롯한 다른 형태의 서버 및/또는 클라이언트 시스템들도 고려한다.
도 1에 도시된 시스템 및 운영 환경에 대해 기술하였으며, 이제부터 협업 프로세스를 개시하는 것과 관련된 구성요소들 및 프로세스들에 대해 설명한다. 이 설명은 도 2와 관련하여 제시된다.
도 2는 도 1에 도시된 바와 같이 협업 프로세스들을 개시하는 것과 관련된 구성요소들 및 데이터 흐름들(그 전체를 200으로 나타냄)을 나타낸 것이다. 제한하기 위한 것이 아니라 참조의 편의상, 도 2는 유사한 항목들을 가리키기 위해 이전의 도면들로부터의 어떤 참조 번호들을 그대로 사용할 수도 있다. 예를 들어, 도 2는 도 1로부터의 협업적 클라이언트 서비스들(110), 문서 저장소(114), 네트워크(128), 브라우저들(124) 및 사용자들(126)의 표현을 그대로 사용한다.
문서 저장소(114)를 더 상세히 살펴보면, 문서 저장소는 클라이언트 시스템들 및 최종 사용자들에 의한 협업에 이용가능한 문서들의 모델들을 구현할 수 있다. 보다 구체적으로는, 이러한 모델들은 이러한 협업 작업들 동안에 효율성 증가 및 최적화를 용이하게 해줄 수 있다. 예를 들어, 특정의 문서들의 모델들이 문서들의 특정의 의미 부분(semantic piece)을, 본 명세서에서 셀(cell)이라고 하는 구성체(construct)에 할당될 수 있다. 그에 부가하여, 본 명세서에 기술된 또 하나의 구성체는 그 시점에서의 셀의 표현을 제공하는 수정(revision)(특정의 때에 포착된 셀의 스냅샷임)이다. 예를 들어, 주어진 문서 내의 각자의 페이지들이 특정의 셀들을 사용하여 표현될 수 있다. 차례로, 특정의 수정들이 셀에 대응하는 내용의 특정의 부분들 또는 측면들을 표현하는 하나 이상의 개체들로 세분될 수 있다. 예를 들어, 개체들은 주어진 페이지 내에 나오는 단락들 또는 이미지들, 주어진 목록 내에 나오는 글머리 기호들(bullet points), 기타를 포함할 수 있다.
도 2는 수정 구조들의 일례들을 202로 나타내고 있으며, 구현들이 하나 이상의 문서들을 표현하기에 적절한 임의의 수의 셀 구조들을 포함할 수 있다는 것을 잘 알 것이다. 차례로, 주어진 수정 구조는 하나 이상의 개체들을 포함할 수 있고, 도 2는 개체들의 일례들을 204A 및 204N[모두 합하여, 개체들(204)라고 함]으로 나타내고 있다. 특정의 개체들이 대응하는 ID들에 의해 식별될 수 있다. 이러한 개체들은 동일한 셀 내의 다른 개체들을 가리킬 수 있거나 다른 셀들 내의 개체들을 가리킬 수 있다.
협업적 클라이언트 서비스들(110)은 브라우저들(124)을 통한 서로 다른 최종 사용자들(126)의 협업을 위해 주어진 특정의 문서로부터의 하나 이상의 수정들을 전송할 수 있다. 예를 들어, 협업적 클라이언트 서비스들(110)은 주어진 문서 내의 어느 수정들이 다른 최종 사용자들의 관심을 끄는지를 판정할 수 있고, 이어서 브라우저들 상에서 그 최종 사용자들에게 디스플레이하기 위해 그 수정들을 전송할 수 있다. 도 2는 사용자(126A)와의 상호작용을 위해 브라우저(124A)로 전송되는 수정들의 일례들을 206A로 나타내고, 사용자(126B)와의 상호작용을 위해 브라우저(124B)로 전송되는 수정들의 일례들을 206B로 나타내며, 사용자(126N)와의 상호작용을 위해 브라우저(124N)로 전송되는 수정들의 일례들을 206N으로 나타내고 있다.
협업적 클라이언트 서비스들(110)은 주어진 문서의 어느 특정의 수정들(206)이 다양한 클라이언트 브라우저들로 분배되어야 하는지를 결정할 수 있다. 예를 들어, 협업적 클라이언트 서비스들은 처음에 주어진 문서 내의 모든 페이지들의 이름들을 포함하는 탐색 페이지(navigation page)를, 첫번째 페이지만의 내용과 함께, 브라우저들로 전송할 수 있다. 그러면, 브라우저들에서, 서로 다른 사용자들은 그들 각자의 탐색 페이지들을 클릭할 수 있고, 어느 페이지들을 보고 편집하고자 하는지를 선택할 수 있다. 그러면, 협업적 클라이언트 서비스들은 선택된 페이지들의 내용을 다양한 브라우저들로 다운로드할 수 있다. 예를 들어, 서로 다른 사용자들(126)은 주어진 문서 내의 동일한 또는 다른 페이지들로 스크롤할 수 있다. 이 일례에서, 협업적 클라이언트 서비스들이 서로 다른 사용자들이 편집하고자 하는 페이지들을 확인한 경우, 클라이언트 서비스들은 이 페이지들에 대응하는 수정들(208)을 문서 저장소(114)로부터 획득할 수 있다. 차례로, 협업적 클라이언트 서비스들은 206A, 206B 및 206N으로 표현된 이러한 수정들[모두 합하여, 분배된 수정들(206)이라고 함]을 적절한 사용자들에게 분배할 수 있다.
다른 시나리오들에서, 협업적 클라이언트 서비스들은 특정의 사용자에 의해 편집되고 있는 주어진 페이지를 분배할 수 있을 뿐만 아니라 문서 내의 주어진 페이지 이전에 및/또는 이후에 나오는 어떤 수의 페이지들도 분배할 수 있다. 어떤 수의 "앞으로 보기(look-ahead)" 또는 "뒤로 보기(look-behind)" 페이지들을 제공함으로써, 협업적 클라이언트 서비스들에 의해 이러한 사용자들은 부가의 수정들을 전송받지 않고 몇개의 연속적인 페이지들을 스크롤할 수 있다.
이하에서 더 상세히 기술하는 바와 같이, 셀 모델(cell model)에 의해 문서 저장소는 서로 다른 최종 사용자들(예를 들어, 126) 간의 보다 효율적인 협업을 용이하게 해줄 수 있다. 예를 들어, 문서들의 수정 표현들은 통상적으로 문서 전체보다 훨씬 더 작다.
이하에서 더 상세히 기술하는 바와 같이, 문서들의 셀 모델에 의해 문서 저장소는 서로 다른 최종 사용자들(예를 들어, 126) 간의 보다 효율적인 협업을 용이하게 해줄 수 있다. 예를 들어, 문서들의 수정-기반 표현들은 통상적으로 문서 전체보다 훨씬 더 작다. 따라서, 협업적 클라이언트 서비스들은, 문서 전체를 서로 다른 협업 중인 사용자들 및 클라이언트 시스템들로 전송하는 것에 비해, 이러한 수정 표현들을 전송함으로써 네트워크 리소스들의 사용을 줄일 수 있고 네트워크 대역폭을 절감할 수 있다.
협업적 클라이언트 서비스들이 특정의 수정들(206)을 브라우저들로 분배한 경우, 이러한 서비스들은 협업 정보(그 전체를 210으로 나타냄)를 저장할 수 있다. 예를 들어, 이러한 협업 정보는 어느 특정의 수정들이 어느 특정의 사용자들로 분배되었는지를 나타낼 수 있다. 협업적 클라이언트 서비스들은 이러한 정보를 서버측 수정 저장소(revision store)(212)에 저장할 수 있으며, 이는 서로 다른 사용자들(126)의 표현들(214A 및 214M)[모두 합하여, 사용자 표현들(214)이라고 함]을 포함할 수 있다. 차례로, 사용자 표현들(214)은, 216A 및 216M[모두 합하여 수정 표현들(216)이라고 함]으로 나타낸 바와 같이, 어느 수정들이 특정의 사용자들에 분배되었는지를 나타낼 수 있다. 이하에서 더 상세히 기술하는 바와 같이, 서버측 수정 저장소 내의 이러한 항목들에 의해 협업적 클라이언트 서비스들은 특정의 사용자들에 의해 행해진 어느 수정들이 다른 사용자들과 관련되어 있을 수 있는지를 확인할 수 있다.
도 2에서 다양한 클라이언트 시스템들과 사용자들 간의 협업을 개시하는 것에 관계된 구성요소들 및 흐름들을 기술하였으며, 이제부터 특정의 문서에 대한 협업적 작업들을 개시하기 위해 수행되는 프로세스 흐름들에 대해 계속하여 설명한다. 이 설명은 이제부터 도 3을 사용하여 제공된다.
도 3은 특정의 문서에 대한 협업적 작업들(예를 들어, 편집)을 개시하는 프로세스 흐름들(그 전체를 300으로 나타냄)을 나타낸 것이다. 제한하기 위한 것이 아니라 참조의 편의상, 도 3은 유사한 항목들을 가리키기 위해 이전의 도면들로부터의 어떤 참조 번호들을 그대로 사용할 수도 있다. 예를 들어, 도 3은 이전의 도면들로부터 협업적 클라이언트 서비스들(110)의 표현들을 그대로 사용한다. 프로세스 흐름들(300)이 이러한 협업적 클라이언트 서비스들과 관련하여 기술되지만, 유의할 점은, 프로세스 흐름들(300)의 구현들이 또한, 이 설명의 범위 및 사상을 벗어나지 않고, 다른 구성요소들 또는 서비스들에 의해 수행될 수 있다는 것이다.
프로세스 흐름들(300)을 더 상세히 살펴보면, 블록(302)은 일반적으로 주어진 문서 내의 어느 셀들이 하나 이상의 특정의 사용자들의 관심을 끄는지를 식별하는 것을 나타낸다. 예를 들어, 블록(302)은, 문서 내의 첫번째 페이지의 내용과 함께, 주어진 문서의 페이지들의 이름들을 복수의 협업하는 사용자들로 전송하는 것을 포함할 수 있다. 이어서, 사용자들은 보고자 하는 페이지들의 이름들을 선택할 수 있다. 블록(302)은 특정의 사용자의 관심을 끄는 주어진 셀과 관련하여 어떤 수준의 앞으로 보기(look-ahead) 및/또는 뒤로 보기(look-behind)를 제공하는 것을 포함할 수 있다. 문서들의 셀 모델에 대한 이상의 설명을 상기하면, 특정의 셀들이, 예를 들어, 이러한 문서들 내의 페이지들을 표현할 수 있다.
블록(304)은 일반적으로 블록(302)에서 식별된 관심의 수정들을 획득하는 것을 나타낸다. 예를 들어, 블록(304)은, 본 명세서에 기술된 도구들 및 기법들을 사용하여, 다양한 서로 다른 사용자들이 그에 관해 협업할 수 있는 내용을 포함하는 문서 저장소로부터 관심의 수정들을 획득하는 것을 포함할 수 있다. 도 2는 이러한 문서 저장소의 일례를 114로 제공하고 셀들의 일례들을 208로 나타내고 있다.
블록(306)은 일반적으로 관심의 획득된 수정들을 특정의 사용자들로 전송하는 것을 나타낸다. 예를 들어, 도 2에 나타낸 바와 같이 3명의 서로 다른 사용자들[예를 들어, 사용자(126A), 사용자(126B), 사용자(126N)]이 주어진 문서에 관해 협업하고 있는 것으로 가정하면, 이 사용자들은 이 주어진 문서의 동일한 또는 상이한 부분들에 관심을 표명할 수 있다. 그에 따라, 블록(306)은 주어진 문서의 적절한 부분들의 수정 표현들을 이 서로 다른 사용자들(예를 들어, 206A, 206B 및 206N)로 전송하는 것을 포함할 수 있다.
블록(308)은 일반적으로 특정의 사용자들을 이 사용자들이 처리하고 있는 셀들과 연관시키는 것을 나타낸다. 예를 들어, 블록(308)은 특정의 사용자들(예를 들어, 도 2의 214)의 표현들을, 자신의 수정들[예를 들어, 도 2의 수정 표현들(216)]이 그 사용자들에게 제공된 셀들과 연관시키는 것을 포함할 수 있다.
블록(310)은 일반적으로 블록(308)에서 정의된 연관관계들을 저장하는 것을 나타낸다. 예를 들어, 블록(310)은, 도 2에서 214 및 216으로 나타낸 바와 같이, 부연설명하는 사용자들과 그 사용자들이 협업하고 있는 셀들 간의 연관성 또는 관계를 저장하도록 서버측 수정 저장소(예를 들어, 212)를 업데이트하는 것을 포함할 수 있다.
특정의 문서에 관한 협업 작업들을 개시하는 프로세스 흐름들(300)에 대해 기술하였으며, 이제부터 계속하여 이 협업을 개시하기 위해 브라우저측에서 일어날 수 있는 구성요소들 및 흐름들에 대해 더 상세히 설명한다. 이 설명은 이제부터 도 4를 사용하여 제공된다.
도 4는 주어진 클라이언트 시스템에서 협업을 개시하기 위해 브라우저측에서 일어날 수 있는 구성요소들 및 흐름들(그 전체를 400으로 나타냄)을 나타낸 것이다. 제한하기 위한 것이 아니라 참조의 편의상, 도 4는 유사한 항목들을 가리키기 위해 이전의 도면들로부터의 어떤 참조 번호들을 그대로 사용할 수도 있다. 예를 들어, 도 4는 이전의 도면들로부터 네트워크(128), 분배된 셀들(206), 브라우저(124) 및 사용자(126)의 표현들을 그대로 사용한다.
도 4를 더 상세히 살펴보면, 클라이언트측 복제 관리자(client side replication manager)(402)는 네트워크(128)를 통해 서버(102)로부터 분배된 수정들(206)을 수신할 수 있다. 이 수정들(206)은 처음에 사용자(126)에 제시되는 페이지들을 나타낼 수 있거나, 다른 협업하는 사용자들에 의해 이 셀들에 행해진 수정들을 나타낼 수 있다. 도 4를 설명하기 위해, 셀들(206)이 브라우저(124)를 통해 사용자(126)에게 처음으로 제시되는 페이지들을 나타내는 것으로 가정된다.
일반적으로, 복제 관리자(402)는 브라우저와 서버 사이에서 셀들에 대한 수정들을 업로드 및 다운로드할 수 있다. 복제 관리자는 또한 네트워크와 브라우저 사이에서 적절한 경우 프로토콜들을 변환할 수 있다. 도 4에서, 206으로나타낸 수정들이 네트워크 전송에 적합한 프로토콜로 되어 있는 것으로 가정하는 반면, 404로 나타낸 수정들이 브라우저에 의한 처리에 적합한 것으로 변환된다.
복제 관리자(402)는 수정들(404)을 클라이언트측 수정 저장소(406)로 전달할 수 있다. 일반적으로, 수정 저장소는, 셀들(206)에 대해 행해지는 수정들(또는 그 수정들에 대한 변경들)이 주어진 브라우저(124)에서 로컬적으로 일어나는지 다른 브라우저들에서 원격적으로 일어나고 주어진 로컬 브라우저(124)로 보고되는지에 상관없이, 이 수정들 또는 변경들을 관리 및 저장할 수 있다. 수정들(404)에 관한 주어진 협업 작업을 시작할 때, 수정 저장소(406)는 나중에 참조하기 위해 이 셀들의 초기 상태 또는 수정(408)을 저장할 수 있다.
수정 저장소(406)는 셀들의 표현을 그래프 데이터 구조(410)에 제공할 수 있고, 이 그래프 데이터 구조(410)는 협업적으로 편집되고 있는 문서의 의미 모델(semantic model)을 제공하며, 이 의미 모델은 문서에 대한 계층구조를 제공한다. 데이터/보기 모델(data/view model)의 구현을 가정하면, 그래프 구조(410)는 이 모델의 데이터 부분을 제공할 수 있다. 그래프 구조(410)는 서로 다른 유형의 노드들, 속성 세트들, 및 들어오는 셀들(206)을 나타내는 기타 요소들을 포함하는 유향 비순환 그래프(directed acyclic graph)일 수 있다. 도 4는 노드들의 일례들을 412A 및 412N[모두 합하여, 그래프 노드들(412)이라고 함]으로 나타내고 있다. 예를 들어, 들어오는 수정이 협업적으로 편집된 문서의 페이지를 나타내는 것으로 가정하면, 그래프 구조(410) 내의 서로 다른 노드들(412)은 페이지 내의 서로 다른 단락들, 이미지들, 페이지들, 섹션들, 또는 기타 부분 또는 하위-요소들을 나타낼 수 있다. 어떤 개체들은 그래프에서 하나의 노드로 표현될 수 있는 반면(예를 들어, 이미지), 표 등의 다른 내용은 그래프에서 많은 노드들로 표현될 수 있다.
예시적이고 비제한적인 구현들에서, 클라이언트측 복제 관리자(402), 클라이언트측 수정 저장소(406), 초기 셀 상태(408), 및 그래프 구조(410)는 Script#으로 저작되고 JavaScript로 구현될 수 있다. 그렇지만, 이러한 일례들은 단지 이 설명을 용이하게 해주기 위해 제공된 것이며, 다른 구현들에서 다른 시나리오들이 가능할 수 있다.
그래프 구조(410)는 들어오는 수정들(206)에 의해 표현되는 내용의 브라우저-독립적인 모델을 제공할 수 있다. 차례로, 이 그래프 구조 내의 노드들(412)은 각종의 서로 다른 부분적으로 이용가능한 브라우저들 중 임의의 브라우저에서 렌더링될 수 있다. 그에 따라, 모델 보기(view model) 또는 코드 보기(view code)(414)는 이 노드들(412)을 그래프 구조(410)로부터 브라우저-종속적인 보기 모델로 렌더링 또는 매핑할 수 있다. 도 4는 이러한 보기 모델의 일례를 문서 개체 모델(document object model)(DOM)(416)로서 제공하고 있다. DOM(416)은 문서의 하나 이상의 페이지들 내에 나오는 단락들, 이미지들, 목록들 또는 기타 요소들을 나타내는, 협업적으로 편집된 문서의 현재 보기(current view)를 저장할 수 있다.
코드 보기(414)는 그래프 구조(410)로부터 DOM을 생성할 수 있고, 그래프 구조 내의 노드들(412A 및 412N)은 DOM 내의 노드들(418A 및 418N)[모두 합하여, DOM 노드들(418)이라고 함]에 대응한다. DOM(416)은 이어서 사용자(126)가 보도록 브라우저(124) 상에 렌더링될 수 있다. 도 4는 임의의 주어진 때에 사용자가 볼 수 있는 렌더링된 내용의 그 부분을 브라우저 뷰포트(browser viewport)(420)로서 나타내고 있다. 사용자는 이어서, 적당하다고 생각할 때, 브라우저 뷰포트 내에 표현되는 어느 요소들과도 상호작용할 수 있다.
도 4에서 특정의 문서들에 관한 협업 작업들을 개시하는 구성요소들 및 흐름들에 대해 기술하였으며, 이제부터 협업하는 사용자들에 의해 문서들에 행해진 수정들을 처리하는 구성요소들 및 흐름들에 대해 설명한다. 이 설명은 이제부터 도 5를 사용하여 제공된다.
도 5는 협업하는 사용자들에 의해 문서들에 행해진 수정들을 처리하는 구성요소들 및 흐름들(그 전체를 500으로 나타냄)을 나타낸 것이다. 제한하기 위한 것이 아니라 참조의 편의상, 도 5는 유사한 항목들을 가리키기 위해 이전의 도면들로부터의 어떤 참조 번호들을 그대로 사용할 수 있다. 예를 들어, 도 5는 이전의 도면들로부터 네트워크(128), 브라우저들(124), 사용자들(126), 협업적 클라이언트 서버들(110), 서버측 수정 저장소(212), 및 사용자들(214) 및 수정들(216)의 관련 표현들을 그대로 사용한다.
도 5를 더 상세히 살펴보면, 사용자들(126A 및 126B)이 주어진 문서 내의 동일한 셀에 관해 협업하고 있는 것으로 가정한다. 도 5는 사용자들(126A 및 126B) 사이에서 공유되는 이 셀을 502A 및 502B로 나타내고 있다. 이상에서 기술한 바와 같이, 서버측 수정 저장소(212)는 이 시나리오를 나타내기 위해 사용자 표현들(214) 및 수정 표현들(216)을 생성하고 저장할 수 있다. 사용자(126A)가 공유된 셀(502A)에 대한 수정들(504A)을 생성하는 경우, 브라우저(124A)는 이 수정들을 협업적 클라이언트 서비스들(110)로 전송할 수 있다. 수정들(504A)의 통지는 또한 수정되었던 셀(502A)도 알려줄 수 있다.
수정들(504A)의 통지를 수신하면, 협업적 클라이언트 서비스들(110)은 이 수정들(504A)이 다른 사용자들에 의해 편집되고 있는 셀들에 관련되어 있는지 여부를 판정할 수 있다. 이 판정을 하기 위해, 협업적 클라이언트 서비스들(110)은 임의의 다른 사용자들이 셀(502A)을 편집하고 있는지 여부를 판정하기 위해 서버측 수정 저장소(212)에 질의를 할 수 있다. 이 경우에, 이 질의는 사용자(126B)도 방금 수정된 셀(502A)을 편집하고 있다는 것을 알려준다. 그에 부가하여, 브라우저(124B)는 셀(502)에 대한 어떤 새로운 변경들이 있는지 협업적 클라이언트 서비스들(110)에 질의를 할 수 있다. 이러한 방식으로, 협업적 클라이언트 서비스들을 실행하는 서버는 암시적으로 2개의 클라이언트가 셀(502)에 관해 협업을 하고 있는 것으로 판정할 수 있다. 그에 따라, 어떤 시나리오들에서, 협업적 클라이언트 서비스들(110)은 이 수정들의 통지를 작성하여 브라우저(124B)로 전송할 수 있다. 다른 시나리오들에서, 협업적 클라이언트 서비스들은 브라우저(124B)로부터 요청들을 수신할 수 있고, 이러한 요청들에 대해 셀(502)에 대한 적절한 수정들로 응답할 수 있다. 도 5는 이들 및 기타 시나리오들을 전체적으로 504B로 나타내고 있다. 차례로, 브라우저(124B)는 수정들(504B)을 포함하도록 그의 디스플레이를 업데이트할 수 있다.
도 5에 도시된 이 시나리오에서, 사용자(126N)가 사용자들(126A 및 126B)에 의해 공유되는 셀(502A 및 502B)[모두 합하여, 셀(502)이라고 함]과는 다른 셀(506)을 편집하고 있는 것으로 가정된다. 이러한 서로 다른 셀들(502 및 506)이 동일한 문서 내에 있을 수 있지만, 사용자(126N)는 현재 셀(502)을 편집하고 있지 않다. 이 시나리오에서, 다른 사용자들에 의해 행해진 이 셀(502)에 대한 수정들이 사용자(126N) 및/또는 브라우저(124N)에 직접적인 관련성이 있는 것은 아니다. 따라서, 협업적 클라이언트 서비스들(110)은 이 수정들을 브라우저(124N)에 즉각적으로 통지하지 않으며, 그로써 이러한 통지와 연관된 네트워크 대역폭을 절감한다. 그렇지만, 사용자(126N)는 셀(506)에 대한 수정들(508)을 행할 수 있으며, 이 수정들은 적절한 경우 협업적 클라이언트 서비스들(110)로 전달된다. 차례로, 협업적 클라이언트 서비스들은 동일한 셀(506)을 편집하고 있는 임의의 다른 브라우저들 또는 사용자들에게 이 수정들을 전달할 수 있다.
이상에서 기술한 바와 같이, 도 5에 예시된 시나리오들은 이전의 기법들에 비해 동작 효율성을 제공할 수 있다. 예를 들어, 협업적 클라이언트 서비스들은 전체 문서 자체보다는 문서들의 부분들(예를 들어, 수정들)을 분배할 수 있다. 통상적으로, 이 수정들은 전체 문서들보다 훨씬 더 작다. 따라서, 이 수정들을 네트워크를 통해 전송하는 것은 전체 문서들을 전송하는 것에 비해 더 적은 네트워크 대역폭을 사용한다. 그에 부가하여, 브라우저들(124) 및 협업적 클라이언트 서비스들(110)은, 전체 문서들의 업데이트된 버전들을 교환하기 보다는, 문서들의 이 부분들에 대한 수정들을 교환할 수 있다. 따라서, 이 수정들을 네트워크를 통해 전달하는 것은, 전체 문서들의 업데이트된 버전들을 교환하는 것에 비해, 훨씬 더 적은 데이터를 전송하는 것을 수반한다. 이러한 모델 하에서 일어나는 네트워크 트래픽은 전달되는 변경들의 크기에 비례할 수 있으며 변경되는 개체의 크기에 비례하지 않는다.
다양한 브라우저들(124)이 협업적으로 편집되고 있는 셀들에 대한 수정들을 보고할 때, 협업적 클라이언트 서비스들은 이 수정들의 표시들을 동일한 셀들을 편집하고 있는 다른 브라우저들에게만 분배한다. 일반적으로, 주어진 문서가 다수의 셀들로 모델링되는 경우 또 다수의 사용자들이 이 문서에 관해 협업하고 있는 경우, 이 셀들은 통상적으로 다수의 사용자들 간에 랜덤하게 분배된다. 따라서, 최악의 시나리오에서는, 이 사용자들 모두가 동일한 셀에 관해 협업을 하고 있을 수 있지만, 최선의 시나리오에서는, 기껏해야 한명의 사용자가 주어진 셀을 조작하고 있다. 통상적인 동작 상황들이 이 2가지 극단 사이의 어딘가에 속할 수 있으며, 협업적 클라이언트 서비스들은 수정된 셀들을 조작하는 사용자들 및 브라우저들에게만 수정들을 보고함으로써 네트워크 대역폭 및 리소스들을 추가적으로 절감한다.
도 5에서 협업하는 사용자들에 의해 문서들에 행해진 수정들을 처리하는 것과 관련된 구성요소들 및 데이터 흐름들을 기술하였으며, 이제부터 이 수정들을 처리하는 프로세스 흐름들에 대해 설명한다. 이 설명은 이제부터 도 6을 사용하여 제공된다.
도 6은 브라우저들에 의해 보고되는 수정들을 처리하는 흐름들(그 전체를 600으로 나타냄)을 나타낸 것이다. 제한하기 위한 것이 아니라 참조의 편의상, 도 6은 유사한 항목들을 가리키기 위해 이전의 도면들로부터의 어떤 참조 번호들을 그대로 사용할 수 있다. 예를 들어, 도 6은 이전의 도면들로부터 협업적 클라이언트 서비스들(110)의 표현들을 그대로 사용한다. 프로세스 흐름들(600)이 이러한 협업적 클라이언트 서비스들과 관련하여 기술되지만, 유의할 점은, 프로세스 흐름들(600)의 구현들이 또한, 이 설명의 범위 및 사상을 벗어나지 않고, 다른 구성요소들 또는 서비스들에 의해 수행될 수 있다는 것이다.
도 6을 보다 상세히 살펴보면, 블록(602)은 하나 이상의 브라우저들(예를 들어, 이전의 도면들에서 124)에 의해 보고되는 수정들의 표시들을 수신하는 것을 나타낸다. 예를 들어, 블록(602)은 협업적 클라이언트 서비스들(110)이 이러한 수정들(도 5에서 504A 및 508로 나타냄)의 표시들을 수신하는 것을 포함할 수 있다.
블록(604)은 일반적으로 블록(602)에서 보고된 수정들의 영향을 받는 셀들을 식별하는 것을 나타낸다. 예를 들어, 보고된 수정들은 이 수정들에 의해 변경되는 셀들을 나타내는 식별자를 포함할 수 있다.
블록(606)은 일반적으로 블록(606)에서 수신되는 보고된 수정들을 저장하는 것을 나타낸다. 예를 들어, 블록(606)은 이 수정들을 서버측 수정 저장소(예를 들어, 212)에 저장하는 것을 포함할 수 있다.
결정 블록(608)은 임의의 다른 브라우저들이 수정된 주어진 셀을 보고 및/또는 편집하도록 요청하고 있는지 여부를 판정한다. 주어진 때에 주어진 셀을 요청하고 있는 다른 브라우저들이 현재 없는 경우, 프로세스 흐름들(600)은 아니오 분기(610)를 따라 블록(602)으로 되돌아가서 브라우저들 중 하나로부터 셀에 대한 그 다음 수정의 통지를 기다릴 수 있다.
결정 블록(608)으로 돌아가서, 수정된 셀을 요청한 다른 브라우저들이 있는 경우, 프로세스 흐름들(600)은 예 분기(612)를 따라, 셀에 대한 수정들을 임의의 요청 측 브라우저들로 전송하는 것을 나타내는 블록(614)으로 갈 수 있다. 도 5에서 상기한 바와 같이, 협업에 이용가능한 셀들이 협업하는 사용자들 간에 랜덤하게 분배될 수 있다. 이 시나리오에서, 블록(614)은 이 업데이트들의 통지들을, 주어진 문서에 관해 협업하는 사용자들 전부보다는, 주어진 문서 내에서 협업하는 사용자들의 어떤 더 작은 서브셋으로 전송하는 것을 포함할 수 있다.
블록(614)을 수행한 후에, 프로세스 흐름들(600)은 블록(602)으로 되돌아가서 브라우저들로부터 수정들의 그 다음 통지를 기다릴 수 있다. 도 6에서 다양한 협업하는 브라우저들에 의해 보고된 수정들을 처리하는 흐름들에 대해 기술하였으며, 이제부터 이 수정들을 처리하기 위해 브라우저측에서 일어나는 구성요소들 및 데이터 흐름들에 대해 설명한다. 이 설명은 이제부터 도 7을 사용하여 제공된다.
도 7은 복수의 사용자들에 의해 협업적으로 편집되는 내용에 대한 수정들을 처리하기 위해 브라우저가 제공할 수 있는 구성요소들 및 데이터 흐름들(그 전체를 700으로 나타냄)을 나타낸 것이다. 제한하기 위한 것이 아니라 참조의 편의상, 도 7은 유사한 항목들을 가리키기 위해 이전의 도면들로부터의 어떤 참조 번호들을 그대로 사용할 수 있다. 예를 들어, 도 7은 이전의 도면들로부터 네트워크(128), 예시적인 사용자(126), 예시적인 브라우저(124), 예시적인 DOM(416), 예시적인 보기 코드 또는 보기 모델(408), 및 예시적인 그래프 구조(410)를 그대로 사용한다. 도 7은 또한 사용자(126)가 편집하도록 브라우저(124) 내에 디스플레이되는 셀들의 초기 상태(408)를 포함할 수 있는 클라이언트측 수정 저장소(406)도 그대로 사용한다. 그에 부가하여, 도 7은 네트워크(128)를 통해 브라우저로부터 수정들(504)을 보고할 수 있는 복제 관리자(402)를 그대로 사용한다.
도 7을 보다 상세히 살펴보면, 사용자(126)는 브라우저(124)에 제시되는 내용과 상호작용하기 위해 송출되는 다양한 명령들을 발행할 수 있고, 이 명령들을 통해 이 내용에 대해 임의의 수의 수정들을 할 수 있다. 이 명령들(702)은 브라우저에 제시되는 내용의 유형에 따라 또한 협업적 클라이언트 서비스들(예를 들어, 이전의 도면들에서 110)을 통해 브라우저가 이용할 수 있는 기능들이 어떤 것들인지에 따라 다양한 유형들을 가질 수 있다.
사용자에 의해 발행된 명령들(702)의 유형에 따라, 브라우저는 DOM에 대해 또는 그래프 구조에 대해 이 명령들을 실행할 수 있다. 통상적으로, 대부분의 명령들은 데이터/보기 모델의 모델 부분을 제공할 수 있는 그래프에 대해 실행될 수 있다. 이러한 방식으로, 모델 부분이 최신의 것으로 유지된다. 그렇지만, 편집 명령들이 DOM에 대해 실행될 수 있고, 특정의 지점들에서(예를 들어, 단어 또는 단락의 끝에서), DOM은 사용자의 편집들로 인한 수정들로 그래프 구조를 업데이트시킬 수 있다. 이러한 방식으로, DOM 및 그래프 구조는 사용자가 타이핑하는 각각의 스트로크를 추적하고 처리하는 성능 저하를 초래하지 않고, 그 대신에 처리 효율의 향상을 위해 스트로크들 또는 명령들을 통합시킨다.
그래프 구조 내의 노드들은 명령들(702)에 응답하여 업데이트될 수 있고, 명령들에 의해 영향을 받는 노드들만이 업데이트된다. 영향을 받은 노드들이 업데이트되면, 보기 코드(408)는 이 노드들을 순회하면서 DOM을, 예를 들어, 적절한 HTML로 채울 수 있다. 이어서, 브라우저(124)는 DOM을 순회하면서 사용자(126)에 디스플레이하기 위해 HTML을 렌더링할 수 있다. 이러한 방식으로, 브라우저(124)는 사용자(126)가 사용자에 의해 입력된 임의의 명령들의 결과를 시각화할 수 있게 해줄 수 있다.
어떤 경우들에, 브라우저(124)는 명령들을 브라우저에서 로컬적으로 또는 서버에서 원격적으로 실행할지를 결정할 수 있다. 이 결정은 성능 고려사항들에 기초하여 행해질 수 있으며, 통상적으로 리소스를 많이 사용하는(resource-intensive) 동작들이 서버로 오프로딩될 수 있다. 그렇지만, 고려할 다른 인자들로는 주어진 때에 서버에 과부하가 걸리는 것이 있을 수 있다.
클라이언트측 수정 저장소(406)는 브라우저(124)를 통해 사용자가 취한 명령들 또는 기타 동작들의 결과 생기는 일련의 수정들을 저장할 수 있다. 브라우저에 디스플레이되는 셀들의 초기 상태의 표현(408)부터 시작하여, 수정 저장소(406)는 일련의 수정 차분(revision deltas)(704)을 생성하여 저장할 수 있다. 이 수정 차분들은 주어진 브라우저(124)에서 로컬적으로 그래프에 행해지는 순차적인 증분 변경들(sequential, incremental changes)을 나타낸다. 여러 기능들 중에서도 특히, 이 수정 차분은 브라우저가 사용자에게 "실행취소(undo)" 기능을 제공할 수 있는 메카니즘을 제공할 수 있으며, 이로써 사용자는 어떤 이전의 상태로 되돌아가기 위해 일련의 수정들을 통해 뒤로 갈 수 있다.
수정 저장소(406)는 수정들 및 수정 차분들을, 예를 들어, 하나 이상의 연결 리스트들(처음에는 발생순으로 배열됨)에 저장할 수 있다. 그렇지만, 시간이 지남에 따라, 이러한 연결 리스트는 너무 길어서 순회할 수 없게 될 수 있다. 통상적으로, 사용자의 관심을 끄는 대부분의 수정들은 (예를 들어, "실행취소" 동작들의 경우) 이러한 연결 리스트의 끝에 있을 수 있다. 그렇지만, 이러한 관심의 수정들에 액세스하는 것은 연결 리스트 전체를 순회하는 것을 수반할 수 있으며, 그로써 상당한 성능 저하를 초래하게 된다. 이 상황에서, 수정 저장소는 수정 차분의 연결 리스트를 인식할 수 있으며, 따라서 차분들이 리스트를 통해 "후방으로" 이전의 초기 상태를 보는 대신에, 차분들이 "전방으로" 장래의 상태를 본다.
수정 저장소(406)가 로컬 브라우저에서 행해지는 수정들의 대부분 또는 그 전부를 표현하는 차분들을 저장할 수 있지만, 수정 저장소(406)는 이 수정들 전부를 네트워크(128)를 통해 서버에 보고하거나 보고하지 않을 수 있다. 예를 들어, 수정 차분들(704)의 전체 세트가 브라우저에서 로컬적으로 일어나는 경우, 수정 저장소(406)는 이 수정 차분들(706으로 나타냄)의 어떤 서브셋을 복제 관리자(402)에 보고할 수 있다. 이어서, 복제 관리자는, 504로 그대로 사용하는 바와 같이, 이 수정들을 서버로 전달할 수 있다. 보다 구체적으로는, 브라우저 내의 복제 관리자는, 브라우저 내에서 행해지는 사용자 상호작용들을 부당하게 방해하지 않기 위해, 이 수정들을 언제 서버로 전달할지를 결정할 수 있다. 궁극적으로, 주어진 브라우저에 있는 복제 관리자는 그 브라우저에서 사용자가 행한 전체 또는 누적 결과적 변경들을 서버로 전송할 수 있다. 브라우저에 있는 복제 관리자는 브라우저에서 행해지는 수정들 및 수정 차분들을 결합시켜, 셀에 대한 전체 또는 누적 변경들과 비슷한 결과적 수정(resulting revision)을 정의할 수 있고, 그로써 셀의 현재 상태를 설정할 수 있다. 이어서, 복제 관리자는 셀의 현재 상태를 서버에까지 전송할 수 있다.
도 7에서 수정들을 처리하는 브라우저측 구성요소들 및 데이터 흐름들을 기술하였으며, 이제부터 이 수정들을 처리하는 서버측 구성요소들 및 데이터 흐름들에 대해 설명한다. 이 설명은 이제부터 도 8을 사용하여 제공된다.
도 8은 브라우저들로부터 수정들을 수신하여 처리하는 서버측 구성요소들 및 데이터 흐름들(그 전체를 800으로 나타냄)을 나타낸 것이다. 제한하기 위한 것이 아니라 참조의 편의상, 도 8은 유사한 항목들을 가리키기 위해 이전의 도면들로부터의 어떤 참조 번호들을 그대로 사용할 수 있다.
도 8에 도시된 일례들에서, 예시적인 사용자들(126A 및 126N)은 특정의 셀들(802A 및 802N)에 대한 수정들(504A 및 504N)을 생성하기 위해 예시적인 브라우저들(124A 및 124N)과 상호작용할 수 있다. 이어서, 브라우저들(124A 및 124N)은 이 수정들을 네트워크(128)를 통해 협업적 클라이언트 서비스들(110)에 보고할 수 있다.
브라우저들로부터 이 수정들을 수신하면, 협업적 클라이언트 서비스들(110)은, 그 전체를 804로 나타낸 바와 같이, 이 수정들을 서버측 수정 저장소(예를 들어, 212)에 저장할 수 있다. 도 8은 단지 이 설명을 위해 2개의 브라우저들이 수정들을 전달하는 것을 나타내고 있지만, 이 설명의 구현들은 수정들을 협업적 클라이언트 서비스들에 보고하는 임의의 수의 브라우저들(124)을 포함할 수 있다.
도 2에서 상기한 바와 같이, 서버측 수정 저장소(212)는 임의의 수의 셀들의 수정들을 포함하고 있을 수 있으며, 이 셀들은 차례로 하나 이상의 개체 표현들(204)을 포함하고 있을 수 있다. 이 개체 표현들(204)은 셀 또는 개체에 대한 임의의 수정 통지들의 도착 이전에 그 셀 또는 개체의 상태를 나타내는 초기 수정(806)과 연관될 수 있다.
수정들(504)의 통지들이 다양한 브라우저들로부터 도착할 때, 이 통지들은 어느 셀들(각각 802A 및 802N으로 나타냄)이 수정되고 있는지를 알려줄 수 있다. 협업적 클라이언트 서비스들(110)이 이 통지들을 수신할 때, 이 서비스들은 수정 차분들(808)을 생성하여 서버측 상에 저장할 수 있다. 기능을 설명하면, 서버측에서 이 수정 차분들(808)은 브라우저측에서 기술된 수정 차분들과 유사하게 동작할 수 있다. 그렇지만, 유의할 점은, 서버측 수정 차분들이 브라우저측 수정 차분들과 아주 똑같을 수 있거나 그렇지 않을 수 있다.
도 8에서 브라우저들로부터 수정들을 수신하여 처리하는 서버측 구성요소들 및 데이터 흐름들에 대해 기술하였으며, 이제부터 서버측 구성요소들에 대해 보다 상세히 기술한다. 이 설명은 이제부터 도 9를 사용하여 제공된다.
도 9는 협업적 클라이언트 서비스들과 연관된 서버측 구성요소들(그 전체를 900으로 나타냄)을 나타낸 것이다. 제한하기 위한 것이 아니라 참조의 편의상, 도 9는 유사한 항목들을 가리키기 위해 이전의 도면들로부터의 어떤 참조 번호들을 그대로 사용할 수 있다. 예를 들어, 도 9는 협업적 클라이언트 서비스들(110)의 일례 및 네트워크(128)의 일례를 그대로 사용한다.
브라우저들로부터 통신들을 수신하고 이 통신들을 협업적 클라이언트 서비스들 내의 적절한 구성요소들로 보내는 인터페이스로서 웹 서비스(902)가 제공된다. 이 통신들은, 예를 들어, 주어진 내용 인스턴스(instance of content)에 관해 협업하는 각종의 서로 다른 브라우저들로부터 수신되는 수정들 또는 수정 차분들의 통지들을 포함할 수 있다. 이 통지들은 다양한 브라우저들로부터 오거나 및/또는 그 브라우저들로 갈 수 있다. 웹 서비스는 이 통신들을 네트워크(128)를 통해 전송하기에 적합한 프로토콜로부터 협업적 클라이언트 서비스들 내에서 처리하기에 더 적합한 내부 이진 프로토콜들(internal binary protocols)로 변환하는 어댑터들(904)을 제공할 수 있다.
웹 서비스는 수정들을 브라우저들로 전송하는, 수정들을 브라우저들로부터 수신하는, 기타 등등을 하는 메서드들 또는 응용 프로그램 인터페이스들(APIs)을 지원할 수 있다. 그에 부가하여, 이 API들은 주어진 브라우저가 주어진 페이지로부터 나갔으며(browsed away) 따라서 그 페이지 상의 임의의 셀들의 편집을 완료하였다는 것을 서버에 알려주는 메서드들을 포함할 수 있다.
저장 계층(storage layer)(906)은 웹 서비스 어댑터(904)를 통해 통신을 할 수 있고 서버측 수정 저장소(212)로의 및/또는 그로부터의 통신들을 추출할 수 있다. 저장 계층(906)은 또한 서버측 수정 저장소에 대한 인터페이스를 제공하는 저장 어댑터(storage adapter)(908)도 제공할 수 있다. 수정들이 다양한 브라우저들로부터 도착할 때, 저장 계층(906)은 이 수정들을 수정 저장소에 캐싱할 수 있다.
서버측 수정 저장소는 서로 다른 특성들을 갖는 서로 다른 저장 영역들 또는 캐시들을 포함할 수 있다. 예를 들어, 제1 저장 영역(910)은 보다 최근에 또 보다 빈번하게 액세스되어 수정되는 보다 작은 데이터 청크들(chunks of data)을 저장하도록 구성되어 있을 수 있다. 가능한 구현들을 제한하기 위한 것이 아니라 설명의 편의상, 도 9에서는 이러한 제1 저장 영역을 "핫(hot)" 저장 영역 또는 캐시라고 한다. 수정 저장소는 또한 덜 최근에 또 덜 빈번하게 액세스되어 수정되는 보다 큰 데이터 청크들을 저장하도록 구성되어 있는 제2 저장 영역 또는 캐시(912)도 포함할 수 있다. 가능한 구현들을 제한하기 위한 것이 아니라 설명의 편의상, 도 9에서는 이러한 제2 저장 영역을 "콜드(cold)" 저장 영역 또는 캐시라고 한다.
병합 계층(merge layer)(914) 및 관련 병합 엔진(merge engine)(916)은 저장 계층이 병합 기능들을 호출할 수 있게 해주는 그 인터페이스들 및 관련 메서드들이다. 예를 들어, 서로 다른 브라우저들이 주어진 내용에 대한 수정들을 협업적 클라이언트 서비스들로 전송할 때, 저장 계층은 대응하는 수정들 및/또는 수정 차분들을 캐시들(910 및 912)에 저장할 수 있다. 적절할 때, 저장 계층(906)은 이러한 다양한 수정들을 병합 또는 조정하여 브라우저들이 협업하고 있는 내용을 업데이트시키기 위해 병합 계층(914)을 호출할 수 있다. 그에 부가하여, 병합 계층(914)은 임의의 주어진 때에 협업적 클라이언트 서비스들을 제공하는 서버들이 얼마나 과부하 걸려 있는지 또는 얼마나 사용 중인지 등의 인자들에 기초하여 병합 엔진(916)을 언제 호출하여 실행할지를 결정할 수 있다.
이상의 처리에서, 저장 동작들은 병합 동작들에 대해 비동기적으로 된다. 통상적으로, 브라우저측에서, 수정 데이터는 고도로 직렬화될 수 있는 반면, 서버측에서 수정 데이터는 그처럼 직렬화되지 않도록 재구성되고 최적화될 수 있다. 따라서, 서버들에 의해 유지되는 수정 이력(revision history)이 브라우저들 상에서 변경들이 행해진 순서를 나타내는 선형 표현이거나 그렇지 않을 수 있다. 그 대신에, 수정 이력이 분기들 또는 기타 비선형 특성들을 포함할 수 있다.
통상적으로, 병합에서의 지연이 전체적인 사용자 경험에 과도하게 영향을 주지 않도록, 사용자들 및 브라우저들이 병합 프로세스의 상세를 알지 못한다. 달리 말하면, 사용자들은 병합들이 완료되기를 기다리지 않고 또는 심지어 병합들이 서버측에서 진행 중이라는 것을 알면서도 브라우저에서 계속하여 수정을 할 수 있다.
협업적 클라이언트 서비스들(110)은 도 9에 도시된 아키텍처를 사용하여 몇가지 기능들을 수행할 수 있다. 이 기능들이 다양한 브라우저들로 및 그들로부터 전송되는 데이터 페이로드를 최적화하는 것, 브라우저들로부터 발행된 명령들을 실행하기에 최상인 환경을 결정하는 것, 내용 및 셀들을 서버 상에 저장하는 것을 최적화하는 것, 다중사용자가 협업적 내용을 편집하는 것을 가능하게 해주는 것, 기타 등등을 포함할 수 있지만, 이들로 제한되는 것은 아니다. 이 설명은 이제부터 이 기능들 각각에 대한 추가적인 상세를 제공한다.
데이터 페이로드의 최적화
협업적 클라이언트 서비스들 하에서 협업하기 위해 문서 또는 파일을 열 때, 저장 계층(906)은 이 파일 또는 문서 내의 하나 이상의 적절한 페이지들에 대한 내용을 검색할 수 있다. 저장 계층은 서버측 수정 저장소로부터 이 페이지 또는 페이지들에 대한 데이터만을 가져오기할 수 있다. 이 가져오기는 핫 저장소(hot store)(예를 들어, 910)에서 먼저 이 페이지들을 찾도록 최적화될 수 있다. 3개의 요청된 페이지들이 핫 저장소에 있지 않는 경우, 이 가져오기는 점차적으로 콜드 저장소(예를 들어, 912)를 검색할 수 있다.
적절한 데이터가 수정 저장소로부터 가져오기되고, 서버 상의 프런트-엔드 캐시에 저장되며, 적절한 브라우저(예를 들어, 124)에까지 전송된다. 수신측 브라우저는 이 데이터를 브라우저측 수정 저장소(예를 들어, 306)에 저장하고, 이 데이터를 그래프 구조(예를 들어, 310)로 재생성 또는 리하이드레이션(rehydrate)할 수 있다. 주어진 사용자가 주어진 브라우저에서 내용을 수정할 때 또는 다른 사용자가 다른 브라우저에서 그 내용을 변경하는 경우, 협업적 클라이언트 서비스들은 이러한 변경들을 나타내는 수정들 및 수정 차분들을 발생할 수 있고 이 수정들을 그 내용에 관해 협업하는 다른 브라우저들로 전송할 수 있다.
브라우저측에서, 브라우저들은 브라우저측 수정 저장소에 있는 수정들 및 수정 차분들을 처리할 수 있고, 브라우저들은 수정 저장소로부터 그래프 구조에 대한 적절한 업데이트들을 생성한다. 서버측에서, 협업적 클라이언트 서비스들은 이 수정들 및 수정 차분들을 핫 저장소(예를 들어, 910)에 저장할 수 있다. 그 후에, 협업적 클라이언트 서비스들은 서로 다른 사용자들로부터 수신된 수정들 및 수정 차분들을 병합시킬 수 있다. 예를 들어, 클라이언트 서비스들은 다른 동작들을 부당하게 간섭하지 않도록(즉, "조용히") 이러한 다른 동작들과 비동기적으로 병합 동작들을 실행할 수 있다.
다른 사용자들 또는 브라우저들은 협업적 내용에 대해 행해진 모든 변경들을 서버에 요청할 수 있다. 이러한 경우들에, 서버는 프런트-엔드 서버들에 의해 유지되는 캐시들로부터 이 변경들을 검색할 수 있거나, 프런트-엔드 서버들은 백-엔드 서버로부터 이 변경들을 검색할 수 있다. 일반적으로, 협업적 클라이언트 서비스들은, 프런트-엔드 서버들이 프런트 엔드들이 이전에 가져오기하였던 데이터를 로컬적으로 저장할 수 있게 해주고, 백엔드 서버로 가지 않으면서, 이 데이터를 요청측 브라우저로 반환할 수 있게 해줌으로써, 기회주의적 핫-저장소 캐싱(opportunistic hot-store caching)을 제공할 수 있다. 협업적 클라이언트 서비스들은 또한 캐시로의 리디렉션을 제공할 수 있으며, 이 때 하나의 프런트-엔드 서버는 브라우저로부터의 요청을 다른 프런트-엔드 서버로 리디렉션할 수 있고, 이 경우 후자의 프런트-엔드 서버는 브라우저가 요청하고 있는 캐싱된 데이터를 포함하고 있다.
적절한 환경에서의 명령들의 실행
협업적 클라이언트 서비스들은, 서버와의 상호작용 또는 서버의 개입 없이, 브라우저에서 다수의 명령들을 실행할 수 있다. 브라우저는 DOM(예를 들어, 316)을 조작하는 것 및 그래프 구조(예를 들어, 310)에 대한 동작들을 수행하는 것의 조합들에 의해 이 명령들을 실행할 수 있다. 그렇지만, 어떤 명령들이 서버 상에서 실행될 수 있는데, 그 이유는 서버가 이 명령들을 실행하는 성능 용량을 제공할 수 있기 때문이고 또 서버 상에서 명령들을 실행하는 것이 코드(및 기밀 정보 및/또는 민감한 정보)를 원격 브라우저들로 다운로드하는 것을 수반하지 않기 때문이다.
그에 부가하여, 서버 상에서 실행되는 그 명령들은 서버의 "정상" 동작을 다른 방식으로 방해하지 않으면서 그렇게 할 수 있다. 예를 들어, 저장 계층(906)이 새로운 변경을 수신할 때, 저장 계층은 저장을 위해 그 변경을 서버측 수정 저장소(212)로 전달할 수 있다. 저장 계층은 또한 이 새로운 변경을 병합 계층(914)에 통지할 수 있다. 그렇지만, 이 통지와 비동기적으로, 병합 계층은, 적절한 경우, 이 새로운 내용을 병합하려고 시도할 수 있다. 이러한 비동기적인 동작은 서버가 너무 바빠서 다른 요청들을 처리할 수 없을 정도로 서버에 과부하가 걸릴 위험을 최소화시킬 수 있다. 이와 관련하여, 병합 계층은 프런트-엔드 서버가 병합에 전용할 충분한 자유 사이클을 갖는 경우에만 동작할 수 있다.
붙여넣기와 같은 명령들은 브라우저와 서버가 협동하여 실행될 수 있다. 브라우저는 충분한 붙여넣기 동작을 수행하는 데 관여된 처리가 너무 복잡하여 브라우저에서 로컬적으로 수행될 수 없다는 것을 검출하는 논리를 포함할 수 있으며, 그 대신에 이 동작을 수행하라고 서버에 요청할 수 있다. 다시 말하면, 서버 상에서 실행되는 코드는, 서버 상에서 수행되는 다른 동작들을 부당하게 방해하지 않기 위해, 이 붙여넣기 동작을 스케쥴링하여 수행할 수 있다.
서버 저장소
협업적 내용(예를 들어, 셀들)이 저장되어야 할 때, 이 내용은 브라우저로부터 프런트-엔드 서버로, 궁극적으로 저장 계층으로 이동될 수 있다. 저장 계층은 서버측 수정 저장소와 통신을 할 수 있고, 셀들을 2개의 서로 다른 장소에 저장할 수 있으며, 보다 최근에 행해진 비교적 작은 변경들은 보다 빠르고 보다 고가의 핫 저장소(예를 들어, 910)에 저장될 수 있고, 이것은, 보다 느리고 보다 저가의 콜드 저장소(예를 들어, 912)로부터 데이터를 검색할 필요없이, 이러한 작은 데이터 세트를 검색하여 다른 사용자들로 전달하는 것을 최적화한다. 수정들 또는 변경들이 메인 파일(main file)에 통합 또는 병합되면, 메인 파일은 콜드 저장소에 저장될 수 있다. 이것은 통상적으로 비교적 큰 메인 파일을 핫 저장소보다 저렴한 저장소에 저장함으로써 비용을 최적화한다.
브라우저들이 파일 내의 특정의 셀들을 요청할 때, 저장 계층 및 파일 제공자는 이 저장소들(예를 들어, 핫 저장소 및 콜드 저장소) 중 하나 또는 그 둘다로부터 요청된 수정들을 검색할 수 있고, 수정들을 통합된 데이터로서 브라우저들 및 나머지 서버측 구성요소들에 제공할 수 있다. 저장 계층은 또한, 내용 내의 어떤 노드들을 확장시키고 브라우저가 사용하지 않는 내용을 다운로드하지 않으면서, 서버들에 저장된 사용자 내용(user content)을 브라우저에서 사용가능한 내용으로 변환할 수 있다.
다중사용자 편집
이상에서 기술한 바와 같이, 협업적 클라이언트 서비스들에 의해 이용되는 데이터 모델은 수정들을 포함할 수 있다. 클라이언트 서비스들은 또한 명시적인 사용자 상호작용없이(즉, "배후에서") 이 수정들을 로드/저장할 수 있다. 이 방식은 사용자들로부터의 변경들을 자동으로 전파시켜 사용자 내용 및 수정들이 어떻게 공유되는지(즉, 통신선에 최소의 부담을 주는 것에 의함) 및 이러한 내용 및 수정들이 언제 공유되는지 둘다를 최적화시킬 수 있다. 이러한 방식으로, 협업적 클라이언트 서비스들이 다수의 사용자들이 주어진 내용에 관해 협업하고 있다는 것을 검출하는 경우, 협업적 클라이언트 서비스들은 주어진 사용자로부터의 변경들을 모든 다른 브라우저들에 훨씬 더 빠르게 동기화시킬 수 있다.
협업적 클라이언트 서비스들은 브라우저들 및 서버들이 데이터를 효율적으로 처리할 수 있도록 데이터 모델을 변환할 수 있다. 브라우저는 이어서 적절한 내용을 디스플레이 및 처리할 수 있다. 그에 부가하여, 협업적 클라이언트 서비스들은 전자 수첩 응용 프로그램(미국 워싱턴주 레드몬드 소재의 Microsoft Corporation로부터 입수가능한 OneNote™ 제품을 포함하지만, 이들로 제한되지 않음)과 통합될 수 있다. 예를 들어, 저장 계층은 수정들의 포맷을 전자 수첩 응용 프로그램과 호환되는 포맷으로 저장될 수 있도록 변경할 수 있다. 이러한 방식으로, 협업적 클라이언트 서비스들은 매끄럽게 리치 클라이언트들(rich clients)과 통합될 수 있고, 더 풍부한 사용자 경험을 제공하기 위해 전자 수첩 응용 프로그램(또는 다른 소프트웨어 제품 또는 응용 프로그램)에 의존하면서 널리 이용가능한 브라우저들을 이용할 수 있다.
본 명세서에 제공된 발명 대상이 컴퓨터의 구조적 특징들, 방법적 동작들 및 컴퓨터 판독가능 매체와 관련하여 기술되어 있지만, 첨부된 청구항들에 정의된 본 발명이 본 명세서에 기술된 특정의 특징들, 동작들 또는 매체들로 반드시 제한되는 것은 아니라는 것을 잘 알 것이다. 오히려, 특정의 특징들, 동작들 및 매체들은 청구항들을 구현하는 예시적인 형태로서 개시되어 있다.
상기한 발명 대상이 단지 예시로서 제공된 것이며 제한하는 것으로 해석되어서는 안된다. 도시되고 기술된 예시적인 실시예들 및 응용들을 따르지 않고 또 이하의 청구항들에 기술되어 있는 본 발명의 진정한 사상 및 범위를 벗어나지 않고, 본 명세서에 기술된 발명 대상에 다양한 수정 및 변경이 행해질 수 있다.

Claims (20)

  1. 웹-기반 다중사용자 협업을 위한 컴퓨터로 구현된 방법으로서,
    서버상의 문서를 복수의 셀들로서 모델링하는 단계,
    상기 복수의 셀들 중에서 복수의 사용자들 중 적어도 하나의 사용자에 대한 적어도 하나의 관심 셀을 식별하는 단계 - 상기 적어도 하나의 관심 셀은 상기 서버에 캐싱된 상기 문서의 일부를 포함함 -,
    상기 적어도 하나의 관심 셀을 식별하는 단계에 응답하여, 상기 적어도 하나의 관심 셀의 표현(representation)을 상기 적어도 하나의 사용자와 연관된 브라우저로 전송하는 단계,
    상기 적어도 하나의 관심 셀을 상기 적어도 하나의 사용자와 연관시키는 단계,
    상기 적어도 하나의 관심 셀과 상기 적어도 하나의 사용자 사이의 연관(association)을 저장하는 단계,
    상기 적어도 하나의 관심 셀에 대한 제1 수정을 획득하는 단계,
    상기 적어도 하나의 관심 셀과 상기 적어도 하나의 사용자 사이의 상기 연관에 기초하여, 상기 제1 수정이 상기 적어도 하나의 사용자와 연관된 상기 브라우저로 전송되어야 함을 판정하는 단계, 및
    상기 제1 수정의 표현을 상기 적어도 하나의 사용자와 연관된 상기 브라우저로 전송하는 단계
    를 포함하는 컴퓨터로 구현된 방법.
  2. 제1항에 있어서,
    제2 사용자가 상기 적어도 하나의 관심 셀에 대해 협업하고 있는지 판정하는 단계, 및
    상기 제2 사용자가 상기 적어도 하나의 관심 셀에 대해 협업하고 있다는 판정에 응답하여, 상기 제1 수정의 표현을 적어도 상기 제2 사용자에게 전송하는 단계
    를 더 포함하는 컴퓨터로 구현된 방법.
  3. 제1항에 있어서,
    상기 적어도 하나의 관심 셀에 대한 제2 수정의 표현을 상기 브라우저로부터 수신하는 단계, 및
    상기 적어도 하나의 관심 셀에 상기 제1 수정 및 상기 제2 수정을 병합하는 단계
    를 더 포함하는 컴퓨터로 구현된 방법.
  4. 제1항에 있어서,
    캐시로부터 상기 적어도 하나의 관심 셀을 검색하는 단계, 및
    상기 적어도 하나의 관심 셀의 표현을 상기 캐시로부터 적어도 제2 사용자와 연관된 제2 브라우저로 전송하는 단계
    를 더 포함하는 컴퓨터로 구현된 방법.
  5. 제1항에 있어서,
    상기 적어도 하나의 관심 셀에 관한 요청을 수신하는 단계, 및
    상기 요청을 캐시로 리디렉팅(redirecting)하는 단계
    를 더 포함하는 컴퓨터로 구현된 방법.
  6. 프로세서 및 상기 프로세서와 통신가능하게 결합된 메모리를 포함하는 장치로서, 상기 메모리에 저장된 명령어들은 상기 프로세서에 의해 실행시 상기 장치로 하여금,
    복수의 사용자들 중 적어도 하나의 사용자와 연관된 브라우저로 문서의 일부의 표현을 전송하게 하고,
    상기 브라우저로부터 상기 문서의 상기 일부에 대한 적어도 하나의 수정을 수신하게 하며,
    지정된 시간 주기 이내에 액세스되고 수정되는 상기 문서와 연관된 데이터를 저장하도록 구성된 서버의 제1 저장 영역에, 상기 문서의 상기 일부를 저장하게 하고,
    상기 지정된 시간 주기 이후에 액세스되고 수정되는 상기 문서와 연관된 데이터를 저장하도록 구성된 상기 서버의 제2 저장 영역에, 상기 문서의 나머지 부분을 저장하게 하는
    프로세서 및 메모리를 포함하는 장치.
  7. 제6항에 있어서,
    상기 메모리는
    상기 문서의 상기 일부를 클라이언트 애플리케이션과 연관된 적어도 하나의 포맷으로 또는 상기 클라이언트 애플리케이션과 연관된 적어도 하나의 포맷을 상기 문서의 상기 일부로 변환시키기 위한 명령어를 더 저장하는
    프로세서 및 메모리를 포함하는 장치.
  8. 제1항에 있어서,
    상기 복수의 사용자들 중 상기 적어도 하나의 사용자에 대한 상기 적어도 하나의 관심 셀을 식별하는 단계는
    상기 문서의 첫 번째 페이지의 콘텐츠와 함께 상기 복수의 사용자들에게 상기 문서의 페이지 이름을 전송하는 단계, 및
    상기 복수의 사용자들 중 상기 적어도 하나의 사용자로부터 상기 문서의 페이지 이름의 선택을 수신하는 단계
    를 포함하는
    컴퓨터로 구현된 방법.
  9. 제1항에 있어서,
    상기 적어도 하나의 관심 셀의 이전 및 이후에 각각 존재하는 복수의 앞으로 보기 페이지들(look-ahead pages) 및 복수의 뒤로 보기 페이지들(look-behind pages)을 제공하는 단계
    를 더 포함하는 컴퓨터로 구현된 방법.
  10. 제1항에 있어서,
    상기 문서를 복수의 셀들로서 모델링하는 단계는
    상기 문서를 그래프 데이터 구조로서 모델링하는 단계, 및
    상기 문서의 의미 모델(semantic model)을 제공하는 단계 - 상기 의미 모델은 상기 문서의 계층구조를 제공함 -
    를 더 포함하는
    컴퓨터로 구현된 방법.
  11. 제10항에 있어서,
    상기 그래프 데이터 구조는 상기 복수의 셀들을 표현하는 하나 이상의 유형의 노드, 속성 집합 및 다른 요소를 포함하는 유향 비순환 그래프(directed acyclic graph)를 포함하는
    컴퓨터로 구현된 방법.
  12. 제11항에 있어서,
    상기 복수의 셀들 중 상기 적어도 하나의 관심 셀은 상기 그래프 데이터 구조의 상기 유향 비순환 그래프의 적어도 하나의 노드로서 표현되는
    컴퓨터로 구현된 방법.
  13. 웹-기반 다중사용자 협업을 위한 시스템으로서,
    프로세서, 및
    실행가능 명령어들을 저장하고 있는 컴퓨터-판독가능 저장 매체
    를 포함하되,
    상기 명령어들은 상기 프로세서에 의해 실행될 경우 상기 프로세서로 하여금,
    서버상의 문서를 복수의 셀들로서 모델링하게 하고,
    상기 복수의 셀들 중에서 복수의 사용자들 중 적어도 하나의 사용자에 대한 적어도 하나의 관심 셀을 식별하게 하며 - 상기 적어도 하나의 관심 셀은 상기 서버에 캐싱된 상기 문서의 일부를 포함함 -,
    상기 적어도 하나의 관심 셀을 식별하는 것에 응답하여, 상기 적어도 하나의 관심 셀의 표현(representation)을 상기 적어도 하나의 사용자와 연관된 브라우저로 전송하게 하고,
    상기 적어도 하나의 관심 셀을 상기 적어도 하나의 사용자와 연관시키게 하며,
    상기 적어도 하나의 관심 셀과 상기 적어도 하나의 사용자 사이의 연관(association)을 저장하게 하고,
    상기 적어도 하나의 관심 셀에 대한 제1 수정을 획득하게 하며,
    상기 적어도 하나의 관심 셀과 상기 적어도 하나의 사용자 사이의 상기 연관에 기초하여, 상기 제1 수정이 상기 적어도 하나의 사용자와 연관된 상기 브라우저로 전송되어야 할지 판정하게 하고,
    상기 제1 수정의 표현을 상기 적어도 하나의 사용자와 연관된 상기 브라우저로 전송하게 하는
    웹-기반 다중사용자 협업을 위한 시스템.
  14. 제13항에 있어서,
    상기 명령어들은 또한 상기 프로세서에 의해 실행될 경우 상기 프로세서로 하여금,
    제2 사용자가 상기 적어도 하나의 관심 셀에 대해 협업하고 있는지 판정하게 하고,
    상기 제2 사용자가 상기 적어도 하나의 관심 셀에 대해 협업하고 있다는 판정에 응답하여, 상기 제1 수정의 표현을 적어도 상기 제2 사용자에게 전송하게 하는
    웹-기반 다중사용자 협업을 위한 시스템.
  15. 제13항에 있어서,
    상기 명령어들은 또한 상기 프로세서에 의해 실행될 경우 상기 프로세서로 하여금,
    캐시로부터 상기 적어도 하나의 관심 셀을 검색하게 하고,
    상기 적어도 하나의 관심 셀의 표현을 상기 캐시로부터 적어도 제2 사용자와 연관된 제2 브라우저로 전송하게 하는
    웹-기반 다중사용자 협업을 위한 시스템.
  16. 제13항에 있어서,
    상기 명령어들은 또한 상기 프로세서에 의해 실행될 경우 상기 프로세서로 하여금,
    상기 적어도 하나의 관심 셀에 관한 요청을 수신하게 하고,
    상기 요청을 캐시로 리디렉팅(redirecting)하게 하는
    웹-기반 다중사용자 협업을 위한 시스템.
  17. 제13항에 있어서,
    상기 복수의 사용자들 중 상기 적어도 하나의 사용자에 대한 상기 적어도 하나의 관심 셀을 식별하는 것은
    상기 문서의 첫 번째 페이지의 콘텐츠와 함께 상기 복수의 사용자들에게 상기 문서의 페이지 이름을 전송하는 것과,
    상기 복수의 사용자들 중 상기 적어도 하나의 사용자로부터 상기 문서의 페이지 이름의 선택을 수신하는 것
    을 포함하는
    웹-기반 다중사용자 협업을 위한 시스템.
  18. 삭제
  19. 삭제
  20. 삭제
KR1020107022864A 2008-03-14 2009-01-30 웹-기반 다중사용자 협업 KR101584828B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/048,615 US9436927B2 (en) 2008-03-14 2008-03-14 Web-based multiuser collaboration
US12/048,615 2008-03-14

Publications (2)

Publication Number Publication Date
KR20110000655A KR20110000655A (ko) 2011-01-04
KR101584828B1 true KR101584828B1 (ko) 2016-01-12

Family

ID=41064352

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107022864A KR101584828B1 (ko) 2008-03-14 2009-01-30 웹-기반 다중사용자 협업

Country Status (15)

Country Link
US (1) US9436927B2 (ko)
EP (1) EP2266048B1 (ko)
JP (1) JP5611059B2 (ko)
KR (1) KR101584828B1 (ko)
CN (1) CN101971163A (ko)
AU (1) AU2009223346B2 (ko)
BR (1) BRPI0908188A2 (ko)
CA (1) CA2717347C (ko)
IL (1) IL207620A (ko)
MX (1) MX339987B (ko)
MY (1) MY155755A (ko)
RU (1) RU2507567C2 (ko)
SG (1) SG188886A1 (ko)
WO (1) WO2009114218A2 (ko)
ZA (1) ZA201005835B (ko)

Families Citing this family (133)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8326814B2 (en) 2007-12-05 2012-12-04 Box, Inc. Web-based file management system and service
KR20100121690A (ko) 2008-03-05 2010-11-18 이베이 인크. 이미지 인식 서비스 방법, 시스템 및 컴퓨터 판독가능한 매체
US9495386B2 (en) 2008-03-05 2016-11-15 Ebay Inc. Identification of items depicted in images
US8078957B2 (en) 2008-05-02 2011-12-13 Microsoft Corporation Document synchronization over stateless protocols
US20090307607A1 (en) * 2008-06-10 2009-12-10 Microsoft Corporation Digital Notes
US9547589B2 (en) * 2008-06-18 2017-01-17 Super Talent Technology, Corp. Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive
US9548108B2 (en) * 2008-06-18 2017-01-17 Super Talent Technology, Corp. Virtual memory device (VMD) application/driver for enhanced flash endurance
US8639762B2 (en) * 2009-03-23 2014-01-28 Google Inc. Providing access to a conversation in a hosted conversation system
US9665413B2 (en) * 2009-05-01 2017-05-30 Microsoft Technology Licensing, Llc Shared job scheduling in electronic notebook
US9021386B1 (en) 2009-05-28 2015-04-28 Google Inc. Enhanced user interface scrolling system
US8527602B1 (en) 2009-05-28 2013-09-03 Google Inc. Content upload system with preview and user demand based upload prioritization
US9602444B2 (en) 2009-05-28 2017-03-21 Google Inc. Participant suggestion system
US8219526B2 (en) 2009-06-05 2012-07-10 Microsoft Corporation Synchronizing file partitions utilizing a server storage model
US9164577B2 (en) 2009-12-22 2015-10-20 Ebay Inc. Augmented reality system, method, and apparatus for displaying an item image in a contextual environment
US9367123B2 (en) * 2010-01-29 2016-06-14 International Business Machines Corporation Systems and methods for collaborative browsing on the telecom web
US20110252339A1 (en) 2010-04-12 2011-10-13 Google Inc. Collaborative Cursors in a Hosted Word Processor
CA2795917A1 (en) 2010-04-12 2011-10-20 Google Inc. Real-time collaboration in a hosted word processor
US8510399B1 (en) 2010-05-18 2013-08-13 Google Inc. Automated participants for hosted conversations
US9026935B1 (en) 2010-05-28 2015-05-05 Google Inc. Application user interface with an interactive overlay
US9380011B2 (en) 2010-05-28 2016-06-28 Google Inc. Participant-specific markup
US10127606B2 (en) 2010-10-13 2018-11-13 Ebay Inc. Augmented reality system and method for visualizing an item
WO2012099617A1 (en) 2011-01-20 2012-07-26 Box.Net, Inc. Real time notification of activities that occur in a web-based collaboration environment
US9858552B2 (en) * 2011-06-15 2018-01-02 Sap Ag Systems and methods for augmenting physical media from multiple locations
US9015601B2 (en) 2011-06-21 2015-04-21 Box, Inc. Batch uploading of content to a web-based collaboration environment
US9063912B2 (en) 2011-06-22 2015-06-23 Box, Inc. Multimedia content preview rendering in a cloud content management system
US9652741B2 (en) 2011-07-08 2017-05-16 Box, Inc. Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof
WO2013009328A2 (en) 2011-07-08 2013-01-17 Box.Net, Inc. Collaboration sessions in a workspace on cloud-based content management system
US9336137B2 (en) 2011-09-02 2016-05-10 Google Inc. System and method for performing data management in a collaborative development environment
US20130076773A1 (en) * 2011-09-22 2013-03-28 National Tsing Hua University Nonlinear revision control system and method for images
US9197718B2 (en) 2011-09-23 2015-11-24 Box, Inc. Central management and control of user-contributed content in a web-based collaboration environment and management console thereof
US8515902B2 (en) 2011-10-14 2013-08-20 Box, Inc. Automatic and semi-automatic tagging features of work items in a shared workspace for metadata tracking in a cloud-based content management system with selective or optional user contribution
US9098474B2 (en) 2011-10-26 2015-08-04 Box, Inc. Preview pre-generation based on heuristics and algorithmic prediction/assessment of predicted user behavior for enhancement of user experience
WO2013062599A1 (en) 2011-10-26 2013-05-02 Box, Inc. Enhanced multimedia content preview rendering in a cloud content management system
US9449342B2 (en) 2011-10-27 2016-09-20 Ebay Inc. System and method for visualization of items in an environment using augmented reality
US8738706B1 (en) * 2011-11-16 2014-05-27 Google Inc. Systems and methods for collaborative document editing
US8990307B2 (en) * 2011-11-16 2015-03-24 Box, Inc. Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform
GB2500152A (en) 2011-11-29 2013-09-11 Box Inc Mobile platform file and folder selection functionalities for offline access and synchronization
WO2013090908A1 (en) * 2011-12-16 2013-06-20 Charles Joseph Matthews Methods, systems, devices and computer program products for collaborative selection
US9019123B2 (en) 2011-12-22 2015-04-28 Box, Inc. Health check services for web-based collaboration environments
US9904435B2 (en) 2012-01-06 2018-02-27 Box, Inc. System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment
US11232481B2 (en) 2012-01-30 2022-01-25 Box, Inc. Extended applications of multimedia content previews in the cloud-based content management system
US9965745B2 (en) 2012-02-24 2018-05-08 Box, Inc. System and method for promoting enterprise adoption of a web-based collaboration environment
US9195636B2 (en) 2012-03-07 2015-11-24 Box, Inc. Universal file type preview for mobile devices
US9054919B2 (en) 2012-04-05 2015-06-09 Box, Inc. Device pinning capability for enterprise cloud service and storage accounts
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US9396216B2 (en) 2012-05-04 2016-07-19 Box, Inc. Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform
US9691051B2 (en) 2012-05-21 2017-06-27 Box, Inc. Security enhancement through application access control
US8914900B2 (en) 2012-05-23 2014-12-16 Box, Inc. Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform
US9027108B2 (en) 2012-05-23 2015-05-05 Box, Inc. Systems and methods for secure file portability between mobile applications on a mobile device
US20130326323A1 (en) 2012-05-30 2013-12-05 Google Inc. Systems and methods for displaying contextual revision history
US10846766B2 (en) 2012-06-29 2020-11-24 Ebay Inc. Contextual menus based on image recognition
US9021099B2 (en) 2012-07-03 2015-04-28 Box, Inc. Load balancing secure FTP connections among multiple FTP servers
GB2505072A (en) 2012-07-06 2014-02-19 Box Inc Identifying users and collaborators as search results in a cloud-based system
US9792320B2 (en) 2012-07-06 2017-10-17 Box, Inc. System and method for performing shard migration to support functions of a cloud-based service
US9712510B2 (en) 2012-07-06 2017-07-18 Box, Inc. Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform
US9237170B2 (en) 2012-07-19 2016-01-12 Box, Inc. Data loss prevention (DLP) methods and architectures by a cloud service
US9794256B2 (en) 2012-07-30 2017-10-17 Box, Inc. System and method for advanced control tools for administrators in a cloud-based service
US8868574B2 (en) 2012-07-30 2014-10-21 Box, Inc. System and method for advanced search and filtering mechanisms for enterprise administrators in a cloud-based environment
US9369520B2 (en) 2012-08-19 2016-06-14 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US8745267B2 (en) 2012-08-19 2014-06-03 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US9558202B2 (en) 2012-08-27 2017-01-31 Box, Inc. Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment
US9135462B2 (en) 2012-08-29 2015-09-15 Box, Inc. Upload and download streaming encryption to/from a cloud-based platform
US9311071B2 (en) 2012-09-06 2016-04-12 Box, Inc. Force upgrade of a mobile application via a server side configuration file
US9195519B2 (en) 2012-09-06 2015-11-24 Box, Inc. Disabling the self-referential appearance of a mobile application in an intent via a background registration
US9117087B2 (en) 2012-09-06 2015-08-25 Box, Inc. System and method for creating a secure channel for inter-application communication based on intents
US9292833B2 (en) 2012-09-14 2016-03-22 Box, Inc. Batching notifications of activities that occur in a web-based collaboration environment
US10200256B2 (en) 2012-09-17 2019-02-05 Box, Inc. System and method of a manipulative handle in an interactive mobile user interface
US9553758B2 (en) 2012-09-18 2017-01-24 Box, Inc. Sandboxing individual applications to specific user folders in a cloud-based service
US10915492B2 (en) 2012-09-19 2021-02-09 Box, Inc. Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction
WO2014051577A1 (en) * 2012-09-27 2014-04-03 Hewlett-Packard Development Company, L. P. Sharing content between collocated mobile devices in an ad-hoc private social group
US9959420B2 (en) 2012-10-02 2018-05-01 Box, Inc. System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment
US9705967B2 (en) 2012-10-04 2017-07-11 Box, Inc. Corporate user discovery and identification of recommended collaborators in a cloud platform
US9495364B2 (en) 2012-10-04 2016-11-15 Box, Inc. Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform
US9665349B2 (en) 2012-10-05 2017-05-30 Box, Inc. System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform
US9756022B2 (en) 2014-08-29 2017-09-05 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US9628268B2 (en) 2012-10-17 2017-04-18 Box, Inc. Remote key management in a cloud-based environment
US9529785B2 (en) 2012-11-27 2016-12-27 Google Inc. Detecting relationships between edits and acting on a subset of edits
US10235383B2 (en) 2012-12-19 2019-03-19 Box, Inc. Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment
US9396245B2 (en) 2013-01-02 2016-07-19 Box, Inc. Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US10956667B2 (en) 2013-01-07 2021-03-23 Google Llc Operational transformations proxy for thin clients
US9462037B2 (en) 2013-01-07 2016-10-04 Google Inc. Dynamically sizing chunks in a partially loaded spreadsheet model
US9953036B2 (en) 2013-01-09 2018-04-24 Box, Inc. File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
CN104885073B (zh) * 2013-01-11 2017-10-24 奴格里夫有限公司 用于生成数字版本的系统和方法
EP2755151A3 (en) 2013-01-11 2014-09-24 Box, Inc. Functionalities, features and user interface of a synchronization client to a cloud-based environment
US9311622B2 (en) 2013-01-15 2016-04-12 Google Inc. Resolving mutations in a partially-loaded spreadsheet model
US10599671B2 (en) 2013-01-17 2020-03-24 Box, Inc. Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
US10846074B2 (en) 2013-05-10 2020-11-24 Box, Inc. Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client
US10725968B2 (en) 2013-05-10 2020-07-28 Box, Inc. Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform
GB2515192B (en) 2013-06-13 2016-12-14 Box Inc Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US9805050B2 (en) 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US10229134B2 (en) 2013-06-25 2019-03-12 Box, Inc. Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform
US9535924B2 (en) 2013-07-30 2017-01-03 Box, Inc. Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9971752B2 (en) 2013-08-19 2018-05-15 Google Llc Systems and methods for resolving privileged edits within suggested edits
GB2518298A (en) 2013-09-13 2015-03-18 Box Inc High-availability architecture for a cloud-based concurrent-access collaboration platform
US10509527B2 (en) 2013-09-13 2019-12-17 Box, Inc. Systems and methods for configuring event-based automation in cloud-based collaboration platforms
US9704137B2 (en) 2013-09-13 2017-07-11 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
US9535909B2 (en) 2013-09-13 2017-01-03 Box, Inc. Configurable event-based automation architecture for cloud-based collaboration platforms
US9213684B2 (en) 2013-09-13 2015-12-15 Box, Inc. System and method for rendering document in web browser or mobile device regardless of third-party plug-in software
US8892679B1 (en) 2013-09-13 2014-11-18 Box, Inc. Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform
US9348803B2 (en) 2013-10-22 2016-05-24 Google Inc. Systems and methods for providing just-in-time preview of suggestion resolutions
US10866931B2 (en) 2013-10-22 2020-12-15 Box, Inc. Desktop application for accessing a cloud collaboration platform
US11336648B2 (en) 2013-11-11 2022-05-17 Amazon Technologies, Inc. Document management and collaboration system
US10599753B1 (en) 2013-11-11 2020-03-24 Amazon Technologies, Inc. Document version control in collaborative environment
US9542391B1 (en) 2013-11-11 2017-01-10 Amazon Technologies, Inc. Processing service requests for non-transactional databases
US10540404B1 (en) 2014-02-07 2020-01-21 Amazon Technologies, Inc. Forming a document collection in a document management and collaboration system
US9690785B1 (en) * 2014-01-30 2017-06-27 Google Inc. Change notification routing based on original authorship of modified region
US10691877B1 (en) 2014-02-07 2020-06-23 Amazon Technologies, Inc. Homogenous insertion of interactions into documents
US9928241B2 (en) * 2014-03-18 2018-03-27 Smartsheet Inc. Systems and methods for analyzing electronic communications to dynamically improve efficiency and visualization of collaborative work environments
DE102014208454A1 (de) * 2014-05-06 2015-11-12 Siemens Aktiengesellschaft Wärmespeicher
US10530854B2 (en) 2014-05-30 2020-01-07 Box, Inc. Synchronization of permissioned content in cloud-based environments
US9602514B2 (en) 2014-06-16 2017-03-21 Box, Inc. Enterprise mobility management and verification of a managed application by a content provider
US9894119B2 (en) 2014-08-29 2018-02-13 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US10574442B2 (en) 2014-08-29 2020-02-25 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US10038731B2 (en) 2014-08-29 2018-07-31 Box, Inc. Managing flow-based interactions with cloud-based shared content
US9811241B2 (en) 2014-09-17 2017-11-07 International Business Machines Corporation Shared inter-operational control among multiple computing devices
US9807073B1 (en) 2014-09-29 2017-10-31 Amazon Technologies, Inc. Access to documents in a document management and collaboration system
CN104615420A (zh) * 2014-12-29 2015-05-13 芜湖乐锐思信息咨询有限公司 一种产品协作开发系统
CN104536705A (zh) * 2015-01-19 2015-04-22 浪潮电子信息产业股份有限公司 一种高容量低功耗冷存储设计方法
KR101701110B1 (ko) * 2016-03-11 2017-02-13 주식회사 인프라웨어 공동 편집 문서를 공유하는 방법 및 장치
WO2016171401A1 (ko) * 2015-04-20 2016-10-27 주식회사 인프라웨어 공동 편집 문서를 공유하는 방법 및 장치
CN106570045B (zh) * 2015-10-13 2020-12-08 腾讯科技(深圳)有限公司 一种数据操作控制方法及其系统、用户终端
US11775136B2 (en) * 2016-04-27 2023-10-03 Coda Project, Inc. Conditional formatting
US20180025084A1 (en) * 2016-07-19 2018-01-25 Microsoft Technology Licensing, Llc Automatic recommendations for content collaboration
US10404765B2 (en) * 2016-11-01 2019-09-03 Microsoft Technology Licensing, Llc Re-homing embedded web content via cross-iframe signaling
US10740553B2 (en) * 2017-04-17 2020-08-11 Microsoft Technology Licensing, Llc Collaborative review workflow graph
US10303420B2 (en) * 2017-05-02 2019-05-28 Microsoft Technology Licensing, Llc Proactive staged distribution of document activity indicators
RU2661327C1 (ru) * 2017-10-04 2018-07-13 Общество с ограниченной ответственностью "Электронный архив" Способ обеспечения конфиденциальности при поточной операторской электронной обработке бумажных документов и программное обеспечение для его реализации
CN108683694B (zh) * 2018-03-22 2021-09-14 厦门欣旅通科技有限公司 一种信息协同处理方法、系统及服务器
KR102087280B1 (ko) * 2018-06-27 2020-03-10 주식회사 한글과컴퓨터 편집 명령을 포함하는 메시지에 기초하여 전자 문서를 편집하는 서버 및 그 동작 방법
CN109753620B (zh) * 2018-12-27 2021-02-12 永中软件股份有限公司 网页文档处理方法和系统
US11106823B1 (en) 2019-01-18 2021-08-31 Pitchly, Inc. System and method for generating reversible anonymized record identifiers from a remote data system
US11328238B2 (en) * 2019-04-01 2022-05-10 Microsoft Technology Licensing, Llc Preemptively surfacing relevant content within email
US11645455B2 (en) * 2019-04-08 2023-05-09 Google Llc Tracking attribution of content in an online collaborative electronic document

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020107994A1 (en) 1999-12-09 2002-08-08 Rickards William S. Collaboration engine: adding collaboration functionality to computer software
JP2005018791A (ja) 2003-06-27 2005-01-20 Microsoft Corp 共同作業データを共有文書のコンテキスト内から閲覧し管理するための方法および装置
US20080059539A1 (en) 2006-08-08 2008-03-06 Richard Chin Document Collaboration System and Method

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671428A (en) * 1991-08-28 1997-09-23 Kabushiki Kaisha Toshiba Collaborative document processing system with version and comment management
US5890177A (en) * 1996-04-24 1999-03-30 International Business Machines Corporation Method and apparatus for consolidating edits made by multiple editors working on multiple document copies
US6233600B1 (en) * 1997-07-15 2001-05-15 Eroom Technology, Inc. Method and system for providing a networked collaborative work environment
US6516339B1 (en) * 1999-08-18 2003-02-04 International Business Machines Corporation High performance client/server editor
US6189009B1 (en) 1999-08-27 2001-02-13 The Voice.Com, Inc. System and method for integrating paper-based business documents with computer-readable data entered via a computer network
WO2002017115A2 (en) * 2000-08-21 2002-02-28 Thoughtslinger Corporation Simultaneous multi-user document editing system
JP3943824B2 (ja) 2000-10-31 2007-07-11 株式会社東芝 情報管理方法および情報管理装置
US6907565B1 (en) * 2000-12-13 2005-06-14 Cisco Technology, Inc. Web-based output writer and editor
US20040205541A1 (en) * 2001-08-07 2004-10-14 D'amico Mario Web browser with annotation capability
US20030105816A1 (en) * 2001-08-20 2003-06-05 Dinkar Goswami System and method for real-time multi-directional file-based data streaming editor
US7725490B2 (en) * 2001-11-16 2010-05-25 Crucian Global Services, Inc. Collaborative file access management system
JP4017101B2 (ja) 2002-03-19 2007-12-05 株式会社リコー 電子会議システム
US20030233621A1 (en) * 2002-06-13 2003-12-18 International Business Machines Corporation Editor for smart version control
US7171618B2 (en) * 2003-07-30 2007-01-30 Xerox Corporation Multi-versioned documents and method for creation and use thereof
US20050044145A1 (en) * 2003-08-20 2005-02-24 International Business Machines Corporation Collaboration method and system
US20050131926A1 (en) * 2003-12-10 2005-06-16 Siemens Corporate Research Inc. Method of hybrid searching for extensible markup language (XML) documents
US7233951B1 (en) * 2004-02-18 2007-06-19 Microsoft Corporation Spreadsheet grid-like control for a web-based collaboration system
CN100458774C (zh) * 2004-11-29 2009-02-04 国际商业机器公司 文档编辑器及文档编辑方法
WO2007082166A2 (en) 2006-01-05 2007-07-19 Eyespot Corporation System and methods for distributed edit processing in an online video editing system
US7774703B2 (en) * 2006-02-09 2010-08-10 Microsoft Corporation Virtual shadow awareness for multi-user editors
US7917848B2 (en) * 2006-06-14 2011-03-29 Family Learn LLC Online publishing tools
US8850332B2 (en) * 2006-12-28 2014-09-30 International Business Machines Corporation Object selection in web page authoring
US9298815B2 (en) * 2008-02-22 2016-03-29 Accenture Global Services Limited System for providing an interface for collaborative innovation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020107994A1 (en) 1999-12-09 2002-08-08 Rickards William S. Collaboration engine: adding collaboration functionality to computer software
JP2005018791A (ja) 2003-06-27 2005-01-20 Microsoft Corp 共同作業データを共有文書のコンテキスト内から閲覧し管理するための方法および装置
US20080059539A1 (en) 2006-08-08 2008-03-06 Richard Chin Document Collaboration System and Method

Also Published As

Publication number Publication date
WO2009114218A2 (en) 2009-09-17
WO2009114218A3 (en) 2009-11-05
IL207620A0 (en) 2010-12-30
US9436927B2 (en) 2016-09-06
IL207620A (en) 2015-01-29
AU2009223346A1 (en) 2009-09-17
ZA201005835B (en) 2011-10-26
MY155755A (en) 2015-11-30
EP2266048A4 (en) 2013-01-02
AU2009223346B2 (en) 2014-02-20
CA2717347A1 (en) 2009-09-17
MX339987B (es) 2016-06-17
MX2010009893A (es) 2010-10-15
BRPI0908188A2 (pt) 2015-09-29
EP2266048B1 (en) 2018-05-16
SG188886A1 (en) 2013-04-30
JP5611059B2 (ja) 2014-10-22
JP2011517809A (ja) 2011-06-16
CA2717347C (en) 2017-08-29
RU2507567C2 (ru) 2014-02-20
KR20110000655A (ko) 2011-01-04
CN101971163A (zh) 2011-02-09
EP2266048A2 (en) 2010-12-29
RU2010137977A (ru) 2012-03-20
US20090235181A1 (en) 2009-09-17

Similar Documents

Publication Publication Date Title
KR101584828B1 (ko) 웹-기반 다중사용자 협업
US11782949B2 (en) Violation resolution in client synchronization
US10803016B2 (en) Predictive models of file access patterns by application and file type
US8234372B2 (en) Writing a file to a cloud storage solution
JP5369116B2 (ja) 構造化されたデータ要素にアクセスして更新するためのマルチクライアントのコラボレーション
US9086914B2 (en) System and method for reducing startup cost of a software application
KR101919180B1 (ko) 웹 기반 이메일 시스템에서의 대화 구조의 동기화 기법
US20110276538A1 (en) Cloud storage solution for reading and writing files
US20110276622A1 (en) Reading a file from a cloud storage solution
US20190205056A1 (en) Transparent data movement between a private cloud and storage ecosystem and another storage system
CN104573068A (zh) 一种基于大数据的信息处理方法
US20110264759A1 (en) Optimized caching for large data requests
KR20140038991A (ko) 가장 최근에 사용된 문서 목록들의 자동 동기화
CN111177159B (zh) 一种数据处理的系统、方法和数据更新设备
US20120224482A1 (en) Credit feedback system for parallel data flow control
CN105989065B (zh) 一种闪拍数据处理方法及系统
CN109284428B (zh) 数据处理方法、装置及存储介质
CN112783887A (zh) 一种基于数据仓库的数据处理方法及装置
US20100211573A1 (en) Information processing unit and information processing system
US20190197186A1 (en) Computer-implemented methods, systems comprising computer-readable media, and electronic devices for automated transcode lifecycle buffering
US10296580B1 (en) Delivering parsed content items
CN113961298A (zh) 一种页面切换方法、装置、设备及介质
CN1531694A (zh) 在因特网上的动态页面生成器上提供消息公布的方法和系统
KR101345802B1 (ko) 룰 데이터 처리 시스템 및 그 방법
Carneiro Jr et al. Optimizing Your APIs

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191217

Year of fee payment: 5