Уровень техники
Разработаны приложения Всемирной паутины («Web»), которые позволяют создавать и редактировать разнообразные документы. Например, имеются Web-приложения для создания и редактирования текстовых документов, электронных таблиц, презентаций и других типов документов. Эти документы можно также создавать и редактировать в совместимом клиентском приложении. Например, клиентское приложение для обработки текстов может выполняться на настольном компьютере или лэптопе и использоваться для создания текстового документа. Затем этот текстовый документ можно отредактировать, используя подходящее Web-приложение.
При использовании современных Web-приложений возникает одна проблема, когда пользователь Web-приложения редактирует документ одновременно с редактированием этого документа другим пользователем, использующим клиентское приложение. В этом сценарии создаются две версии документа. Одна версия документа содержит правки, сделанные с использованием Web-приложения, вторая версия документа содержит правки, сделанные с использованием клиентского приложения. Это может затруднить согласование изменений между двумя версиями данного документа.
Другая проблема, связанная с использованием современных Web-приложений, возникает тогда, когда клиентское приложение, такое как приложение Web-браузера, отсоединяется от сервера, разместившего Web-приложение. В этом сценарии могут возникнуть трудности при возвращении отредактированного документа в его предыдущее состояние, когда будет вновь установлено соединение приложения с сервером. Следовательно, при указанном отсоединении возможна потеря выполненных правок документа.
При использовании современных Web-приложений возможно появление других проблем, поскольку могут возникнуть трудности при переносе выполняющихся в данный момент сессий редактирования между компьютерами-серверами. Например, если Web-сервер, который реализует Web-приложение или размещает сессии редактирования, оказывается перегруженным, то могут возникнуть трудности при переносе выполняющихся в данный момент сессий редактирования на другой сервер для выравнивания нагрузки. Аналогичным образом могут возникнуть трудности при обновлении Web-приложения на компьютере-сервере, который выполняет в данный момент сессии редактирования.
В данном описании представлены вышеупомянутые и другие соображения.
Сущность изобретения
Здесь описаны технологии сериализации команд редактирования документа. Посредством реализации представленных здесь концепций и технологий можно создать единый документ, содержащий модификации к документу, выполненные с использованием как Web-приложения, так и клиентского приложения. Посредством реализации представленных здесь концепций и технологий можно также восстановить отредактированное состояние после отсоединения от Web-приложения. Вдобавок можно выровнять нагрузку между серверами, которые размещают у себя Web-приложения, и усовершенствовать их в ходе выполнения сессий редактирования.
Согласно одному представленному здесь аспекту обеспечено Web-приложение для создания и редактирования документов. Например, в одном варианте реализации Web-приложение предоставляет функциональные возможности для создания и редактирования документа презентации с использованием прикладной процедуры Web-браузера. Web-приложение запоминает документ или имеет доступ к месту в сети, где этот документ хранится.
Команды для модификации документа создаются посредством использования прикладной программы Web-браузера и передаются в Web-приложение, исполняющееся на компьютере-сервере. Web-приложение принимает упомянутые команды и выполняет их сериализацию. Она может включать в себя, например, добавление к командам данных, указывающих время приема команд и очередность этих команд во времени. Затем сериализованные команды запоминаются в виде потока команд. Этот поток команд хранится отдельно от документа. Следует понимать, что поток команд представляет различие (которое может упоминаться здесь как «дельта») между исходным документом и его текущим состоянием. Применение к документу команд, запомненных в потоке команд, переведет его в текущее состояние.
Согласно другому аспекту, поток команд можно применить к документу, когда через Web-приложение принят запрос на сохранение документа. Например, при приеме запроса на сохранение документа команды в потоке команд можно применить к документу в последовательном порядке (то есть в том порядке, в котором эти команды были первоначально созданы). Затем документ можно сохранить, как только указанные команды будут применены к указанному документу.
Согласно другому аспекту, вышеописанный поток команд можно использовать для совместной работы с документом. В одном примере клиентское приложение может модифицировать документ для создания модифицированного документа. Для редактирования одного и того же документа можно использовать Web-приложение, что приведет к созданию потока команд. Чтобы согласовать изменения между двумя версиями документа, команды в потоке команд можно применить к модифицированному документу. Таким образом, результирующий документ будет включать в себя правки, примененные к документу клиентским приложением, и правки, примененные к документу Web-приложением.
Согласно еще одному аспекту вышеописанный поток команд можно использовать для повышения качества функционирования Web-приложения. Например, Web-приложение можно сконфигурировать для поддержки потока команд в энергозависимой памяти, такой как память с произвольной выборкой («RAM»), для документов, как было описано выше. Для высвобождения памяти документ и поток команд можно хранить в запоминающем устройстве большой емкости, таком как накопитель на жестких дисках, и выгружать из энергозависимой памяти. При приеме дополнительных команд для данного документа его можно будет вернуть в текущее состояние, применив к этому документу запомненный поток команд. Затем можно выполнить сериализацию дополнительных команд и получить поток команд вышеописанным образом.
Согласно следующему аспекту, поток команд можно использовать для динамического выравнивания нагрузки на компьютерах-серверах, которые предоставляют Web-приложения. В этом варианте реализации идентифицируют один или несколько сильно загруженных компьютеров-серверов. Затем на этих сильно загруженных компьютерах-серверах идентифицируют выполняющиеся в данный момент сессии редактирования документов. Во время каждой из идентифицированных сессий редактирования к документу применяется поток команд. Затем документ перемещают на не сильно загруженный компьютер-сервер. В других вариантах осуществления поток команд и документ можно переместить на несильно загруженный компьютер-сервер без применения потока команд к данному документу. Затем на компьютер-сервер, на который был перемещен данный документ, возлагается ответственность за обработку данной сессии редактирования.
Согласно еще одному аспекту, поток команд можно использовать для выполнения без прерывания обновления на компьютере-сервере, который разместил у себя данное Web-приложение. В частности, идентифицируют выполняющуюся в данный момент сессию редактирования на компьютере-сервере, который выполняет версию Web-приложения низкого уровня. Затем документ и поток команд, связанный с идентифицированной, выполняющейся в данный момент сессией редактирования, перемещают на компьютер-сервер, исполняющий версию Web-приложения высокого уровня. Далее сессия редактирования возобновляется на компьютере-сервере, куда был перемещен документ и поток команд. Как только указанным образом все выполняющиеся в данный момент сессии редактирования будут перемещены на сервер низкого уровня, Web-приложение на этом сервере можно будет обновить. В одном варианте реализации команды в потоке команд применяют к документу до его перемещения на компьютер-сервер, исполняющий Web-приложение высокого уровня.
Следует иметь в виду, что описанный здесь поток команд можно также использовать для иных целей, таких как отмена/повторное выполнение восстановления документа и др. Также следует иметь в виду, что данный раздел предусмотрен для ознакомления в упрощенной форме с концепциями изобретения, которые подробно описаны ниже в разделе «Подробное описание изобретения». Данный раздел не претендует на идентификацию ключевых или существенных признаков заявленного изобретения, а также не предполагает использования его содержания для ограничения объема заявленного изобретения. Кроме того, заявленное изобретение не ограничивается вариантами реализации, которые устраняют какие-либо или все недостатки, отмеченные в той или иной части этого описания.
Краткое описание чертежей
Фиг.1 - схема программного обеспечения и архитектуры сети, показывающая одну, приведенную в качестве иллюстрации операционную среду для раскрытых здесь вариантов;
фиг.2 - схема архитектуры программного обеспечения, показывающая аспекты различных раскрытых здесь компонент для сериализации команд редактирования документа в одном раскрытом здесь варианте;
фиг.3 - схема структуры данных, показывающая аспекты потока команд, создаваемого и используемого в раскрытых здесь вариантах;
фиг.4 - логическая блок-схема, показывающая один иллюстративный процесс сериализации потока команд согласно одному раскрытому здесь варианту;
фиг.5 - схема структуры данных, показывающая аспекты одного процесса создания модифицированного документа, который включает в себя правки, выполненные в Web-приложении и клиентском приложении, согласно одному раскрытому здесь варианту;
фиг.6 - логическая блок-схема, показывающая один иллюстративный процесс оптимизации функционирования Web-приложения с использованием потока команд согласно одному раскрытому здесь варианту;
фиг.7 - логическая блок-схема, показывающая один иллюстративный процесс динамической балансировки нагрузки компьютера-сервера, разместившего у себя Web-приложение, с использованием потока команд согласно одному раскрытому здесь варианту;
фиг.8 - логическая блок-схема, показывающая один иллюстративный процесс обновления Web-приложения с использованием потока команд согласно одному раскрытому здесь варианту; и
фиг.9 - схема компьютерной архитектуры, показывающая в качестве иллюстрации аппаратную и программную архитектуру для вычислительной системы, способной реализовать различные, представленные здесь варианты.
Подробное описание изобретения
Последующее подробное описание раскрывает технологии сериализации команд для редактирования документов. Как кратко обсуждалось выше, можно создать поток команд, используя описанные здесь технологии, который включает в себя сериализованные команды для редактирования документа. Этот поток команд можно применить к модифицированному документу для создания единого документа, который содержит модификации документа, выполненные с использованием как Web-приложения, так и клиентского приложения. Поток команд можно также использовать: для восстановления отредактированного состояния документа после отсоединения от Web-приложения для редактирования документа; для балансировки нагрузки компьютера-сервера, разместившего у себя Web-приложение, даже в том случае, когда в данный момент выполняются сессии редактирования; для выполнения обновления сервера, разместившего у себя Web-приложение, когда в данный момент выполняются сессии редактирования, и для других целей.
Хотя описанное здесь изобретение представлено в общем контексте программных модулей, которые выполняются вместе с операционной системой и прикладными программами в компьютерной системе, специалистам в данной области техники очевидно, что могут выполняться другие варианты реализации в сочетании с другими типами программных модулей. В общем случае программные модули включают в себя стандартные программы, программы, компоненты, структуры данных и другие типы структур, которые выполняют конкретные задачи или реализуют конкретные типы абстрактных данных. Кроме того, специалистам в данной области техники должно быть ясно, что описанное здесь изобретение можно реализовать на практике с помощью других конфигураций компьютерной системы, включая карманные устройства, микропроцессорные системы, бытовые электронные приборы на базе микропроцессоров или программируемые бытовые электронные приборы, миникомпьютеры, универсальные компьютеры и т.п.
В последующем подробном описании делаются ссылки на сопроводительные чертежи, образующие часть описания, на которых показаны в иллюстративных целях конкретные варианты или примеры. Обратимся теперь к этим чертежам, на которых одинаковые ссылочные позиции представляют одинаковые элементы на ряде фигур, с помощью которых далее описываются аспекты вычислительной системы и методика сериализации команд редактирования документа с получением потока команд и использования этого потока команд.
На фиг.1 представлена схема архитектуры программного обеспечения и сетевой архитектуры, иллюстрирующая одну операционную среду для раскрытых здесь вариантов. Операционная среда 100, показанная на фиг.1, сконфигурирована для предоставления Web-приложения 114 клиентскому компьютеру 104, исполняющему прикладную программу 102 Web-браузера. Следует иметь в виду, что используемый здесь термин «Web-приложение» предполагает, что речь идет о приложении, к которому возможен доступ и которое можно использовать посредством стандартных протоколов и технологий, таких как HTTP (Протокол передачи гипертекстовых файлов), SOAP (Простой протокол доступа к объектам), асинхронный JAVASCRIPT и др. Термин «Web-приложение» не ограничивается только теми приложениями, которые доступны через Всемирную паутину (www). Точнее, Web-приложение 114 может быть виртуально доступно через сеть 108 любого типа, в том числе, но не только: глобальные сети, локальные сети, беспроводные сети и сети других типов.
В операционной среде 100, показанной на фиг.1, предусмотрено несколько внешних (front-end) серверов 106А-106С для исполнения внешней компоненты 110. Запросы для Web-приложения 114, полученные от прикладной программы 102 Web-браузера, равномерно распределяются по внешним серверам 1067А-106С. Таким путем один из внешних серверов 106А-106С может быть выделен для конкретной сессии редактирования документа. Команды, созданные прикладной программой 102 Web-браузера для конкретной сессии редактирования, принимаются компонентой 110 внешнего сервера на внешнем сервере 106А-106С, выделенном для сессии редактирования. Затем эти команды направляют в копию Web-приложения 114, исполняемую на одном из внутренних (back-end) компьютеров-серверов 112А-112С. Также можно выполнить балансировку нагрузки внутренних компьютеров-серверов 112А-112С, чтобы гарантировать высококачественное функционирование Web-приложения 114.
Как также показано на фиг.1, каждый из внутренних серверов 112А-112С поддерживает один или несколько дисков 116А-116С для хранения исполняемого программного кода, такого как операционная система и Web-приложение 114. Диски 116А-116С также можно использовать для хранения документов 118А-118С. Документы 118А-118С могут также храниться в другом месте, доступном через сеть 108 или другую сеть.
Согласно одному варианту реализации Web-приложение 114 обеспечивает функциональные возможности для создания и редактирования одного или нескольких типов документов. Например, Web-приложение 114 может быть сконфигурировано для создания и редактирования текстового документа, документа в виде электронной таблицы, документа презентации или другого типа документа. Как будет более подробно описано ниже, клиентское приложение, выполняющееся на клиентском компьютере 104, можно также сконфигурировать для создания и редактирования типов документов, совместимых с документами 118А-118С, созданными Web-приложением 114. Например, можно создать документ на клиентском компьютере 104 с использованием клиентского приложения, а затем отредактировать его с помощью Web-приложения 114. Аналогичным образом документ можно создать в Web-приложении 114, а затем отредактировать его с использованием клиентского приложения, выполняющегося на клиентском компьютере 104.
Следует иметь в виду, что операционная среда 100, показанная на фиг.1, является просто иллюстрацией, то есть можно также использовать другие типы операционных сред. Например, в других вариантах внешние серверы 106А-106С могут не использоваться. Вдобавок в других вариантах также может использоваться большее или меньшее количество внутренних серверов 112А-112С. Кроме того, хотя на фиг.1 показан один клиентский компьютер 104, следует иметь в виду, что операционная среда 100, показанная на фиг.1, способна поддерживать одновременно намного большее число клиентских компьютеров 104. Специалистам в данной области техники очевидна возможность использования других типов операционных сред, способных поддерживать описанные здесь концепции и технологии.
На фиг.2 представлена схема архитектуры программного обеспечения, показывающая аспекты раскрытых здесь различных компонент для сериализации команд редактирования документа согласно одному раскрытому здесь документу. Как показано на фиг.2 и как было кратко описано выше, пользователь клиентского компьютера 104 может использовать приложение 102 Web-браузера для взаимодействия с Web-приложением 114. В частности, пользователь на клиентском компьютере 104 может создать команду 202 для модификации документа 118. Например, если документ 118 представляет собой документ презентации, то команда 202 может быть предназначена для добавления нового слайда в презентацию, добавления графического элемента в презентацию, добавления или модификации текста в презентации или выполнения задачи редактирования какого-либо другого типа. Если документ 118 представляет собой текстовый документ, команда 202 может представлять собой команду для добавления текста в этот документ, форматирования текста, добавления графических элементов или выполнения других правок в документе. Таким образом, следует иметь в виду, что используемый здесь термин «команда» относится к любому типу команд для модификации документа.
Каждая команда 202, созданная на клиентском компьютере 104, включает в себя данные, идентифицирующие, каким образом следует выполнить правку документа 118. Эти данные можно задать, используя расширяемый язык разметки («XML»), двоичное кодирование или в другом формате. Например, если команда 202 представляет собой команду для редактирования текста в документе 118, то данные, запомненные в команде 202, могут описывать позицию в документе, где должна быть выполнена правка, а также каким образом ее следует выполнить. Если команда 202 представляет собой команду для добавления слайда в презентацию, то команда 202 может включать в себя данные, указывающие позицию, на которую должен быть добавлен новый слайд, заголовок нового слайда и другую информацию. Аналогичным образом также могут быть представлены команды других типов.
Как было кратко обсуждено выше, команда 202 создается на клиентском компьютере 104 и передается на внешний сервер, такой как внешний сервер 106А. В свою очередь, внешний сервер 106А передает команду 202 на подходящий внутренний сервер 112, такой как внутренний сервер 112А. Как кратко обсуждалось выше, каждый внутренний сервер 112 работает с копией Web-приложения 114. Как кратко обсуждалось выше, каждый внутренний сервер 112 поддерживает или имеет доступ к дисковому запоминающему устройству 116, где хранится документ 118, к которому следует применить команду 202. Однако в отличие от применения команды 202 непосредственно к документу 118 Web-приложение 114 поддерживает поток 206 команд.
Как более подробно обсуждается ниже, поток 206 команд включает в себя сериализованную последовательность команд 202А-202N. Чтобы сериализовать команды 202, Web-приложение 114 может добавить в команды 202А-202N данные, указывающие абсолютное или относительное время создания этих команд. Для сериализации команд 202А-202N можно также использовать другие типы данных, например, порядковый номер. Затем команды 202А-202N запоминаются в последовательном порядке в потоке 206 команд. В примере, показанном на фиг.2, поток 206 команд запоминается в энергозависимой памяти 204 внутреннего сервера 112. Следует иметь в виду, что в других вариантах поток 206 команд может храниться на диске 116.
На фиг.3 представлена схема структуры данных, показывающая аспекты потока 206 команд, создаваемого и используемого в раскрытых здесь вариантах осуществления изобретения. В частности, на фиг.3 показаны команды 202А-202N, которые были сериализованы и размещены в последовательном порядке в соответствии с тем порядком, в котором создавались команды 202А-202N. Таким образом, следует иметь в виду, что поток 206 команд, хранящий команды 202А-202N, представляет различие между документом 118 до модификации и этим же документом в текущем состоянии. Как более подробно описано ниже, Web-приложение 114 может применить команды 202А-202N к потоку 206 команд в последовательном порядке, чтобы сформировать текущее состояние документа 118. Подробности, касающиеся этого процесса, и ряд приложений этого процесса описываются ниже со ссылками на фиг.4-8.
На фиг.4 представлена логическая блок-схема, показывающая одну типичную процедуру 400 для сериализации потока команд согласно одному раскрытому здесь варианту осуществления. Следует иметь в виду, что логические операции, описанные здесь применительно к фиг.4 и другим фигурам, реализованы: (1) в виде последовательности реализуемых на компьютере действий или программных модулей, выполняющихся в вычислительной системе; и/или (2) в виде соединенных между собой машинных логических схем или схемных модулей в вычислительной системе. Выбор того или иного варианта зависит от качества функционирования и других требований к вычислительной системе. Соответственно описанные здесь логические операции относятся к операциям, структурным устройствам, действиям или модулям. Эти операции, структурные устройства, действия или модули можно реализовать программными средствами, программно-аппаратными средствами (firmware), в специализированных цифровых логических схемах или с помощью любой комбинации вышеперечисленных средств. Также следует иметь в виду, что возможно выполнение большего или меньшего количества операций, чем здесь описано и показано на упомянутых фигурах. Эти операции также могут выполняться в порядке, отличном от здесь описанного.
Процедура 400 начинается с операции 402, в которой Web-приложение 114 принимает команду 202. В ответ на прием команды процедура 400 переходит к операции 404, в которой Web-приложение 114 выполняет сериализацию команды 202. Эта операция может включать в себя, например, добавление данных к команде 202, указывающих абсолютное или относительное время приема команды 202. Также можно использовать другие типы механизмов для сериализации команды 202. После выполнения сериализации команды 202 процедура 400 немедленно переходит от операции 404 к операции 406.
В операции 406 сериализованная команда 202 запоминается в потоке 206 команд. Затем процедура 400 переходит к операции 408, где Web-приложение 114 определяет, принят ли запрос на сохранение документа 118 в соответствии с потоком команд. Если нет, то процедура 400 переходит к операции 402, описанной выше, где принимаются дополнительные команды 202, и выполняется их сериализация вышеописанным образом. Если в операции 408 принят запрос на сохранение документа 118, то процедура 400 переходит к операции 410.
В операции 410 к документу 118 последовательно применяются команды 202А-202N в потоке 206 команд для текущего документа 118. Таким образом, команды 202А-202N, запомненные в потоке 206 команд, применяются к документу 118 в том порядке, в котором они были созданы. Документ 118 после применения потока 206 команд представляет текущее состояние документа 118. Сразу после применения к документу 118 потока 206 команд процедура 400 переходит к операции 412, где документ 118 сохраняется на диске 118. Затем процедура 400 переходит к операции 402, в которой выполняется прием, сериализация и запоминание в потоке 206 команд дополнительных команд 202.
На фиг.5 представлена схема структуры данных, показывающая аспекты одного процесса создания модифицированного документа, который включает в себя правки, сделанные как с помощью Web-приложения, так и клиентского приложения, в одном раскрытом здесь варианте. Как кратко обсуждалось выше, настольное клиентское приложение 502 можно использовать на клиентском компьютере 104, который способен редактировать документы, созданные Web-приложением 114. Например, как кратко обсуждалось выше, настольное клиентское приложение 502 для обработки текстов можно использовать для редактирования документа 118А, созданного Web-приложением 114. Аналогичным образом, Web-приложение 114 можно использовать для редактирования документа 118А, созданного настольным клиентским приложением. В примере, показанном на фиг. 5, настольное клиентское приложение 502 было использовано для создания модификаций 504 для исходного документа 118А. Результирующий документ представляет собой модифицированный документ 118D.
В одном сценарии прикладная программа 102 Web-браузера может также использовать Web-приложение 114 для создания модификаций для исходного документа 118А. Однако, как обсуждалось выше, модификации для исходного документа 118А, созданные с помощью Web-приложения 114, представлены в потоке 206 команд. Например, в показанном на фиг.5 примере был создан поток 206 команд, включающий в себя две команды 202А-202В.
Чтобы согласовать изменения между версией документа, созданного Web-приложением 114, и версией документа, созданного настольным клиентским приложением 502, Web-приложение 114 можно сконфигурировать для применения к модифицированному документу 118D команд 202А-202В в потоке 206 команд. Таким путем создают обновленный документ 118E, который включает в себя модификации 504, сделанные для документа 118А настольным клиентским приложением 502, а также включает в себя модификации, сделанные для этого документа с помощью Web-приложения 114. Благодаря созданию указанным образом обновленного документа 118Е раскрытые здесь концепции и технологии позволяют осуществлять параллельное редактирование («соредактирование»), используя настольное клиентское приложение 502 и Web-приложение 114.
Следует иметь в виду, что возможны конфликтные ситуации в обновленном документе 118Е. Например, настольное клиентское приложение 502 можно использовать для удаления части текста в документе 118А. Одновременно Web-приложение 114 можно использовать для редактирования текста, удаленного с помощью настольного клиентского приложения 502. В этом примере конфликт возникает тогда, когда поток 206 команд применяется к модифицированному документу 118D. Следует иметь в виду, что для разрешения этого конфликта можно использовать различные механизмы. Например, пользователя можно попросить сделать свой выбор между конфликтующими правками. Для разрешения конфликта между модификациями, выполненными в клиентском приложении 502 и Web-приложении 114, можно также использовать другие механизмы.
На фиг.6 представлена логическая блок-схема, показывающая одну иллюстративную процедуру 600 для оптимизации функционирования Web-приложения 114 с использованием потока 206 команд согласно раскрытому здесь варианту осуществления. Процедура 600 начинается с операции 602, где выполняется сериализация команд 202, принятых в Web-приложении 114, с образованием потока 206 команд. Затем процедура 600 переходит от операции 602 к операции 604, где документ 118 и связанный с ним поток 206 команд сохраняются на диске 116. После сохранения документа 118 и потока 206 команд процедура 600 немедленно переходит к операции 606, где выполняется загрузка потока 206 команд из памяти 204. Как показано на фиг.2, поток 206 команд может храниться в энергозависимой памяти 204 внутреннего сервера 112. В результате загрузки потока 206 команд из энергонезависимой памяти 204 память 204 может быть освобождена для использования в других целях.
От операции 600 процедура 600 переходит к операции 608, где Web-приложение 114 определяет, была ли принята дополнительная команды 202 для сохраненного документа 118. Если нет, то процедура 600 переходит к операции 608, где выполняется еще одно указанное определение. Если команда принята, то процедура 600 переходит к операции 610, где происходит загрузка документа 118 с диска. В энергозависимую память 204 внутреннего сервера 112 также может быть загружен поток команд, сохраненный на диске.
Затем процедура 600 переходит к операции 612, где к документу 118 вышеописанным образом применяется запомненный поток 206 команд. Как обсуждалось выше, результатом этого станет документ 118, который представляет текущее состояние документа после применения всех команд в потоке 206 команд. Затем процедура 600 переходит к операции 614, где выполняется сериализация вновь полученной команды в потоке 206 команд вышеописанным образом. После операции 614 процедура 600 переходит к операции 616, на которой она заканчивается.
На фиг.7 представлена логическая блок-схема, показывающая одну иллюстративную процедуру 700 для динамической балансировки нагрузки компьютера-сервера 112, разместившего у себя Web-приложение, с использованием потока команд согласно раскрытому здесь одному варианту. Процедура 700 начинается с операции 702, где идентифицируют сильно загруженный внутренний сервер 112А-112С. Сильно загруженным компьютером-сервером является компьютер-сервер, ресурсы которого, такие как циклы CPU, память, память большой емкости и/или другие типы ресурсов, используются относительно чаще, чем у других серверов. Как только сильно загруженный внутренний сервер 112А-112С идентифицирован, процедура 700 переходит к операции 704.
В операции 704 идентифицируют одну или несколько сессий редактирования на идентифицированном, сильно загруженном внутреннем сервере 112А-112С, передаваемых на другой внутренний сервер. Выполняющиеся в данный момент сессии редактирования, передаваемые на другой сервер 112, можно идентифицировать на основе ресурсов, используемых сессией редактирования, случайным образом или как-либо иначе. После идентификации одной или нескольких выполняющихся в данный момент сессий редактирования, передаваемых на другой сервер 112, процедура 700 переходит к операции 706.
В операции 706 к соответствующему документу могут быть применены некоторые либо все команды в потоке 206 команд для идентифицированных сессий редактирования. Таким путем каждый документ можно привести в его текущее состояние до передачи документа на другой внутренний сервер 112. Следует иметь в виду, что этот процесс не является обязательным, и что поток 206 команд может не применяться к документу, связанному с выполняющейся в данный момент сессией редактирования до передачи этой сессии редактирования на другой внутренний сервер 112.
От операции 706 процедура 700 переходит к операции 708, где документы 118 и потоки 206 команд для идентифицированных, выполняющихся в данный момент сессий редактирования передаются на менее загруженный внутренний сервер 112А-112С. Внутренний сервер 112А-112С, на который передаются выполняющиеся в данный момент сессии редактирования, можно идентифицировать на основе использования ресурсов внутренним сервером-адресатом, например, на основе использования CPU, использования памяти, использование диска и/или использование ресурсов других типов. Внутренний сервер 112А-112С, на который переданы выполняющиеся в данный момент сессии редактирования, берет на себя ответственность за обработку этих выполняющихся в данный момент сессий редактирования. Таким путем любые новые команды, полученные для выполняющейся в данный момент сессии редактирования, будут обрабатываться внутренним сервером-адресатом 112А-112С. Однако следует иметь в виду, что динамическая балансировка нагрузки между внутренними серверами 112А-112С может быть выполнена без прерывания выполняющихся в данный момент сессий редактирования. После операции 708 процедура 700 переходит к операции 710, где она заканчивается.
На фиг.8 представлена логическая блок-схема, показывающая одну иллюстративную процедуру 800 для обновления Web-приложения с использованием потока команд согласно одному раскрытому здесь варианту. Процедура 800 начинается с операции 802, где версия высокого уровня Web-приложения 114 реализуется на внутренних серверах 112, которые одновременно не поддерживают какие-либо сессии редактирования. Затем процедура 800 переходит к операции 804, где обновленным серверам 112 разрешается начать размещение сессий редактирования. Как только серверам 112 высокого уровня разрешается размещение у себя сессий редактирования, процедура 800 переходит к операции 806.
В операции 806 идентифицируются выполняющиеся в данный момент сессии редактирования на сервере 112, который выполняет Web-приложение 114 низкого уровня. Для каждой идентифицированной, выполняющейся в данный момент сессии редактирования к соответствующему документу применяются команды 202 в потоке 206 команд. Затем процедура 800 переходит к операции 808, где документы для выполняющихся в данный момент сессий редактирования передаются на обновленные серверы 112, на которых исполняется версия Web-приложения 114 высокого уровня. Затем серверы-компьютеры, которым были переданы указанные документы, берут на себя функцию размещения указанных, выполняющихся в данный момент сессий редактирования.
Как только все выполняющиеся в данный момент сессии редактирования будут перенесены с внутреннего сервера 112 низкого уровня, процедура 600 переходит к операции 810, где может быть выполнено обновление компьютеров-серверов низкого уровня с использованием версии Web-приложения 114 высокого уровня. Затем процедура 800 переходит с операции 810 к операции 812, где она заканчивается. С учетом вышесказанного следует иметь в виду, что Web-приложение 114 может обновляться и без воздействия на выполняющиеся в данный момент сессии редактирования.
На фиг.9 представлена схема компьютерной архитектуры, показывающая приведенные в качестве примера компьютерные аппаратные и программные средства для вычислительной системы, способной реализовать различные представленные здесь варианты. Компьютерная архитектура, показанная на фиг.9, соответствует стандартному настольному компьютеру, компьютеру типа «лэптоп» или компьютеру-серверу и может быть использована для выполнения различных описанных здесь программных компонент.
Компьютерная архитектура, показанная на фиг.9, включает в себя центральный процессор 902 («CPU»), системную память 908, включающую в себя память 914 с произвольным доступом («RAM») и память 916 только для считывания («ROM), а также системную шину 904, которая соединяет память с CPU 902. Базовая система ввода/вывода («BIOS»), содержащая базовые процедуры, которые помогают передавать информацию между элементами в компьютере 900, например, во время запуска, хранится в ROM 916. Компьютер 900 кроме того включает в себя запоминающее устройство 910 большой емкости для хранения операционной системы 918, прикладных программ и других программных модулей, которые более подробно описаны ниже.
Запоминающее устройство 910 большой емкости соединено с CPU 902 через контроллер памяти большой емкости (не показан), соединенный с шиной 904. Запоминающее устройство 910 большой емкости и соответствующий машиночитаемый носитель информации обеспечивают энергонезависимое хранение для компьютера 900. Хотя описание содержащегося здесь машиночитаемого носителя информации относится к запоминающему устройству большой емкости, такому как накопитель на жестком диске или компакт-диске (CD-ROM), специалистам в данной области техники очевидно, что машиночитаемый носитель информации может представлять собой любую имеющуюся компьютерную запоминающую среду, к которой возможен доступ со стороны компьютера 900.
Например, но не как ограничение, машиночитаемый носитель информации может включать в себя энергозависимую и энергонезависимую, съемную или несъемную среду, реализованную любым способом или по любой технологии, предназначенной для хранения информации, такой как считываемые компьютером команды, структуры данных, программные модули или другие данные. Например, машиночитаемый носитель информации включает в себя, но не только: RAM (ОЗУ), ROM (ПЗУ), EPROM (стираемое программируемое ПЗУ), EEPROM (электрически стираемое программируемое ПЗУ), флэш-память или иная твердотельная память, выполненная по другой технологии, CD-ROM (ПЗУ на компакт-диске), цифровые универсальные диски («DVD»), HD-DVD (DVD высокой четкости), диски BLU-RAY или другое оптическое запоминающее устройство, магнитные кассеты, магнитная лента, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, либо любой другой носитель, который можно использовать для хранения необходимой информации и к которому может быть обеспечен доступ со стороны компьютера 900.
Следует иметь в виду, что описанный здесь машиночитаемый носитель информации также охватывает среды связи. Среда связи, как правило, содержит в себе считываемые компьютером команды, структуры данных, программные модули и другие данные в модулированном сигнале передачи данных, таком как несущая волна или другой механизм транспортировки, и включает в себя любую среду, обеспечивающую доставку информации. Термин «модулированный сигнал передачи данных» относится к сигналам, которые имеют одну или несколько характеристик, устанавливаемых или изменяемых таким образом, чтобы обеспечить кодирование информации в этом сигнале. Например, но не как ограничение, среда связи включает в себя проводную среду, такую как проводная сеть или прямое проводное соединение, и беспроводную среду, такую как акустическая, радиочастотная, инфракрасная или иная беспроводная среда. В понятие «машиночитаемый носитель информации», также следует включить комбинации из любых вышеперечисленных сред. Машиночитаемый носитель информации не включает в себя среду связи.
Согласно различным вариантам компьютер 900 может работать в сетевом окружении, используя логические соединения с удаленными компьютерами через сеть, такую как сеть 920. Компьютер 900 может быть подсоединен к сети 920 через блок 906 сетевого интерфейса, соединенный с шиной 904. Следует иметь в виду, что блок 906 сетевого интерфейса также можно использовать для подсоединения к сетям и удаленным компьютерным системам других типов. Компьютер 900 также может включать в себя контроллер 912 ввода/вывода для приема и обработки входных данных от ряда других устройств, в том числе клавиатуры, мыши или электронного пера (на фиг.9 не показаны). Аналогичным образом контроллер ввода/вывода может обеспечить вывод данных на экран дисплея, принтер или устройство вывода другого типа (также не показанных на фиг.9).
Как кратко упоминалось выше, в запоминающем устройстве 910 большой емкости и RAM 914 компьютера 900 может храниться несколько программных модулей и файлов данных, в том числе операционная система 918, подходящая для управления работой сетевого настольного компьютера, компьютера типа «лэптоп» или компьютера-сервера. Запоминающее устройство 910 большой емкости и RAM 914 также могут хранить один или несколько программных модулей. В частности, запоминающее устройство 910 большой емкости и RAM 914 могут хранить прикладную программу 102 Web-браузера и/или Web-приложение 114 и другие вышеописанные программные компоненты. Запоминающее устройство 910 большой емкости и RAM 914 также могут хранить другие программные модули и данные, например, поток 206 команд.
В общем случае программные приложения или модули при их загрузке в CPU 902 и исполнении позволяют преобразовать CPU 902 и весь компьютер 900, являющийся компьютерной системой общего назначения, в специализированную вычислительную систему, приспособленную к выполнению представленных здесь функций. CPU 902 может быть сформирован из некоторого количества транзисторов или других дискретных схемных элементов, которые по отдельности или вместе могут находиться в некотором количестве состояний. В частности, CPU 902 может функционировать как один или несколько конечных автоматов в соответствии с исполняемыми командами, содержащимися в программных средствах или модулях. Эти исполняемые компьютером команды могут преобразовать CPU 902, задав алгоритм перехода CPU 902 из состояния в состояние, тем самым обеспечив физическое преобразование состояний транзисторов или других дискретных аппаратных элементов, образующих CPU 902.
Кодирование программных средств или модулей в запоминающем устройстве большой емкости также обеспечивает преобразование физической структуры запоминающего устройства большой емкости или соответствующего машиночитаемого носителя информации. Конкретное преобразование физической структуры может зависеть от различных факторов в разных описанных здесь вариантах реализации. Примеры указанных факторов могут включать в себя, но не только: технологию, используемую для реализации машиночитаемого носителя информации независимо от того, является ли машиночитаемый носитель информации основной или вспомогательной памятью и т.п. Например, если машиночитаемый носитель информации реализован в виде памяти на основе полупроводников, то программные средства или модули могут преобразовать физическое состояние полупроводниковой памяти, если в ней закодированы указанные программные средства. Например, программные средства могут обеспечить преобразование состояний транзисторов, конденсаторов или других дискретных схемных элементов, образующих полупроводниковую память.
В другом примере машиночитаемый носитель информации может быть реализован с использованием магнитной или оптической технологии. В таких вариантах реализации программные средства или модули могут преобразовать физическое состояние магнитной или оптической среды, если эти программные средства в ней закодированы. Указанные преобразования могут включать в себя изменение магнитных характеристик конкретных мест в данной магнитной среде. Эти преобразования также могут включать в себя изменение физических свойств или характеристик конкретных мест в данной оптической среде для изменения оптических характеристик этих мест. Возможны другие преобразования физической среды, если они не выходят за рамки объема и существа настоящего изобретения, причем предшествующие примеры приведены только для облегчения обсуждения этого вопроса.
Из предшествующего описания очевидно, что здесь были представлены технологии для сериализации команд редактирования документа с получением потока команд, а также для использования полученного потока команд. Хотя представленное здесь изобретение было описано в терминах, характерных для описания структурных признаков компьютеров, методических действий и машиночитаемых носителей информации, должно быть понятно, что объем изобретения, определяемый в прилагаемой формуле изобретения, не ограничивается конкретными описанными здесь признаками, действиями или носителями. Скорее, раскрытые здесь конкретные признаки, действия и носители являются примерами реализации пунктов формулы изобретения.
Приведенное выше описание изобретения носит лишь иллюстративный характер, и его не следует трактовать как ограничение. Можно предложить различные модификации и изменения, касающиеся вышеописанного изобретения, не следуя описанным здесь иллюстративным вариантам и приложениям, при условии, что эти модификации и изменения не выходят за рамки существа и объема настоящего изобретения, которые изложены в нижеследующей формуле изобретения.
название | год | авторы | номер документа |
---|---|---|---|
Web-СЛУЖБА ДЛЯ ОБНАРУЖЕНИЯ УДАЛЕННЫХ ПРИЛОЖЕНИЙ | 2004 |
|
RU2359314C2 |
ОГРАНИЧЕННАЯ ПЛАТФОРМА ДРАЙВЕРОВ, КОТОРАЯ ЗАПУСКАЕТ ДРАЙВЕРЫ В ПЕСОЧНИЦЕ В ПОЛЬЗОВАТЕЛЬСКОМ РЕЖИМЕ | 2013 |
|
RU2646332C2 |
ВСТАВКА МУЛЬТИМЕДИЙНОГО ФАЙЛА ЧЕРЕЗ ОСНОВАННОЕ НА ВЕБ-ТЕХНОЛОГИИ РАБОЧЕЕ ПРИЛОЖЕНИЕ ДЛЯ НАСТОЛЬНОЙ СИСТЕМЫ | 2009 |
|
RU2491635C2 |
СПОСОБЫ ДЛЯ МОДИФИКАЦИИ ДОКУМЕНТА С ИСПОЛЬЗОВАНИЕМ СКРЫТОЙ ПОВЕРХНОСТИ ПЕРЕНОСА | 2009 |
|
RU2507573C2 |
ИНТЕЛЛЕКТУАЛЬНАЯ МАРШРУТИЗАЦИЯ | 2010 |
|
RU2520360C2 |
СПОСОБЫ ДЛЯ АДАПТИРОВАНИЯ ИНТЕРПРЕТИРУЮЩЕГО ВРЕМЯ ВЫПОЛНЕНИЯ ПРИЛОЖЕНИЯ ДЛЯ МНОЖЕСТВЕННЫХ КЛИЕНТОВ | 2012 |
|
RU2608472C2 |
ИСПОЛЬЗОВАНИЕ ПРЕДВАРИТЕЛЬНОЙ ОБРАБОТКИ НА СЕРВЕРЕ ДЛЯ РАЗВЕРТЫВАНИЯ ПРЕДСТАВЛЕНИЙ ЭЛЕКТРОННЫХ ДОКУМЕНТОВ В КОМПЬЮТЕРНОЙ СЕТИ | 2010 |
|
RU2555219C2 |
АРХИТЕКТУРА УДАЛЕННОЙ РАБОТЫ С ГРАФИКОЙ | 2009 |
|
RU2493582C2 |
НАВИГАЦИЯ В ПРИЛОЖЕНИИ БАЗЫ ДАННЫХ | 2010 |
|
RU2544774C2 |
МНОГОПОЛЬЗОВАТЕЛЬСКОЕ СЕТЕВОЕ СОТРУДНИЧЕСТВО | 2009 |
|
RU2507567C2 |
Изобретение относится к средствам сериализации команд редактирования документа. Технический результат заключается в уменьшении появления ошибок при согласованности изменений между двумя версиями документами. Сохраняют документ на компьютере-сервере. Принимают множество пользовательских команд, используя основывающиеся на web приложения, предписывающих модифицировать документ. Выполняют сериализацию принятых команд. Сохраняют сериализованные команды в последовательном порядке в потоке команд отдельно от документа. Определяют, является ли компьютер-сервер сильно загруженным компьютером-сервером. Если компьютер-сервер является сильно загруженным компьютером-сервером, то определяют, есть ли выполняющаяся в текущий момент сессия редактирования документа для данного документа. Если есть выполняющаяся в текущий момент сессия редактирования документа, применяют поток команд к документу. Переносят документ на несильно загруженный компьютер-сервер. 3 н. и 14 з.п. ф-лы, 9 ил.
1. Компьютерно-реализуемый способ сериализации команд редактирования документа, содержащий выполнение компьютерно-реализуемых операций, в соответствии с которыми:
сохраняют документ на компьютере-сервере;
принимают множество пользовательских команд, используя основывающиеся на web приложения, предписывающих модифицировать документ;
выполняют сериализацию принятых команд;
сохраняют сериализованные команды в последовательном порядке в потоке команд отдельно от документа;
определяют, является ли компьютер-сервер сильно загруженным компьютером-сервером;
если компьютер-сервер является сильно загруженным компьютером-сервером, то определяют, есть ли выполняющаяся в текущий момент сессия редактирования документа для данного документа;
если есть выполняющаяся в текущий момент сессия редактирования документа, применяют поток команд к документу; и затем
переносят документ на несильно загруженный компьютер-сервер.
2. Компьютерно-реализуемый способ по п. 1, дополнительно содержащий этапы, на которых:
принимают запрос на сохранение документа; и
в ответ на прием данного запроса применяют команды в потоке команд к документу в последовательном порядке и сохраняют документ.
3. Компьютерно-реализуемый способ по п. 2, в котором первое приложение модифицирует документ, чтобы сгенерировать модифицированный документ, при этом второе приложение применяет команды в сериализованном потоке команд к модифицированному документу.
4. Компьютерно-реализуемый способ по п. 3, в котором первое приложение представляет собой клиентское приложение рабочего стола, а второе приложение представляет собой web-приложение.
5. Компьютерно-реализуемый способ по п. 2, дополнительно содержащий этапы, на которых:
сохраняют документ и поток команд в запоминающем устройстве большой емкости;
выгружают поток команд из энергозависимой памяти;
принимают вторую команду;
в ответ на прием второй команды загружают документ из запоминающего устройства большой емкости, применяют поток команд к документу, выполняют сериализацию второй команды и сохраняют сериализованную вторую команду в потоке команд отдельно от документа.
6. Компьютерно-реализуемый способ по п. 1, дополнительно содержащий этапы, на которых:
определяют, есть ли выполняющаяся в текущий момент сессия редактирования документа на компьютере-сервере, исполняющем прикладную программу низкого уровня для редактирования документа;
если выполняющаяся в текущий момент сессия редактирования документа есть на компьютере-сервере, исполняющем такую прикладную программу низкого уровня, то переносят документ и поток команд, связанный с выполняющейся в текущий момент сессией редактирования документа, на компьютер-сервер, исполняющий прикладную программу высокого уровня для редактирования документа.
7. Компьютерно-реализуемый способ по п. 6, дополнительно содержащий этап, на котором применяют команды в потоке команд к документу в последовательном порядке перед переносом документа на компьютер-сервер, исполняющий упомянутую прикладную программу высокого уровня.
8. Машиночитаемый носитель информации, на котором сохранены машиноисполняемые команды, которые при их исполнении компьютером предписывают компьютеру:
сохранять документ на компьютере-сервере;
принимать множество пользовательских команд, используя основывающиеся на web приложения, предписывающих модифицировать документ;
выполнять сериализацию принятых команд;
сохранять сериализованные команды в последовательном порядке в потоке команд отдельно от документа;
принимать запрос на сохранение документа;
в ответ на прием данного запроса определять, является ли компьютер-сервер сильно загруженным компьютером-сервером;
если компьютер-сервер является сильно загруженным компьютером-сервером, то определять, есть ли выполняющаяся в текущий момент сессия редактирования документа для данного документа;
если есть выполняющаяся в текущий момент сессия редактирования документа, применять поток команд в потоке команд к документу в последовательном порядке и сохранять документ; и затем
переносить сохраненный документ на несильно загруженный компьютер-сервер.
9. Машиночитаемый носитель информации по п. 8, при этом первое приложение модифицирует документ, чтобы сгенерировать модифицированный документ, и второе приложение применяет команды в потоке сериализованных команд к модифицированному документу.
10. Машиночитаемый носитель информации по п. 9, при этом первое приложение представляет собой клиентское приложение рабочего стола и второе приложение представляет собой Web-приложение.
11. Машиночитаемый носитель информации по п. 8, на котором дополнительно сохранены машиноисполняемые команды, которые при их исполнении компьютером предписывают компьютеру:
определять, есть ли выполняющаяся в текущий момент сессия редактирования документа на компьютере-сервере, исполняющем прикладную программу низкого уровня для редактирования документа;
если выполняющаяся в текущий момент сессия редактирования документа есть на компьютере-сервере, исполняющем такую прикладную программу низкого уровня, то переносить документ и поток команд, связанный с выполняющейся в текущий момент сессией редактирования документа, на компьютер-сервер, исполняющий прикладную программу высокого уровня для редактирования документа.
12. Машиночитаемый носитель информации по п. 11, на котором дополнительно сохранены машиноисполняемые команды, которые при их исполнении компьютером предписывают компьютеру применять команды в потоке команд к документу в последовательном порядке перед переносом документа на компьютер-сервер, исполняющий упомянутую прикладную программу высокого уровня.
13. Машиночитаемый носитель информации по п. 8, на котором дополнительно сохранены машиноисполняемые команды, которые при их исполнении компьютером предписывают компьютеру:
сохранять документ и поток команд в запоминающем устройстве большой емкости;
выгружать поток команд из энергозависимой памяти;
принимать вторую команду;
в ответ на прием второй команды загружать документ из запоминающего устройства большой емкости, применять поток команд к документу, выполнять сериализацию второй команды и сохранять сериализованную вторую команду в потоке команд отдельно от документа.
14. Компьютерно-реализуемый способ сериализации команд редактирования документа, содержащий выполнение компьютерно-реализуемых операций, в соответствии с которыми:
сохраняют документ на компьютере-сервере;
принимают в первом приложении множество пользовательских команд, используя основывающиеся на web приложения, предписывающих модифицировать документ;
выполняют сериализацию принятых команд посредством первого приложения;
сохраняют сериализованные команды в последовательном порядке в потоке команд отдельно от документа;
модифицируют документ посредством второго приложения, создавая тем самым модифицированный документ;
определяют, является ли компьютер-сервер сильно загруженным компьютером-сервером;
если компьютер-сервер является сильно загруженным компьютером-сервером, то определяют, есть ли выполняющаяся в текущий момент сессия редактирования документа для данного документа;
если есть выполняющаяся в текущий момент сессия редактирования документа, применяют сериализованные команды в потоке команд к модифицированному документу посредством первого приложения; и затем
переносят сохраненный документ на несильно загруженный компьютер-сервер.
15. Компьютерно-реализуемый способ по п. 14, дополнительно содержащий этапы, на которых:
принимают в первом приложении запрос на сохранение документа; и
в ответ на прием данного запроса, применяют команды в потоке команд к документу в последовательном порядке и сохраняют документ.
16. Компьютерно-реализуемый способ по п. 15, дополнительно содержащий этапы, на которых:
сохраняют документ и поток команд в запоминающем устройстве большой емкости;
выгружают поток команд из энергозависимой памяти;
принимают вторую команду;
в ответ на прием второй команды загружают документ из запоминающего устройства большой емкости, применяют поток команд к документу, выполняют сериализацию второй команды и сохраняют сериализованную вторую команду в потоке команд отдельно от документа.
17. Компьютерно-реализуемый способ по п. 14, дополнительно содержащий этапы, на которых:
определяют, есть ли выполняющаяся в текущий момент сессия редактирования документа на компьютере-сервере, исполняющем прикладную программу низкого уровня для редактирования документа;
если выполняющаяся в текущий момент сессия редактирования документа есть на компьютере-сервере, исполняющем такую прикладную программу низкого уровня, то применяют команды в потоке команд к документу; и
переносят документ на компьютер-сервер, исполняющий прикладную программу высокого уровня для редактирования документа.
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
US 7769810 B1, 03.08.2010 | |||
US 7607129 B2, 20.10.2009 | |||
Пресс для выдавливания из деревянных дисков заготовок для ниточных катушек | 1923 |
|
SU2007A1 |
СИСТЕМА И СПОСОБ ДЛЯ СОВМЕСТНОГО ИСПОЛЬЗОВАНИЯ ОБЪЕКТОВ МЕЖДУ КОМПЬЮТЕРАМИ ПО СЕТИ | 2005 |
|
RU2379755C2 |
Авторы
Даты
2016-09-20—Публикация
2011-10-25—Подача