RU2507567C2 - Многопользовательское сетевое сотрудничество - Google Patents

Многопользовательское сетевое сотрудничество Download PDF

Info

Publication number
RU2507567C2
RU2507567C2 RU2010137977/08A RU2010137977A RU2507567C2 RU 2507567 C2 RU2507567 C2 RU 2507567C2 RU 2010137977/08 A RU2010137977/08 A RU 2010137977/08A RU 2010137977 A RU2010137977 A RU 2010137977A RU 2507567 C2 RU2507567 C2 RU 2507567C2
Authority
RU
Russia
Prior art keywords
document
browser
cell
interest
revision
Prior art date
Application number
RU2010137977/08A
Other languages
English (en)
Other versions
RU2010137977A (ru
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 RU2010137977A publication Critical patent/RU2010137977A/ru
Application granted granted Critical
Publication of RU2507567C2 publication Critical patent/RU2507567C2/ru

Links

Images

Classifications

    • 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
    • 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
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Data Mining & Analysis (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Abstract

Изобретение относится к области многопользовательского сетевого сотрудничества. Техническим результатом является повышение эффективности обработки документов. Раскрыты способы, которые позволяют пользователям дистанционно сотрудничать по поводу документов с использованием соответствующих браузеров. Эти способы предусматривают передачу представлений фрагментов данного документа браузерам и связывание фрагментов документа с конкретными пользователями. Браузеры могут принимать представления команд, обеспеченные пользователями, и могут определять, выполнять ли команды на браузере. Способы также могут включать в себя прием от браузеров ревизий в отношении фрагментов документа и сохранение этих фрагментов документа в областях хранения, которые приспособлены для сохранения контента, который был изменен относительно недавно. 3 н. и 13 з.п. ф-лы, 9 ил.

Description

Уровень техники изобретения
По разным причинам, различные пользователи, которые географически отделены друг от друга, могут пожелать сотрудничать по поводу документов. Предыдущие техники для облегчения этого типа дистанционного сотрудничества обычно предусматривают, что эти разные пользователи должны устанавливать подходящего клиента с богатыми возможностями на удаленных рабочих станциях.
Сущность изобретения
Описаны инструменты и техники для многопользовательского сетевого сотрудничества. Эти инструменты могут обеспечивать способы, которые позволяют пользователям дистанционно сотрудничать по поводу документов с использованием соответствующих браузеров. Эти способы предусматривают передачу представлений фрагментов данного документа браузерам и связывание фрагментов документа с конкретными пользователями. Браузеры могут принимать представления команд, обеспеченные пользователями, и могут определять, выполнять ли команды на браузере. Способы также могут включать в себя прием от браузеров ревизий в отношении фрагментов документа и сохранение этих фрагментов документа в областях хранения, которые приспособлены для сохранения контента, который был изменен относительно недавно.
Вышеописанное изобретение также можно реализовать как способ, устройство, управляемое компьютером, компьютерный процесс, вычислительную систему или как изделие производства, например компьютерно-считываемый носитель. Эти и различные другие признаки явствуют из нижеследующего подробного описания и прилагаемых чертежей.
Эта сущность призвана представлять в упрощенной форме ряд концепций, которые дополнительно описаны ниже в подробном описании. Эта сущность не призвана идентифицировать ключевые признаки или существенные признаки заявленного изобретения, а также не призвана ограничивать объем заявленного изобретения. Кроме того, заявленное изобретение не ограничивается реализациями, которые устраняют некоторые или все недостатки, указанные в любой части этого раскрытия.
Краткое описание чертежей
Фиг.1 - объединенная функциональная и логическая блок-схема, демонстрирующая системы или операционные среды для обеспечения многопользовательского сетевого сотрудничества.
Фиг.2 - объединенная функциональная и логическая блок-схема, демонстрирующая компоненты и потоки данных, относящиеся к инициированию процессов сотрудничества, показанных на фиг.1.
Фиг.3 - логическая блок-схема процессов для инициирования совместных усилий (например, редактирования) для конкретного документа.
Фиг.4 - объединенная функциональная и логическая блок-схема, демонстрирующая компоненты и потоки для инициирования сотрудничества на данном браузере.
Фиг.5 - объединенная функциональная и логическая блок-схема, демонстрирующая компоненты и потоки для обработки ревизий, сделанных в отношении документов сотрудничающими пользователями.
Фиг.6 - логическая блок-схема процессов для обработки ревизий, сообщенных браузерами.
Фиг.7 - объединенная функциональная и логическая блок-схема, демонстрирующая компоненты и потоки данных, которые браузер может обеспечивать для обработки ревизий в отношении контента, который совместно редактируется множеством пользователей.
Фиг.8 - объединенная функциональная и логическая блок-схема, демонстрирующая компоненты и потоки данных серверной стороны для приема и обработки ревизий от браузеров.
Фиг.9 - блок-схема компонентов серверной стороны для обеспечения коллективных клиентских служб.
ПОДРОБНОЕ ОПИСАНИЕ
Нижеследующее подробное описание посвящено технологиям многопользовательского сетевого сотрудничества. Хотя описанное здесь изобретение представлено в общем контексте программных модулей, которые выполняются совместно с выполнением операционной системы и прикладных программ в компьютерной системе, специалистам в данной области техники очевидно, что другие реализации можно осуществлять совместно с другими типами программных модулей. В целом, программные модули включают в себя процедуры, программы, компоненты, структуры данных и другие типы структур, которые выполняют конкретные задачи или реализуют те или иные абстрактные типы данных. Кроме того, специалистам в данной области техники очевидно, что описанное здесь изобретение можно осуществлять на практике в других конфигурациях компьютерной системы, включая карманные устройства, многопроцессорные системы, микропроцессорные или программируемые бытовые электронные приборы, миникомпьютеры, универсальные компьютеры и пр.
В нижеследующем подробном описании ссылки делаются на прилагаемые чертежи, которые составляют его часть и которые показывают, в порядке иллюстрации, конкретные варианты осуществления или примеры. Со ссылкой на чертежи, снабженные сквозной системой обозначений, раскрываются аспекты инструментов и техник многоклиентского сотрудничества для доступа и обновления элементов структурированных данных.
На фиг.1 показаны системы или операционные среды, обозначенные, в целом, как 100, для обеспечения многопользовательского сетевого сотрудничества. Эти системы 100 могут включать в себя одну или несколько серверных систем 102, причем реализации этого описания включают в себя любое количество внешних и/или внутренних серверов, как описано более подробно ниже. Серверы могут включать в себя один или несколько процессоров 104, которые могут иметь конкретный тип или конкретную архитектуру, выбранный/ую надлежащим образом для конкретной реализации. Процессоры 104 могут подключаться одной или нескольким шинным системам 106, выбранным для совместимости с процессорами 104.
Серверы 102 также могут включать в себя один или несколько экземпляров компьютерно-считываемых носителей данных 108, которые подключены к шинным системам 106. Шинные системы могут позволять процессорам 104 считывать код и/или данные с компьютерно-считываемых носителей данных 108. Носители 108 могут представлять элементы хранения, реализованные с использованием любой пригодной технологии, включающей в себя, но без ограничения, полупроводники, магнитные материалы, оптику и т.п. Носители 108 могут включать в себя компоненты памяти, подразделяемые на ОЗУ, ПЗУ, флэш или другие типы, и также могут представлять жесткие диски.
Носители данных 108 могут включать в себя один или несколько модулей инструкций, которые, при загрузке в процессор 104 и выполнении, предписывают серверу 102 осуществлять различные техники для облегчения многопользовательского сетевого сотрудничества. В частности, носители данных 108 могут включать в себя модули инструкций, которые обеспечивают коллективные клиентские службы 110 для множества клиентских систем. На фиг.1 показано два примера таких клиентских систем, как 112a и 112n (в целом, клиентские системы 112). Однако реализации этого описания могут включать в себя ряд клиентских систем.
Носители данных 108 могут содержать один или несколько экземпляров хранилища 114 документов. Хотя дополнительные детали, касающиеся хранилища документов, приведены ниже, в целом, хранилище документов вмещает или содержит документы, которые множество клиентских систем может совместно редактировать или создавать. Хотя на фиг.1 показан сценарий, в котором хранилище 114 документов и программное обеспечение для коллективных клиентских служб 110 располагаются на одних и тех же носителях данных 108, этот пример приведен только для простоты иллюстрации, но не для ограничения возможных реализаций. Особо заметим, что в некоторых сценариях хранилище документов и коллективные клиентские службы могут располагаться на разных носителях и/или в отдельных системах или физических устройствах.
Более подробно рассматривая коллективные клиентские службы 110, можно видеть, что эти службы могут облегчать потоки сотрудничества между серверами 102 и клиентскими системами 112. На фиг.1 показано два примера потоков сотрудничества, причем потоки сотрудничества 116a представляют данные и потоки обработки между сервером 102 и клиентской системой 112a, и потоки сотрудничества 116 представляют данные и потоки обработки между сервером 102 и клиентской системой 112n.
Более подробно рассматривая клиентские системы 112, можно видеть, что эти клиентские системы могут включать в себя соответствующие процессоры 118a и 118n (в целом, процессоры 118), которые могут иметь или не иметь такой же тип и архитектуру, что и процессор 104. Шинные системы 120a и 120n (в целом, системы 120) могут подключаться соответственно к процессорам 118a и 118n, как показано на фиг.1. Эти шинные системы 120 могут быть совместимы по типу и архитектуре с соответствующими процессорами 118 и могут иметь или не иметь такой же тип и архитектуру, как шинные системы 106 на сервере 102. Соответствующие экземпляры компьютерно-считываемых носителей данных 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 является централизованной вычислительной системой, которой может пользоваться более чем одна клиентская система. Клиентские системы 112 могут представлять настольные системы, переносные или мобильные вычислительные системы, смартфоны, карманные персональные компьютеры с возможностью беспроводной связи (КПК) или другие пригодные системы. Однако описанное здесь изобретение предусматривает и другие формы серверных и/или клиентских систем, включая, но без ограничения, примеры, показанные на фиг.1.
Описав системы и операционные среды, показанные на фиг.1, перейдем к описанию компонентов и потоков, относящихся к инициированию процесса сотрудничества. Описание представлено со ссылкой на фиг.2.
На фиг.2 показаны компоненты и потоки данных, обозначенные, в целом, как 200, относящиеся к инициированию процессов сотрудничества, показанных на фиг.1. Для простоты описания, но не ограничения, фиг.2 может перенимать некоторые условные обозначения из предыдущих чертежей для обозначения сходных элементов. Например, фиг.2 перенимает из фиг.1 представление коллективных клиентских служб 110, хранилища документов 114, сети 128, браузеров 124 и пользователей 126.
Рассматривая более подробно хранилище документов 114, можно видеть, что хранилище документов позволяет реализовать модели документов, которые доступны для сотрудничества клиентским системам и конечным пользователям. В частности, эти модели могут облегчать повышенные эффективности и оптимизации в ходе этих действий по сотрудничеству. Например, модели конкретных документов могут назначать конкретные семантические фрагменты документов конструкциям, которые здесь именуются ячейками. Другой описанной здесь конструкцией является ревизия, которая представляет собой снимок ячейки, сделанный в конкретный момент времени, обеспечивающий представление ячейки в этот момент времени. Например, соответствующие страницы в данном документе можно представлять с использованием конкретных ячеек. В свою очередь, конкретные ревизии можно подразделять на один или несколько объектов, которые представляют конкретные фрагменты или аспекты контента, соответствующие ячейке. Например, объекты могут включать в себя абзацы или изображения, присутствующие на данной странице, жирные точки, присутствующие в данном списке, и т.п.
На фиг.2 показаны примеры ревизионных структур, обозначенных 202, с учетом того, что реализации могут включать в себя любое количество ячеистых структур, необходимых для представления одного или нескольких документов. В свою очередь, данная ревизионная структура может включать в себя один или несколько объектов, причем на фиг.2 показаны примеры объектов, обозначенных 204a и 204n (в целом, объекты 204). Конкретные объекты можно идентифицировать соответствующими идентификаторами. Эти объекты могут указывать на другие объекты в той же ячейке или могут указывать на объекты в других ячейках.
Коллективные клиентские службы 110 могут передавать одну или несколько ревизий из данного конкретного документа для сотрудничества разных конечных пользователей 126 через браузеры 124. Например, коллективные клиентские службы 110 могут определять, какие ревизии в данном документе представляют интерес для разных конечных пользователей, и затем могут передавать эти ревизии для отображения в браузерах для этих конечных пользователей. На фиг.2 обозначены как 206a примеры ревизий, передаваемых в браузер 124a для взаимодействия с пользователем 126a, обозначены как 206b примеры ревизий, передаваемых в браузер 124b для взаимодействия с пользователем 126b, и обозначены как 206n примеры ревизий, передаваемых в браузер 124n для взаимодействия с пользователем 126n.
Коллективные клиентские службы 110 могут определять, какие конкретные ревизии 206 данного документа подлежат распределению на различные клиентские браузеры. Например, коллективные клиентские службы могут сначала передавать на браузеры навигационную страницу, содержащую имена всех страниц в данном документе, совместно с контентом только первой страницы. На браузерах, разные пользователи могут затем кликать по своим соответствующим навигационным страницам и выбирать, какие страницы они хотели бы видеть и редактировать. Коллективные клиентские службы затем могут загружать содержимое выбранных страниц в различные браузеры. Например, разные пользователи 126 могут прокручивать одни и те же или разные страницы в данном документе. В этом примере, когда коллективные клиентские службы определяют страницы, которые разные пользователи хотят редактировать, клиентские службы могут получать из хранилища документов 114 те ревизии 208, которые соответствуют этим страницам. В свою очередь, коллективные клиентские службы могут распределять эти ревизии, обозначенные как 206a, 206b и 206n (в целом, распределенные ревизии 206), по соответствующим пользователям.
В разных сценариях, коллективные клиентские службы могут распределять не только данную страницу, редактируемую конкретным пользователем, но также могут распределять определенное количество страниц до и/или после данной страницы в документе. Обеспечивая определенное количество страниц "до" или "после", коллективные клиентские службы могут позволять этим пользователям прокручивать несколько страниц подряд, не передавая дополнительные ревизии.
Как описано более подробно ниже, ячеистая модель может позволять хранилищу документов облегчать более эффективное сотрудничество между разными конечными пользователями (например, 126). Например, ревизионные представления документов обычно гораздо меньше, чем документы целиком.
Как описано более подробно ниже, ячеистая модель документов может позволять хранилищу документов облегчать более эффективное сотрудничество между разными конечными пользователями (например, 126). Например, ревизионные представления документов обычно гораздо меньше, чем документы целиком. Таким образом, коллективные клиентские службы могут снижать расходование сетевых ресурсов и экономить полосу сети за счет передачи этих ревизионных представлений, по сравнению с передачей документов в полном объеме, разным сотрудничающим пользователям и клиентским системам.
После того как коллективные клиентские службы распределили конкретные ревизии 206 на браузеры, эти службы могут сохранять информацию сотрудничества, обозначенную, в целом, как 210. Например, эта информация сотрудничества может указывать, какие конкретные ревизии были распределены каким конкретным пользователям. Коллективные клиентские службы могут сохранять эту информацию в хранилище 212 ревизий на стороне сервера, которое может содержать представления 214a и 214m разных пользователей 126 (в целом, пользовательские представления 214). В свою очередь, пользовательские представления 214 могут указывать, какие ревизии, обозначенные 216a и 216m (в целом, ревизионные представления 216), были распределены конкретным пользователям. Как описано более подробно ниже, эти позиции в хранилище ревизий на стороне сервера могут позволять коллективным клиентским службам определять, какие ревизии, сделанные конкретными пользователями, могут относиться к другим пользователям.
Описав компоненты и потоки, относящиеся к инициированию сотрудничества между различными клиентскими системами и пользователями на фиг.2, перейдем к описанию потоков обработки, осуществляемых для инициирования совместных усилий для конкретного документа. Это описание приведено со ссылкой на фиг.3.
На фиг.3 показаны потоки обработки, обозначенные, в целом, как 300, для инициирования совместных усилий (например, редактирования) для конкретного документа. Для простоты описания, но не ограничения, фиг.3 может перенимать некоторые условные обозначения из предыдущих чертежей для обозначения сходных элементов. Например, фиг.3 перенимает из предыдущих чертежей представление коллективных клиентских служб 110. Хотя потоки обработки 300 описаны в связи с этими коллективными клиентскими службами, заметим, что реализации потоков обработки 300 также могут осуществляться другими компонентами или службами без отхода от объема и сущности этого описания.
Рассматривая более подробно потоки обработки 300, можно видеть, что блок 302, в целом, представляет идентификацию ячеек в данном документе, которые представляют интерес для одного или нескольких конкретных пользователей. Например, блок 302 может включать в себя передачу имен страниц данного документа на множество сотрудничающих пользователей, совместно с контентом первой страницы в документе. Затем пользователи могут выбирать имена страниц, которые они хотят видеть. Блок 302 может включать в себя обеспечение конкретному пользователю некоторого уровня просмотра вперед и/или назад относительно данной ячейки, представляющей интерес. Согласно вышеприведенному рассмотрению ячеистой модели документов конкретные ячейки могут представлять, например, страницы в этих документах.
Блок 304, в целом, представляет получение ревизий, представляющих интерес, идентифицированных на блоке 302. Например, блок 304 может включать в себя получение ревизий, представляющих интерес, из хранилища документов, содержащего контент, по поводу которого несколько разных пользователей могут сотрудничать с использованием описанных здесь инструментов и техник. На фиг.2 приведен пример такого хранилища документов как 114 и приведены примеры таких ячеек, как 208.
Блок 306, в целом, представляет передачу полученных ревизий, представляющих интерес, конкретным пользователям. Например, предполагая, что три разных пользователя сотрудничают по поводу данного документа, как показано на фиг.2 (например, пользователи 126a, 126b и 126n), эти пользователи могут проявлять интерес к одним и тем же или разным фрагментам этого данного документа. Соответственно, блок 306 может включать в себя передачу ревизионных представлений соответствующих фрагментов данного документа этим разным пользователям (например, 206a, 206b и 206n).
Блок 308, в целом, представляет связывание конкретных пользователей с ячейками, над которыми работают эти пользователи. Например, блок 308 может включать в себя связывание представлений конкретных пользователей (например, 214 на фиг.2) с ячейками, ревизии которых были предоставлены этим пользователям (например, ревизионные представления 216 на фиг.2).
Блок 310, в целом, представляет сохранение связей, заданных на блоке 308. Например, блок 310 может включать в себя обновление хранилища ревизий на стороне сервера (например, 212) для сохранения связей или соотношений между работающими пользователями и ячейками, по поводу которых эти пользователи сотрудничают, что обозначено как 214 и 216 на фиг.2.
Описав потоки обработки 300 для инициирования совместных действий над конкретным документом, перейдем к подробному описанию компонентов и потоков, которые могут иметь место на стороне браузера для инициирования этого сотрудничества. Это рассмотрение представлено со ссылкой на фиг.4.
На фиг.4 показаны компоненты и потоки, обозначенные, в целом, как 400, которые могут иметь место на стороне браузера для инициирования сотрудничества на данной клиентской системе. Для простоты описания, но не ограничения, фиг.4 может перенимать некоторые условные обозначения из предыдущих чертежей для обозначения сходных элементов. Например, фиг.4 перенимает из предыдущих чертежей сеть 128, распределенные ячейки 206, браузер 124 и пользователя 126.
Рассматривая более подробно фиг.4, можно видеть, что менеджер дублирования 402 клиентской стороны может принимать распределенные ревизии 206 от сервера 102 по сети 128. Эти ревизии 206 могут представлять страницы, первоначально представленные пользователю 126, или могут представлять ревизии, сделанные в отношении этих ячеек другими сотрудничающими пользователями. В целях описания фиг.4, предполагается, что ячейки 206 представляют страницы, первоначально представленные пользователю 126, посредством браузера 124.
В общем случае, менеджер дублирования 402 может осуществлять обмен ревизиями ячеек между браузером и сервером. Менеджер дублирования также может надлежащим образом трансформировать протоколы между сетью и браузером. Согласно фиг.4, предполагается, что ревизии, обозначенные как 206, соответствуют протоколу, пригодному для сетевой передачи, тогда как ревизии, обозначенные как 404, трансформируются в соответствии с требования обработки браузером.
Менеджер дублирования 402 может пересылать ревизии 404 в хранилище ревизий на стороне клиента 406. В общем случае, хранилище ревизий может администрировать и сохранять ревизии (или изменения этих ревизий) в отношении ячеек 206, независимо от того, осуществляются ли эти ревизии или изменения локально на данном браузере 124, или же дистанционно на других браузерах и передаются на данный локальный браузер 124. В начале данной совместной работы в отношении ревизий 404, в хранилище 406 ревизий может храниться начальное состояние или начальная ревизия этих ячеек 408 для дальнейшего к ним обращения.
Хранилище 406 ревизий может обеспечивать представление ячеек в виде структуры данных графа 410, который обеспечивает семантическую модель совместно редактируемого документа, причем эта семантическая модель обеспечивает иерархию документа. Предполагая реализацию модели данных/просмотра, структура графа 410 может обеспечивать фрагмент данных этой модели. Структура графа 410 может представлять собой ориентированный ациклический граф, включающий в себя вершины разных типов, наборы свойств и другие элементы, представляющие входящие ячейки 206. На фиг.4 приведены примеры вершин, обозначенных как 412a и 412n (в целом, вершины 412 графа). Например, предполагая, что входящая ревизия представляет страницу совместно редактируемого документа, разные вершины 412 в структуре графа 410 могут представлять разные абзацы, изображения, страницы, разделы или другие фрагменты или подэлементы в странице. Некоторые объекты можно представлять одной вершиной в графе (например, изображение), тогда как другой контент, например таблицы, можно представлять многими вершинами в графе.
В иллюстративных, но не ограничительных реализациях, менеджер дублирования 402 клиентской стороны, хранилище 406 ревизий на стороне клиента, начальное состояние 408 ячейки и структуру графа 410 можно прописывать на Script# и реализовывать в JavaScript. Однако эти примеры приведены только для облегчения этого описания, и в других реализациях возможны другие сценарии.
Структура графа 410 может обеспечивать независимую от браузера модель контента, представленного входящими ревизиями 206. В свою очередь, вершины 412 в этой структуре графа можно визуализировать в любом из различных частично доступных браузеров. Соответственно, модель просмотра или код просмотра 414 может визуализировать или отображать эти вершины 412 из структуры графа 410 в модель просмотра, зависящую от браузера. На фиг.4 приведен пример такой модели просмотра в виде объектной модели документа (DOM) 416. В DOM 416 может храниться текущий вид совместно редактируемого документа, представляющий фотографии, изображения, списки или другие элементы, присутствующие на одной или нескольких страницах документа.
Код просмотра 414 может создавать DOM из структуры графа 410, причем вершины 412a и 412n в структуре графа соответствуют вершинам 418a и 418n (в целом, вершинам 418 DOM) в DOM. Затем DOM 416 можно визуализировать на браузере 124 для просмотра пользователем 126. На фиг.4 показано, что этот фрагмент визуализируемого контента пользователь может наблюдать в любое данное время как окно просмотра 420 браузера. Затем пользователь может взаимодействовать, по своему усмотрению, с любыми элементами, представленными в окне просмотра браузера.
Описав компоненты и потоки для инициирования совместной работы над конкретными документами со ссылкой на фиг.4, перейдем к описанию компонентов и потоков для обработки ревизий, сделанных в отношении документов сотрудничающими пользователями. Это описание приведено со ссылкой на фиг.5.
На фиг.5 показаны компоненты и потоки, обозначенные, в целом, как 500, для обработки ревизий, сделанных в отношении документов сотрудничающими пользователями. Для простоты описания, но не ограничения, фиг.5 может перенимать некоторые условные обозначения из предыдущих чертежей для обозначения сходных элементов. Например, фиг.5 перенимает из предыдущих чертежей сеть 128, браузеры 124, пользователей 126, коллективные клиентские службы 110, хранилище ревизий 212 на стороне сервера и соответствующие представления пользователей 214 и ревизий 216.
Рассматривая более подробно фиг.5, предположим, что пользователи 126a и 126b сотрудничают по поводу одной и той же ячейки в данном документе. Эта ячейка, обозначенная на фиг.5 как 502a и 502b, обобществлена между пользователями 126a и 126b. Как описано выше, хранилище 212 ревизий на стороне сервера может создавать и сохранять пользовательские представления 214 и ревизионные представления 216 для указания этого сценария. Если пользователь 126a создает ревизии 504a в отношении обобществленной ячейки 502a, браузер 124a может передавать эти ревизии коллективным клиентским службам 110. Извещение о ревизиях 504a также может указывать ревизованную ячейку 502a.
Получив извещение о ревизиях 504a, коллективные клиентские службы 110 могут определять, относятся ли эти ревизии 504a к ячейкам, редактируемым другими пользователями. Для производства такого определения коллективные клиентские службы 110 могут запрашивать хранилище 212 ревизий на стороне сервера, чтобы определить, редактируют ли ячейку 502a какие-либо другие пользователи. В этом случае, этот запрос будет указывать, что пользователь 126b также редактирует ячейку 502a, которая только что была ревизована. Кроме того, браузер 124b может запрашивать коллективные клиентские службы 110 на предмет новых изменений в ячейке 502. Таким образом, сервер, на котором выполняются коллективные клиентские службы, может неявно определять, что два клиента сотрудничают в отношении ячейки 502. Соответственно, в некоторых сценариях, коллективные клиентские службы 110 могут формировать и посылать извещение об этих ревизиях на браузер 124b. В других сценариях, коллективные клиентские службы могут принимать запросы от браузера 124b и могут отвечать на такие запросы соответствующими ревизиями для ячейки 502. На фиг.5 эти и другие сценарии, в целом, представлены как 504b. В свою очередь, браузер 124b может обновлять свое отображение для включения ревизий 504b.
В этом сценарии, показанном на фиг.5, предполагается, что пользователь 126n редактирует ячейку 506, которая отличается от ячейки 502a и 502b (в целом, ячейки 502), обобществленной пользователями 126a и 126b. Хотя эти разные ячейки 502 и 506 могут быть в одном и том же документе, пользователь 126n в данный момент не редактирует ячейку 502. В этом сценарии, ревизии этой ячейки, 502 сделанные другими пользователями, не имеют непосредственного отношения к пользователю 126n и/или браузеру 124n. Поэтому коллективные клиентские службы 110 не извещают сразу же браузер 124n об этих ревизиях, тем самым экономя полосу сети, связанную с таким извещением. Однако пользователь 126n может делать ревизии 508 в отношении ячейки 506, причем эти ревизии передаются на коллективные клиентские службы 110 надлежащим образом. В свою очередь, коллективные клиентские службы могут передавать эти ревизии на любые другие браузеры или другим пользователям, которые редактируют ту же ячейку 506.
Как описано выше, сценарии, проиллюстрированные на фиг.5, могут обеспечивать эффективную работу по сравнению с предыдущими техниками. Например, коллективные клиентские службы могут распределять фрагменты документов (например, ревизии), а не сами документы в полном объеме. Обычно эти ревизии гораздо меньше, чем документы в полном объеме. Таким образом, передача этих ревизий по сети меньше расходует полосу сети по сравнению с передачей документов в полном объеме. Кроме того, браузеры 124 и коллективные клиентские службы 110 могут обмениваться ревизиями этих фрагментов документов, вместо того чтобы обмениваться обновленными версиями документов в полном объеме. Поэтому передача этих ревизий по сети предусматривает передачу значительно меньшего объема данных по сравнению с обменом обновленных версий документов в полном объеме. Сетевой трафик, осуществляемый согласно этой модели, может быть пропорционален размеру передаваемых изменений, но не пропорционален размеру изменяемого объекта.
Когда различные браузеры 124 сообщают ревизии в отношении совместно редактируемых ячеек, коллективные клиентские службы распределяют указатели этих ревизий только по тем другим браузерам, которые редактируют те же ячейки. В целом, если данный документ моделируется множественными ячейками, и если множественные пользователи сотрудничают по поводу этого документа, эти ячейки обычно произвольно распределяются между множественными пользователями. Таким образом, в наихудшем сценарии, все эти пользователи могут сотрудничать по поводу одной и той же ячейки, но в наилучшем сценарии, самое большее, один пользователь работает над данной ячейкой. Типичные рабочие ситуации могут попадать где-то между этими двумя крайними случаями, причем коллективные клиентские службы дополнительно экономят полосу и ресурсы сети благодаря сообщению ревизий только тем пользователям и браузерам, которые работают с ревизованной ячейкой.
Описав компоненты и потоки данных, связанные с обработкой ревизий, сделанных в отношении документов сотрудничающими пользователями, на фиг.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 также перенимает хранилище 406 ревизий на стороне клиента, которое может включать в себя начальное состояние 408 ячеек, отображаемое в браузере 124 для редактирования пользователем 126. Кроме того, фиг.7 перенимает менеджер дублирования 402, который может сообщать ревизии 504 от браузера по сети 128.
Рассматривая более подробно фиг.7, можно видеть, что пользователь 126 может подавать различные команды для взаимодействия с контентом, представленным в браузере 124, и может делать любое количество ревизий в отношении этого контента посредством этих команд. Эти команды 702 могут быть различных типов, в зависимости от типа контента, представленного в браузере, и в зависимости от того, какие возможности делаются доступными браузеру через коллективные клиентские службы (например, 110 в предыдущих чертежах).
В зависимости от типа команд 702, подаваемых пользователем, браузер может выполнять эти команды в отношении DOM или в отношении структуры графа. Обычно большинство команд может выполняться в отношении графа, который может обеспечивать модельную часть модели данных/просмотра. Таким образом, модельная часть поддерживается обновленной. Однако команды редактирования могут выполняться в отношении DOM, и в конкретных местах (например, в конце слова или абзаца) DOM может обновлять структуру графа ревизиями, проистекающими из редакции пользователя. Таким образом, DOM и структура графа, вместо того чтобы отслеживать и обрабатывать каждое нажатие клавиши пользователем, что приводит к снижению производительности, группируют нажатия клавиш или команды для повышения эффективности обработки.
Вершины в структуре графа могут обновляться в соответствии с командами 702, причем обновляются только те вершины, которые подвергаются действию команд. После обновления вершин, подвергнутых воздействию, код просмотра 408 может обходить эти вершины и наполнять DOM, например, соответствующим HTML-кодом. В свою очередь, браузер 124 может обходить DOM и визуализировать HTML для отображения пользователю 126. Таким образом, браузер 124 может позволять пользователю 126 визуализировать результаты любых команд, вводимых пользователем.
В ряде случаев, браузер 124 может определять, выполнять ли команды локально на браузере или дистанционно на сервере. Это определение можно делать на основании соображений производительности; обычно операции, требующие больших ресурсов, можно переводить на сервер. Однако другие факторы, подлежащие учету, могут включать в себя нагрузку на сервер в данное время.
В хранилище 406 ревизий на стороне клиента может храниться набор ревизий, проистекающих из команд или других действий, произведенных пользователем посредством браузера 124. Начиная с представления 408 начального состояния ячеек, отображаемого в браузере, хранилище 406 ревизий может создавать и сохранять ряд дельт 704 ревизии. Эти дельты ревизии представляют последовательные, возрастающие изменения, которые происходят в графе локально на данном браузере 124. Помимо других функций, эти дельты ревизии могут обеспечивать механизм, посредством которого браузер может обеспечивать пользователю функцию отмены действия, которая позволяет пользователю поэтапно возвращаться назад через набор ревизий для возвращения в какое-либо предыдущее состояние.
В хранилище ревизий 406 могут храниться ревизии и дельты ревизии, например, в одном или нескольких связанных списках, первоначально размещенные в порядке появления. Однако с течением времени такой связанный список может становиться слишком длинным для обхода. Обычно большинство ревизий, представляющих интерес для пользователя (например, для операций отмены действия), может находиться в конце этого связанного списка. Однако доступ к этим ревизиям, представляющим интерес, может предусматривать обход всего связанного списка, обуславливая значительное снижение производительности. В этой ситуации, хранилище ревизий может реорганизовывать связанный список дельт ревизии, чтобы дельты были ориентированы не "назад" по списку, к более раннему начальному состоянию, а "вперед", к будущему состоянию.
Хотя в хранилище 406 ревизий могут храниться дельты, представляющие большинство или все ревизии, осуществляемые на локальном браузере, хранилище 406 ревизий может сообщать или не сообщать все эти ревизии серверу по сети 128. Например, при наличии полного множества дельт 704 ревизии, осуществляемых локально на браузере, хранилище 406 ревизий может сообщать некоторое подмножество этих дельт ревизии (обозначаемое как 706) менеджеру дублирования 402. В свою очередь, менеджер дублирования может переправлять эти ревизии, обозначенные как 504, на сервер. В частности, менеджер дублирования в браузере может определять, когда переправлять эти ревизии на сервер, чтобы не создавать неоправданных помех пользовательским взаимодействиям, происходящим в браузере. В конце концов, менеджер дублирования на данном браузере может переносить на сервер объединенные или накопленные результирующие изменения, сделанные пользователем на этом браузере. Менеджер дублирования на браузере может объединять ревизии и дельты ревизии, происходящие на браузере, для задания результирующей ревизии, которая имитирует объединенные или накопленные изменения ячейки, тем самым устанавливая текущее состояние ячейки. В свою очередь, менеджер дублирования может передавать текущее состояние ячейки на сервер.
Описав компоненты и потоки данных на стороне браузера для обработки ревизий на фиг.7, перейдем к описанию компонентов и потоков данных серверной стороны для обработки этих ревизий. Это описание приведено со ссылкой на фиг.8.
На фиг.8 показаны компоненты и потоки данных серверной стороны, обозначенные, в целом, как 800, для приема и обработки ревизий от браузеров. Для простоты описания, но не ограничения, фиг.8 может перенимать некоторые условные обозначения из предыдущих чертежей для обозначения сходных элементов.
В примерах, показанных на фиг.8, иллюстративные пользователи 126a и 126n могут взаимодействовать с иллюстративными браузерами 124a и 124n для создания ревизий 504a и 504n в отношении конкретных ячеек 802a и 802n. В свою очередь, браузеры 124a и 124n могут сообщать эти ревизии коллективным клиентским службам 110 по сети 128.
Получив эти ревизии от браузеров, коллективные клиентские службы 110 могут сохранять эти ревизии, обозначенные, в целом, как 804, в хранилище ревизий на стороне сервера (например, 212). На фиг.8 показано два браузера, передающие ревизии только в целях этого рассмотрения, но реализации этого описания могут включать в себя любое количество браузеров 124, которые сообщают ревизии коллективным клиентским службам.
Как описано выше на фиг.2, хранилище 212 ревизий на стороне сервера может содержать ревизии любого количества ячеек, которые, в свою очередь, могут содержать одно или несколько объектных представлений 204. Эти объектные представления 204 могут быть связаны с начальной ревизией 806, которая указывает состояние или статус ячейки или объекта до поступления любых извещений о ревизии для этой ячейки или объекта.
Поскольку извещения 504 ревизий поступают от различных браузеров, эти извещения могут указывать, какие ячейки, обозначенные соответственно как 802a и 802n, подвергаются ревизии. Когда коллективные клиентские службы 110 принимают эти извещения, эти службы могут создавать и сохранять дельты 808 ревизии на стороне сервера. С функциональной точки зрения, эти дельты 808 ревизии на стороне сервера могут действовать аналогично дельтам ревизии, описанным на стороне браузера. Однако заметим, что дельты ревизии на стороне сервера могут быть или не быть в точности такими же, как дельты ревизии на стороне браузера.
Описав компоненты и потоки данных серверной стороны для приема и обработки ревизий от браузеров на фиг.8, перейдем к подробному описанию компонентов серверной стороны. Это описание приведено со ссылкой на фиг.9.
На фиг.9 показаны компоненты серверной стороны, обозначенные, в целом, как 900, связанные с коллективными клиентскими службами. Для простоты описания, но не ограничения, фиг.9 может перенимать некоторые условные обозначения из предыдущих чертежей для обозначения сходных элементов. Например, фиг.9 перенимает иллюстративные коллективные клиентские службы 110 и иллюстративную сеть 128.
Сетевая служба 902 обеспечена в виде интерфейса, который принимает передачи от браузеров и который направляет эти передачи на соответствующие компоненты в коллективных клиентских службах. Эти передачи могут включать в себя, например, извещения о ревизиях или дельтах ревизий, поступающие от различных браузеров, сотрудничающих по поводу данного экземпляра контента. Эти извещения могут поступать от и/или на различные браузеры. Сетевая служба может обеспечивать адаптеры 904, которые транслируют эти передачи из протоколов, пригодных для передачи по сети 128, во внутренние двоичные протоколы, более пригодные для обработки в коллективных клиентских службах.
Сетевая служба может поддерживать способы или программные интерфейсы приложений (API) для передачи ревизий на браузеры, приема ревизий от браузеров и т.п. Кроме того, эти API могут включать в себя способы, которые указывают серверу, что данный браузер ушел с данной страницы и, таким образом, завершил редактирование всех ячеек на этой странице.
Уровень хранения 906 может осуществлять связь через адаптер 904 сетевой службы и может обобщать передачи на и/или из хранилища ревизий 212 на стороне сервера. Уровень хранения 906 также может обеспечивать адаптер хранения 908, который обеспечивает интерфейс с хранилищем ревизий на стороне сервера. Когда ревизии поступают от различных браузеров, уровень хранения 906 может кэшировать эти ревизии в хранилище ревизий.
Хранилище ревизий на стороне сервера может включать в себя разные области хранения или кэши, имеющие разные характеристики. Например, первая область хранения 910 может быть адаптирована или приспособлена для хранения меньших фрагментов данных, подвергавшихся доступу и ревизии в более недавнее время и более часто. Для простоты описания, но не для ограничения возможных реализаций, на фиг.9 эта первая область хранения обозначена как область "горячего" хранения или кэш. Хранилище ревизий также может включать в себя вторую область хранения или кэш 912, которая адаптирована или приспособлена для хранения более крупных фрагментов данных, подвергавшихся доступу и ревизии в более отдаленное время и менее часто. Для простоты описания, но не для ограничения возможных реализаций, на фиг.9 эта вторая область хранения обозначена как область "холодного" хранения или кэш.
Уровень слияния 914 и связанный с ним движок слияния 916 создает эти интерфейсы и соответствующие способы, которые позволяют уровню хранения задействовать возможности слияния. Например, когда разные браузеры передают на коллективные клиентские службы ревизии в отношении данного контента, уровень хранения может сохранять соответствующие ревизии и/или дельты ревизии в кэшах 910 и 912. По мере необходимости, уровень хранения 906 может вызывать уровень слияния 914 для слияния или согласования этих различных ревизий для обновления контента, в отношении которого сотрудничают браузеры. Кроме того, уровень слияния 914 может определять, когда вызывать и выполнять движок слияния 916, на основании таких факторов, как насколько нагружены или заняты серверы, обеспечивающие коллективные клиентские службы, в любое данное время.
В вышеописанной обработке, операции сохранения утрачивают синхронизацию с операциями слияния. Обычно, на стороне браузера, данные ревизии можно в высокой степени сериализовать, тогда как на стороне сервера данные ревизии можно реорганизовать и оптимизировать так, что они не настолько сериализованы. Таким образом, история ревизий, поддерживаемая серверами, может быть или не быть линейным представлением, указывающим порядок, в котором изменения происходили на браузерах. Вместо этого история ревизий может включать в себя ответвления или другие нелинейные характеристики.
Обычно пользователи и браузеры защищены от деталей процесса слияния, так что детали в слиянии не оказывают чрезмерного влияния на общий пользовательский опыт. Другими словами, пользователи могут продолжать делать ревизии на браузере, не ожидая завершения слияний или даже зная, что слияния продолжаются на серверном конце.
Коллективные клиентские службы 110 могут использовать архитектуру, показанную на фиг.9, для осуществления нескольких функций. Эти функции могут включать в себя, но без ограничения, оптимизацию полезной нагрузки данных, переносимых на и от различных браузеров, определение наилучшей среды выполнения команд, поступающих от браузеров, оптимизацию хранения контента и ячеек на сервере, обеспечение многопользовательского редактирования коллективного контента и пр. Ниже рассмотрены дополнительные детали по каждой из этих функций.
Оптимизация полезной нагрузки данных
При открытии документа или файла для сотрудничества под управлением коллективных клиентских служб, уровень хранения 906 может извлекать контент одной или нескольких соответствующих страниц в этом файле или документе. Уровень хранения может выбирать только данные этой страницы или страниц из хранилища ревизий на стороне сервера. Эту выборку можно оптимизировать для поиска этих страниц сначала в горячем хранилище (например, 910). Если три запрашиваемые страницы не находятся в горячем хранилище, выборка может последовательно искать в холодном хранилище (например, 912).
Соответствующие данные выбираются из хранилища ревизий, сохраняются во внешних кэшах на сервере и передаются на соответствующий браузер (например, 124). Принимающий браузер может сохранять эти данные в хранилище ревизий на стороне браузера (например, 306) и воссоздавать или восстанавливать эти данные в структуре графа (например, 310). Когда данный пользователь ревизует контент в данном браузере, или если другой пользователь изменяет контент в другом браузере, коллективные клиентские службы могут генерировать ревизии и дельты ревизии, указывающие эти изменения, и могут передавать эти ревизии на другие браузеры, сотрудничающие по поводу контента.
На стороне браузера, браузеры могут обрабатывать ревизии и дельты ревизии в хранилище ревизий на стороне браузера, причем браузеры создают соответствующие обновления для структуры графа из хранилища ревизий. На стороне сервера, коллективные клиентские службы могут сохранять эти ревизии и дельты ревизии в горячем хранилище (например, 910). После этого коллективные клиентские службы могут осуществлять слияние ревизий и дельт ревизии, принятых от разных пользователей. Например, клиентские службы могут выполнять операции слияния асинхронно относительно других операций, чтобы не создавать ненужных помех этим другим операциям (т.е. “тихо”).
Другие пользователи или браузеры могут запрашивать у сервера любые изменения, сделанные в отношении коллективного контента. В этих случаях, сервер может извлекать эти изменения из кэшей, поддерживаемых внешними серверами, или внешние серверы могут извлекать эти изменения во внутренний сервер. В общем случае, коллективные клиентские службы могут обеспечивать гибкое кэширование в горячем хранилище, позволяя внешним серверам локально сохранять данные, которые внешние серверы ранее выбрали, и возвращать эти данные на запрашивающий браузер без перехода на внутренний сервер. Коллективные клиентские службы также могут обеспечивать перенаправление в кэш, где один внешний сервер может перенаправлять запрос от браузера на другой внешний сервер, в случаях, когда последний внешний сервер содержит кэшированные данные, запрашиваемые браузером.
Выполнение команд в надлежащей среде
Коллективные клиентские службы могут выполнять ряд команд на браузере, без взаимодействия с сервером или без его вмешательства. Браузер может выполнять эти команды посредством комбинаций манипулирования DOM (например, 316) и посредством осуществления операций над структурой графа (например, 310). Некоторые команды могут выполняться на сервере, поскольку сервер может обеспечивать вычислительные мощности для выполнения этих команд и поскольку выполнение команд на сервере не предполагает загрузку кода (и конфиденциальной и/или секретной информации) на удаленные браузеры.
Кроме того, команды, выполняющиеся на сервере, могут делать это, не создавая помех “нормальной” работе сервера. Например, когда уровень хранения 906 принимает новое изменение, он может передавать его в хранилище 212 ревизий на стороне сервера для хранения. Уровень хранения также может извещать уровень слияния 914 об этом новом изменении. Однако, асинхронно с этим извещением, уровень слияния может пытаться объединить этот новый контент, когда это необходимо. Эта асинхронная операция может минимизировать опасность перегрузки сервера, чтобы он не был слишком занят для обработки других запросов. Таким образом, уровень слияния может действовать только, если внешний сервер имеет достаточно свободных циклов, чтобы заниматься слиянием.
Команды, например «вставить», могут выполняться в комбинации браузера и сервера. Браузер может включать в себя логику, которая обнаруживает, что обработка, применяемая при осуществлении достаточной операции вставки, слишком сложна для локального осуществления на браузере, и может, вместо этого, запрашивать сервер, чтобы он осуществил эту операцию. Опять же, код, выполняющийся на сервере, может планировать и осуществлять эту операцию вставки так, чтобы не мешать другим операциям, осуществляемым на сервере.
Хранение на сервере
Когда коллективный контент (например, ячейки) нужно сохранить, этот контент можно переместить из браузера на внешний сервер, и, в конце концов, на уровень хранения. Уровень хранения может осуществлять связь с хранилищем ревизий на стороне сервера и может сохранять ячейки в двух разных позициях, сравнительно малые изменения, произошедшие в более недавнее время, можно сохранять в более быстром, более дорогом горячем хранилище (например, 910): это оптимизирует извлечение этого малого набора данных для его передачи другим пользователя, избавляя от необходимости извлекать данные из более медленного, более дорогого холодного хранилища (например, 912). После консолидации или слияния ревизий или изменений в главный файл, главный файл можно сохранять в холодном хранилище. Это оптимизирует затраты за счет сохранения главного файла, который обычно сравнительно велик, в хранилище, которое дешевле горячего хранилища.
Когда браузеры запрашивают конкретные ячейки в файле, уровень хранения и поставщик файла могут извлекать запрашиваемые ревизии из одного или обоих из этих хранилищ (т.е. горячего хранилища и холодного хранилища) и могут представлять ревизии как унифицированные данные браузерам и остальным компонентам серверной стороны. Уровень хранения также может транслировать пользовательский контент, хранящийся на серверах, в контент, который может использоваться браузером, в то же время расширяя определенные вершины в контенте и не загружая контент, не используемый браузером.
Многопользовательское редактирование
Модель данных, используемая коллективными клиентскими службами, может включать в себя ревизии, как описано выше. Клиентские службы также могут загружать/сохранять эти ревизии без непосредственного взаимодействия с пользователем (т.е. “за сценой”). Этот подход может автоматически распространять изменения от пользователей, оптимизируя характер обобществления пользовательского контента и ревизий (т.е. создавая минимальную нагрузку на провод) и время обобществления такого контента и ревизий. Таким образом, коллективные клиентские службы могут синхронизировать изменения от данного пользователя со всеми остальными браузерами гораздо быстрее, после того как клиентские службы обнаруживают, что множественные пользователи сотрудничают по поводу данного контента.
Коллективные клиентские службы могут трансформировать модель данных так, чтобы браузеры и серверы могли эффективно обрабатывать данные. Затем браузер может отображать и обрабатывать соответствующий контент. Кроме того, коллективные клиентские службы могут объединяться с приложениями электронного блокнота (например, включающими в себя, но без ограничения, продукт OneNote™ от Microsoft Corporation, Редмонд, Вашингтон). Например, уровень хранения может изменять формат ревизий, чтобы их можно было сохранять в формате, совместимом с приложениями электронного блокнота. Таким образом, коллективные клиентские службы могут гладко интегрироваться в толстые клиенты, в то же время опираясь на приложение электронного блокнота (или другие программные продукты или приложения) для обеспечения более богатого пользовательского опыта.
Хотя представленное здесь изобретение было описано применительно к структурным признакам компьютера, этапам способа и компьютерно-считываемым носителям, следует понимать, что изобретение, заданное формулой изобретения, не обязано ограничиваться конкретными описанными здесь признаками, этапами или носителями. Напротив, конкретные признаки, этапы и носители раскрыты в порядке иллюстративной реализации формулы изобретения.
Вышеприведенное описание изобретения обеспечено для иллюстрации, но не ограничения. Описанное здесь изобретение допускает различные модификации и изменения, отличные от описанных иллюстративных вариантов осуществления и применения, но не выходящие за рамки сущности и объема настоящего изобретения, которые установлены в нижеследующей формуле изобретения.

Claims (16)

1. Компьютерно-считываемый носитель данных, на котором хранятся компьютерно-выполняемые инструкции, которые, при выполнении на компьютере, предписывают компьютеру осуществлять способ, содержащий этапы, на которых
позволяют множеству пользователей сотрудничать дистанционно по поводу документа с использованием соответствующих браузеров,
моделируют документ как множество ячеек, причем каждая ячейка из множества ячеек содержит фрагмент документа и каждая ячейка из множества ячеек содержит, по меньшей мере, один объект,
идентифицируют, по меньшей мере, одну ячейку документа как интересующую, по меньшей мере, одного пользователя из множества пользователей,
в ответ на идентификацию, по меньшей мере, одной интересующей ячейки передают представление, по меньшей мере, одной интересующей ячейки в браузер, который связан, по меньшей мере, с одним пользователем,
связывают, по меньшей мере, одну интересующую ячейку, по меньшей мере, с одним пользователем,
сохраняют ассоциацию между, по меньшей мере, одной интересующей ячейкой и, по меньшей мере, одним пользователем,
получают, по меньшей мере, одну интересующую ревизию в отношении, по меньшей мере, одной интересующей ячейки, причем, по меньшей мере, одна интересующая ревизия представляет состояние, по меньшей мере, одного объекта, по меньшей мере, одной интересующей ячейки,
определяют на основании ассоциации между, по меньшей мере, одной интересующей ячейкой и, по меньшей мере, одним пользователем, что, по меньшей мере, одна интересующая ревизия должна быть отправлена в браузер, который связан, по меньшей мере, с одним пользователем, и
отправляют представление, по меньшей мере, одной интересующей ревизии в браузер, который связан, по меньшей мере, с одним пользователем.
2. Носитель данных по п. 1, дополнительно содержащий инструкции для приема от браузера представления, по меньшей мере, одной ревизии в отношении документа, причем, по меньшей мере, одна ревизия представляет дополнительное состояние, по меньшей мере, одного объекта, по меньшей мере, одной интересующей ячейки.
3. Носитель данных по п. 2, дополнительно содержащий инструкции для определения, что, по меньшей мере, еще один из пользователей сотрудничает по поводу, по меньшей мере, одной интересующей ячейки, и дополнительно содержащий инструкции для передачи представления, по меньшей мере, одной ревизии, по меньшей мере, еще одному из пользователей.
4. Носитель данных по п. 2, дополнительно содержащий инструкции для приема от браузера представления, по меньшей мере, дополнительной ревизии в отношении, по меньшей мере, одной интересующей ячейки.
5. Носитель данных по п. 4, дополнительно содержащий инструкции для слияния, по меньшей мере, одной ревизии и, по меньшей мере, дополнительной ревизии в отношении, по меньшей мере, одной интересующей ячейки.
6. Носитель данных по п. 1, дополнительно содержащий инструкции для кэширования, по меньшей мере, одной интересующей ячейки в кэш.
7. Носитель данных по п. 6, дополнительно содержащий инструкции для извлечения из кэша, по меньшей мере, одной интересующей ячейки и для передачи представления, по меньшей мере, одной интересующей ячейки, по меньшей мере, в дополнительный браузер, который связан, по меньшей мере, с еще одним из пользователей.
8. Носитель данных по п. 6, дополнительно содержащий инструкции для приема запроса, по меньшей мере, одной интересующей ячейки и для перенаправления запроса в кэш.
9. Носитель данных по п. 1, причем инструкции для идентификации, по меньшей мере, одной ячейки, интересующей, по меньшей мере, одного пользователя из множества пользователей, включают в себя инструкции для передачи имен страниц документа множеству пользователей совместно с контентом первой страницы документа и дополнительно содержат инструкции для приема выбора имени конкретной страницы документа, по меньшей мере, от одного пользователя из множества пользователей.
10. Носитель данных по п. 1, дополнительно содержащий инструкции для предоставления определенного количества ячеек просмотра вперед и определенного количества ячеек просмотра назад, имеющих место соответственно до и после, по меньшей мере, одной интересующей ячейки.
11. Носитель данных по п.1, причем инструкции для моделирования документа в качестве множества ячеек содержат инструкции для моделирования документа в качестве структуры данных графа, обеспечивающей семантическую модель документа, причем семантическая модель документа обеспечивает иерархию документа.
12. Носитель данных по п. 11, причем структура данных графа содержит ациклический граф, содержащий различные типы вершин, наборы свойств и другие элементы, представляющие множество ячеек.
13. Носитель данных по п. 12, причем, по меньшей мере, один объект каждой ячейки из множества ячеек представлен в качестве, по меньшей мере, одной вершины ациклического графа структуры данных графа.
14. Компьютерно-считываемый носитель данных, на котором хранятся компьютерно-выполняемые инструкции, которые, при выполнении на компьютере, предписывают компьютеру осуществлять способ, содержащий этапы, на которых:
позволяют множеству пользователей сотрудничать дистанционно по поводу документа с использованием соответствующих браузеров,
принимают, на одном из браузеров, представления множества команд, обеспеченных, по меньшей мере, одним из множества пользователей, и
для каждой команды из множества команд определяют на основании типа команды, выполнять ли команду в отношении структуры данных графа или в отношении модели объекта документа, причем модель объекта документа содержит зависящую от браузера модель просмотра, представляющую документ, визуализированный из структуры данных графа для браузера, а структура графа содержит зависящую от браузера модель просмотра, обеспечивающую семантическую модель множества ячеек документа, причем семантическая модель обеспечивает иерархию документа,
если тип команды представляет собой тип команды редактирования,
определяют выполнять команду в отношении модели объекта документа,
модифицируют в браузере модель объекта документа для включения в нее, по меньшей мере, одной ревизии, заданной командой, и
обновляют структуру данных графа, чтобы включить в нее, по меньшей мере, одну ревизию, и,
если тип команды не представляет собой команду редактирования,
определяют выполнять команду в отношении структуры данных графа,
модифицируют в браузере структуру данных графа для включения в нее, по меньшей мере, одной ревизии, заданной командой, и
визуализируют модель объекта документа соответственно так, что документ, модифицированный посредством, по меньшей мере, одной ревизии, может быть представлен в браузере.
15. Компьютерно-считываемый носитель данных, на котором хранятся компьютерно-выполняемые инструкции, которые, при выполнении на компьютере, предписывают компьютеру осуществлять способ, содержащий этапы, на которых
позволяют множеству пользователей сотрудничать по поводу документа с использованием соответствующих браузеров,
передают представление фрагмента документа в браузер, который связан, по меньшей мере, с одним из пользователей,
принимают, по меньшей мере, одну ревизию в отношении фрагмента документа от браузера,
сохраняют фрагмент документа в первой области хранения, которая выполнена с возможностью сохранения данных, связанных с документом, в отношении которого осуществляют доступ и ревизию в течение заданного периода времени, и
сохраняют оставшуюся часть документа во второй области хранения, которая выполнена с возможностью сохранения данных, связанных с документом, в отношении которого не осуществляют доступ и ревизию в течение заданного периода времени.
16. Носитель данных по п. 15, дополнительно содержащий инструкции для преобразования фрагмента документа в или из, по меньшей мере, одного формата, который связан с клиентским приложением.
RU2010137977/08A 2008-03-14 2009-01-30 Многопользовательское сетевое сотрудничество RU2507567C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/048,615 2008-03-14
US12/048,615 US9436927B2 (en) 2008-03-14 2008-03-14 Web-based multiuser collaboration
PCT/US2009/032560 WO2009114218A2 (en) 2008-03-14 2009-01-30 Web-based multiuser collaboration

Publications (2)

Publication Number Publication Date
RU2010137977A RU2010137977A (ru) 2012-03-20
RU2507567C2 true RU2507567C2 (ru) 2014-02-20

Family

ID=41064352

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2010137977/08A RU2507567C2 (ru) 2008-03-14 2009-01-30 Многопользовательское сетевое сотрудничество

Country Status (15)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2661327C1 (ru) * 2017-10-04 2018-07-13 Общество с ограниченной ответственностью "Электронный архив" Способ обеспечения конфиденциальности при поточной операторской электронной обработке бумажных документов и программное обеспечение для его реализации

Families Citing this family (132)

* 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
US10936650B2 (en) 2008-03-05 2021-03-02 Ebay Inc. Method and apparatus for image recognition services
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
US9548108B2 (en) * 2008-06-18 2017-01-17 Super Talent Technology, Corp. Virtual memory device (VMD) application/driver for enhanced flash endurance
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
US9294421B2 (en) * 2009-03-23 2016-03-22 Google Inc. System and method for merging edits for 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
US8527602B1 (en) 2009-05-28 2013-09-03 Google Inc. Content upload system with preview and user demand based upload prioritization
US9021386B1 (en) 2009-05-28 2015-04-28 Google Inc. Enhanced user interface scrolling system
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
WO2011130307A1 (en) 2010-04-12 2011-10-20 Google Inc. Real-time collaboration in a hosted word processor
EP3214556A3 (en) 2010-04-12 2017-10-18 Google, Inc. Collaborative cursors in a hosted word processor
US8510399B1 (en) 2010-05-18 2013-08-13 Google Inc. Automated participants for hosted conversations
US9380011B2 (en) 2010-05-28 2016-06-28 Google Inc. Participant-specific markup
US9026935B1 (en) 2010-05-28 2015-05-05 Google Inc. Application user interface with an interactive overlay
US10127606B2 (en) 2010-10-13 2018-11-13 Ebay Inc. Augmented reality system and method for visualizing an item
GB2500356A (en) 2011-01-20 2013-09-18 Box 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
US9978040B2 (en) 2011-07-08 2018-05-22 Box, Inc. Collaboration sessions in a workspace on a cloud-based content management system
WO2013009337A2 (en) 2011-07-08 2013-01-17 Arnold Goldberg Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof
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
US11210610B2 (en) 2011-10-26 2021-12-28 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
US9773051B2 (en) 2011-11-29 2017-09-26 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
US9027108B2 (en) 2012-05-23 2015-05-05 Box, Inc. Systems and methods for secure file portability between mobile applications on a mobile device
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
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
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
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
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
GB2513671A (en) 2012-08-27 2014-11-05 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
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
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
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
JP5982343B2 (ja) 2012-10-17 2016-08-31 ボックス インコーポレイテッドBox, Inc. クラウドベース環境におけるリモートキー管理
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
EP2755151A3 (en) 2013-01-11 2014-09-24 Box, Inc. Functionalities, features and user interface of a synchronization client to a cloud-based environment
CN104885073B (zh) * 2013-01-11 2017-10-24 奴格里夫有限公司 用于生成数字版本的系统和方法
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
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
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
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
US10509527B2 (en) 2013-09-13 2019-12-17 Box, Inc. Systems and methods for configuring event-based automation in 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
GB2518298A (en) 2013-09-13 2015-03-18 Box Inc High-availability architecture for a cloud-based concurrent-access collaboration platform
US9535909B2 (en) 2013-09-13 2017-01-03 Box, Inc. Configurable event-based automation architecture for cloud-based collaboration platforms
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
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
US10866931B2 (en) 2013-10-22 2020-12-15 Box, Inc. Desktop application for accessing a cloud collaboration platform
US9348803B2 (en) 2013-10-22 2016-05-24 Google Inc. Systems and methods for providing just-in-time preview of suggestion resolutions
US10599753B1 (en) 2013-11-11 2020-03-24 Amazon Technologies, Inc. Document version control in collaborative environment
US10540404B1 (en) 2014-02-07 2020-01-21 Amazon Technologies, Inc. Forming a document collection in a document management and collaboration system
US9542391B1 (en) 2013-11-11 2017-01-10 Amazon Technologies, Inc. Processing service requests for non-transactional databases
US11336648B2 (en) 2013-11-11 2022-05-17 Amazon Technologies, Inc. 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
WO2015143083A1 (en) * 2014-03-18 2015-09-24 SmartSheet.com, 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
US10038731B2 (en) 2014-08-29 2018-07-31 Box, Inc. Managing flow-based interactions with cloud-based shared content
US10574442B2 (en) 2014-08-29 2020-02-25 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
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 浪潮电子信息产业股份有限公司 一种高容量低功耗冷存储设计方法
US20170134495A1 (en) * 2015-04-20 2017-05-11 Infraware Inc. Method and apparatus for sharing collaboratively edited document
KR101701110B1 (ko) * 2016-03-11 2017-02-13 주식회사 인프라웨어 공동 편집 문서를 공유하는 방법 및 장치
CN106570045B (zh) * 2015-10-13 2020-12-08 腾讯科技(深圳)有限公司 一种数据操作控制方法及其系统、用户终端
EP3452924A4 (en) * 2016-04-27 2020-01-01 Coda Project, Inc. SYSTEM, METHOD AND APPARATUS FOR OPERATING A UNIFIED DOCUMENT SURFACE WORKSPACE
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
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
CN112654995A (zh) * 2019-04-08 2021-04-13 谷歌有限责任公司 跟踪在线协作电子文档中的内容归因

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020065848A1 (en) * 2000-08-21 2002-05-30 Richard Walker Simultaneous multi-user document editing system
US20040205541A1 (en) * 2001-08-07 2004-10-14 D'amico Mario Web browser with annotation capability
RU2250492C2 (ru) * 1999-08-27 2005-04-20 Комфидекс Корп. Система и способ интегрирования печатных деловых документов с компьютерно-считываемыми данными, введенными по компьютерной сети
US7233951B1 (en) * 2004-02-18 2007-06-19 Microsoft Corporation Spreadsheet grid-like control for a web-based collaboration system
US20080059539A1 (en) * 2006-08-08 2008-03-06 Richard Chin Document Collaboration System and Method

Family Cites Families (21)

* 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
US7152220B2 (en) 1999-12-09 2006-12-19 Sensemaking Technologies Corp. Collaboration engine: adding collaboration functionality to computer software
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
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
US7640506B2 (en) 2003-06-27 2009-12-29 Microsoft Corporation Method and apparatus for viewing and managing collaboration data from within the context of a shared document
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
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2250492C2 (ru) * 1999-08-27 2005-04-20 Комфидекс Корп. Система и способ интегрирования печатных деловых документов с компьютерно-считываемыми данными, введенными по компьютерной сети
US20020065848A1 (en) * 2000-08-21 2002-05-30 Richard Walker Simultaneous multi-user document editing system
US20040205541A1 (en) * 2001-08-07 2004-10-14 D'amico Mario Web browser with annotation capability
US7233951B1 (en) * 2004-02-18 2007-06-19 Microsoft Corporation Spreadsheet grid-like control for a web-based collaboration system
US20080059539A1 (en) * 2006-08-08 2008-03-06 Richard Chin Document Collaboration System and Method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2661327C1 (ru) * 2017-10-04 2018-07-13 Общество с ограниченной ответственностью "Электронный архив" Способ обеспечения конфиденциальности при поточной операторской электронной обработке бумажных документов и программное обеспечение для его реализации

Also Published As

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

Similar Documents

Publication Publication Date Title
RU2507567C2 (ru) Многопользовательское сетевое сотрудничество
US8788760B2 (en) Adaptive caching of data
US8725793B2 (en) Architectural pattern for persistent web application design
US20010027457A1 (en) Method and apparatus for storing changes to file attributes without having to store an additional copy of the file contents
US9086914B2 (en) System and method for reducing startup cost of a software application
US9852204B2 (en) Read-only operations processing in a paxos replication system
CN102349062B (zh) 浏览器缓存与远程仓库同步的方法和系统
EP2727014B1 (en) Automatic synchronization of most recently used document lists
US20190205056A1 (en) Transparent data movement between a private cloud and storage ecosystem and another storage system
US11080207B2 (en) Caching framework for big-data engines in the cloud
CN103581332A (zh) HDFS架构及HDFS架构中NameNode节点的压力分解方法
CN102281312B (zh) 一种数据加载方法、系统和数据处理方法、系统
CN114265814B (zh) 一种基于对象存储的数据湖文件系统
Lindholm et al. Syxaw: Data synchronization middleware for the mobile web
US11727003B2 (en) Scaling query processing resources for efficient utilization and performance
Mustacoglu et al. A novel digital information service for federating distributed digital entities
Zhang et al. SMURF: Efficient and Scalable Metadata Access for Distributed Applications from Edge to the Cloud
Diwakar Reddy et al. Algorithms for Iterative Applications in MapReduce Framework
KR101345802B1 (ko) 룰 데이터 처리 시스템 및 그 방법
Carneiro Jr et al. Optimizing Your APIs
CN114579560A (zh) 一种数据平台及其应用方法

Legal Events

Date Code Title Description
PC41 Official registration of the transfer of exclusive right

Effective date: 20150526

MM4A The patent is invalid due to non-payment of fees

Effective date: 20200131