АВТООБНОВЛЕНИЕ С СОГЛАСОВАНИЕМ ВО ВРЕМЯ РАБОТЫ КЛИЕНТСКОГО ИНТЕРФЕЙСА
AUTHORIZATION WITH HARMONIZATION DURING WORK OF CUSTOMER INTERFACE

Уровень техники
[0001] Разработчик программного обеспечения может зачастую продолжать улучшать программное приложение, после того как программное приложение было выпущено. Разработчик программного обеспечения может распространять множественные версии программного приложения долгое время спустя, после того как дебютировала первая версия программного приложения. С помощью Интернета, предоставляющего возможность прямого соединения между конечным пользователем и разработчиком программного обеспечения, программное приложение может постоянно обновляться с сервера приложений, поддерживаемого разработчиком программного обеспечения.
Сущность изобретения
[0002] Это краткое изложение сущности изобретения предусмотрено для того, чтобы в упрощенной форме представить подборку идей, которые дополнительно описываются ниже в подробном описании. Это краткое изложение сущности изобретения не имеет намерения идентифицировать ключевые признаки или важнейшие признаки заявленного изобретения и не предназначено для ограничения объема заявленного изобретения.
[0003] Варианты осуществления, обсуждаемые ниже, относятся к выполнению предыдущей версией клиентского программного приложения передачи обслуживания во время исполнения к последующей версии клиентского программного приложения. Клиентское устройство может исполнять предыдущую версию клиентского программного приложения, в то же время инсталлируя последующую версию клиентского программного приложения. Клиентское устройство может выполнять согласование обновления между последующей версией и предыдущей версией. Клиентское устройство может выполнять подтверждение корректности во время исполнения в отношении последующей версии.
Краткое описание чертежей
[0004] Для того, чтобы описывать способ, которым вышеперечисленные и другие преимущества и признаки могут быть получены, более конкретное описание излагается и будет изображено посредством ссылки на конкретные варианты его осуществления, которые иллюстрируются на прилагаемых чертежах. Понимая то, что эти чертежи изображают только типовые варианты осуществления и, следовательно, не должны рассматриваться как ограничивающие их рамки, реализации будут описаны и объяснены с дополнительной спецификой и деталями посредством использования сопровождающих чертежей.
[0005] Фиг. 1 иллюстрирует в виде блок-схемы один вариант осуществления сети обновления приложения.
[0006] Фиг. 2 иллюстрирует в виде блок-схемы один вариант осуществления вычислительного устройства.
[0007] Фиг. 3 иллюстрирует в виде блок-схемы последовательности операций один вариант осуществления обмена данными для обновления приложения.
[0008] Фиг. 4 иллюстрирует в виде блок-схемы последовательности операций один вариант осуществления способа обновления клиентского программного приложения с помощью предыдущей версии клиентского программного приложения.
[0009] Фиг. 5 иллюстрирует в виде блок-схемы последовательности операций один вариант осуществления способа обновления клиентского программного приложения с помощью последующей версии клиентского программного приложения.
Подробное описание изобретения
[0010] Варианты осуществления обсуждаются подробно ниже. В то время как обсуждаются конкретные реализации, эти реализации представлены строго в целях иллюстрации. Специалист распознает, что другие компоненты и конфигурации могут быть использованы без отступления от существа и объема настоящего изобретения. Реализации могут быть машинореализованным способом, материальным машиночитаемым носителем, имеющим набор инструкций, детализирующих способ, сохраненный на нем, по меньшей мере, для одного процессора или устройства на стороне клиента.
[0011] Клиентское устройство может исполнять клиентское программное приложение, такое как клиентский интерфейс для облачной службы, которая использует модуль автообновления, чтобы незаметно для пользователя переходить от предыдущей версии клиентского программного приложения к последующей версии клиентского программного приложения. Предыдущая версия клиентского программного приложения является текущей используемой версией, в то время как последующая версия является версией, которая должна заменить текущую версию. Клиентское устройство может выполнять переход прозрачно во время исполнения, даже без уведомления пользователя. Последующая версия может выполнять подтверждение корректности во время исполнения, чтобы удостовериться в том, что последующая версия была инсталлирована правильно.
[0012] Предыдущая версия может выполнять согласование обновления для перехода к последующей версии без перезагрузки клиентского программного приложения. На высоком уровне согласование обновления может запускать последующую версию клиентского программного приложения. Последующая версия может отправлять запрос прекращения работы предыдущей версии, запрашивая у предыдущей версии инициирование прекращения работы и переход на последующую версию. Предыдущая версия может отвечать сообщением о состоянии прекращения работы, указывающим, готова ли предыдущая версия прекращать работу. Предыдущая версия может отправлять набор предыдущих данных в последующую версию, передавать в последующую версию данные о состоянии, такие как состояние базы данных, текущие задачи или другую информацию.
[0013] Если подтверждение корректности во время исполнения является неудачным, последующая версия может переключаться обратно на предыдущую версию. Последующая версия может регистрировать любые компоненты, которые должны быть использованы, чтобы выполнять инсталляцию, такие как компонентная объектная модель. Если подтверждение корректности во время выполнения является успешным, последующая версия может переключать любые точки входа приложения на точку в последующей версии, в то же время деинсталлируя предыдущую версию.
[0014] Таким образом, в одном варианте осуществления предыдущая версия клиентского программного приложения может выполнять передачу обслуживания во время выполнения последующей версии клиентского программного приложения. Клиентское устройство может исполнять предыдущую версию клиентского программного приложения, в то же время инсталлируя последующую версию клиентского программного приложения. Клиентское устройство может выполнять согласование обновления между последующей версией и предыдущей версией. Клиентское устройство может выполнять подтверждение корректности во время исполнения в отношении последующей версии.
[0015] Фиг. 1 иллюстрирует в виде блок-схемы один вариант осуществления сети 100 обновления приложения. Клиентское устройство 110, запускающее клиентское программное приложение, такое как клиентский интерфейс, может осуществлять доступ к серверу 120 приложений через сеть 130 передачи данных, чтобы проверять на сервере 120 приложений обновления для клиентского программного приложения. Предыдущая версия 112 клиентского программного приложения может инициировать модуль 114 инсталлятора, чтобы проверять обновление на сервере 120 приложений. Модуль 114 инсталлятора может скачивать и инсталлировать последующую версию 116 клиентского программного приложения. Дополнительно, модуль 114 инсталлятора может выполнять нацеленный опрос сервера 120 приложений, чтобы выполнить проверку на предмет незначительных обновлений и исправлений. После того как модуль 114 инсталлятора успешно инсталлировал последующую версию 116, предыдущая версия 112 может выполнять согласование обновления, чтобы подготавливать функционирование последующей версии 116 как активной версии клиентского программного приложения.
[0016] Фиг. 2 иллюстрирует блок-схему примерного вычислительного устройства 200, которое может действовать в качестве клиентского устройства 110. Вычислительное устройство 200 может объединять одно или более из аппаратных средств, программного обеспечения, микропрограммного обеспечения (firmware) и технологии системы на кристалле, чтобы реализовывать клиентское программное приложение. Вычислительное устройство 200 может включать в себя шину 210, процессор 220, память 230, хранилище 240 данных, устройство 250 ввода/вывода и интерфейс 260 связи. Шина 210, или другая система связи между компонентами, может обеспечивать связь между компонентами вычислительного устройства 200.
[0017] Процессор 220 может включать в себя, по меньшей мере, один традиционный процессор или микропроцессор, который интерпретирует и исполняет набор инструкций. Память 230 может быть оперативным запоминающим устройством (RAM) или другим типом динамического устройства хранения, которое хранит информацию и инструкции для исполнения посредством процессора 220. Память 230 может также хранить временные переменные или другую промежуточную информацию, используемую во время исполнения инструкций процессором 220. Хранилище 240 данных может включать в себя традиционное ROM-устройство или другой тип статического устройства хранения, которое хранит статическую информацию и инструкции для процессора 220. Устройство 240 хранения может включать в себя любой тип материального машиночитаемого носителя, такого как, например, магнитные или оптические носители записи, такие как цифровой видеодиск и его соответствующий привод. Материальный машиночитаемый носитель является физическим носителем, хранящим машиночитаемый код или инструкции, как противоположность энергозависимому носителю или сигналу. Устройство 240 хранения может хранить набор инструкций, детализирующих способ, которые, когда исполняются посредством одного или более процессоров, инструктирует одному или более процессорам выполнять способ.
[0018] Устройство 250 ввода/вывода может включать в себя один или более традиционных механизмов, которые разрешают пользователю вводить информацию в вычислительное устройство 200, такие как клавиатура, мышь, устройство распознавания голоса, микрофон, гарнитура, устройство распознавания жестов, сенсорный экран, устройство захвата жестов и т.д. Устройство 250 ввода/вывода может включать в себя один или более традиционных механизмов, которые выводят информацию для пользователя, включающие в себя дисплей, принтер, один или более динамиков, гарнитуру или носитель, такой как память или магнитный или оптический диск и соответствующий дисковый накопитель. Интерфейс 260 связи может включать в себя любой механизм типа приемопередатчика, который предоставляет возможность вычислительному устройству 200 связываться с другими устройствами или сетями. Интерфейс 260 связи может быть беспроводным, проводным или оптическим интерфейсом.
[0019] Вычислительное устройство 200 может выполнять такие функции в ответ на исполнение процессором 220 последовательности инструкций, содержащихся на компьютерно-читаемом носителе, таком как, например, память 230, магнитный диск или оптический диск. Такие инструкции могут быть считаны в память 230 с другого компьютерно-читаемого носителя, такого как устройство 240 хранения, или с отдельного устройства через интерфейс 260 связи.
[0020] Фиг. 3 иллюстрирует в виде блок-схемы последовательности операций один вариант осуществления обмена 300 данными для обновления приложения. Предыдущая версия (PV) 112 может проверять 302 сервер (AS) 120 приложений, чтобы увидеть, доступно ли обновление. Если обновление доступно, сервер 120 приложений может скачивать 304 модуль (IM) 114 инсталлятора в предыдущую версию 112. Если обновление не найдено, сервер 120 приложений может делать повторную попытку в более позднее время. Предыдущая версия 112 может запускать 306 модуль 114 инсталлятора. Модуль 114 инсталлятора может копировать 308 файлы для последующей версии (SV) 116 в файловую систему устройства 110 на стороне клиента. Модуль 114 инсталлятора может запускать 310 последующую версию 116. Последующая версия 116 может запрашивать 312, готова ли предыдущая версия 112 к прекращению работы, посредством отправки запроса прекращения работы.
[0021] Предыдущая версия 112 может сигнализировать 314 последующей версии 116, когда предыдущая версия 112 находится в состоянии "готовности к прекращению работы", отправляя сообщение о состоянии прекращения работы. Предыдущая версия 112 может отправлять согласование 316 обновления последующей версии 116, предоставляющее набор данных о состоянии приложения, такой как набор данных о состоянии процессора. Если предыдущая версия 112 готова к прекращению работы, последующая версия 116 может регистрировать 318 какие-либо компоненты, чтобы выполнять инсталляцию. Последующая версия 116 может подтверждать корректность 320 в регистрациях компонентов времени исполнения, как только инсталляция завершается. Если подтверждение корректности во время исполнения успешно, последующая версия 116 может переключать 322 любые точки входа в приложение на точку в последующей версии 116, так что запросы или команды для программного приложения идут в последующую версию 116. Если подтверждение корректности во время исполнения успешно, предыдущая версия 112 может быть деинсталлирована 324.
[0022] Фиг. 4 иллюстрирует в виде блок-схемы последовательности операций один вариант осуществления способа 400 обновления клиентского программного приложения с помощью предыдущей версии 112 клиентского программного приложения. Устройство 110 на стороне клиента может исполнять предыдущую версию 112 клиентского программного приложения (этап 402). Предыдущая версия 112 может скачивать последующую версию с сервера 120 приложений (этап 404). Предыдущая версия 112 может инициировать модуль 114 инсталлятора, чтобы инсталлировать последующую версию 116 (этап 406). Предыдущая версия 112 может принимать запрос прекращения работы от последующей версии 116, запрашивающий прекращение работы предыдущей версии 112 (этап 408). Предыдущая версия 112 может отправлять сообщение о состоянии прекращения работы последующей версии 116, указывающее, готова ли предыдущая версия 112 прекращать работу (этап 410). Если предыдущая версия 112 указывает в сообщении состояния прекращения работы, что предыдущая версия 112 не готова прекращать работу (этап 412), предыдущая версия 112 может принимать повторный запрос прекращения работы от последующей версии 115, после того как последующая версия ожидает в течение периода паузы и затем повторно отправляет запрос прекращения работы (этап 408).
[0023] Если предыдущая версия 112 указывает в сообщении о состоянии прекращения работы готовность к прекращению работы (этап 412), предыдущая версия 112 может выполнять согласование обновления с последующей версией 116 после инсталляции последующей версии 116 (этап 414). Предыдущая версия 112 может отправлять набор данных о состоянии предыдущей версии в последующую версию 116 как часть согласования обновления (этап 416). Если предыдущая версия 112 принимает какие-либо новые промежуточные данные приложения от пользователя во время инсталляции последующей версии 116, предыдущая версия 112 может буферизовать любые промежуточные данные приложения, принятые предыдущей версией 112, после того как инсталляция начинается (этап 418). Если подтверждение корректности во время исполнения в отношении последующей версии 116 было неудачным (этап 420), клиентское устройство 110 может возобновлять обычное выполнение предыдущей версии 112 после неудачи инсталляции или неудачи подтверждения корректности последующей версией 116 (этап 422).
[0024] Если подтверждение корректности во время исполнения в отношении последующей версии 116 было успешным (этап 420), предыдущая версия 112 может принимать уведомление о корректности от последующей версии 116 (этап 424). Предыдущая версия 112 может пересылать любые промежуточные данные приложения, принятые предыдущей версией 112, в последующую версию 116, либо буферизованные, либо вновь принятые (этап 426). Клиентское устройство 110 может деинсталлировать предыдущую версию 112 после успешной инсталляции и подтверждения корректности последующей версии 116 (этап 428).
[0025] Фиг. 5 иллюстрирует в виде блок-схемы последовательности операций один вариант осуществления способа 500 обновления клиентского программного приложения с помощью последующей версии клиентского программного приложения. Устройство 110 на стороне клиента может инсталлировать последующую версию 116 клиентского программного приложения (этап 502). Последующая версия 116 может отправлять запрос прекращения работы в предыдущую версию 112 (этап 504). Последующая версия 116 может принимать сообщение о состоянии прекращения работы от предыдущей версии 112, указывающее, готова ли предыдущая версия 112 прекращать работу (этап 506). Если предыдущая версия 112 указывает в сообщении о состоянии прекращения работы, что предыдущая версия 112 не готова прекращать работу (этап 508), последующая версия может ожидать в течение периода паузы (этап 510) перед повторной отправкой запроса прекращения работы в предыдущую версию 112 (этап 504).
[0026] Если предыдущая версия 112 указывает в сообщении о состоянии прекращения работы готовность прекращать работу (этап 508), последующая версия 116 может принимать согласование обновления от предыдущей версии 112 (этап 512). Последующая версия 116 может принимать набор данных о состоянии предыдущей версии от предыдущей версии 112 как часть подтверждения обновления (этап 514). Последующая версия 116 может регистрировать компонент (этап 516). Последующая версия 116 может выполнять подтверждение корректности во время исполнения в отношении последующей версии 116, в то время как предыдущая версия 112 клиентского программного приложения исполняется (этап 518). Последующая версия 116 может отправлять уведомление о корректности в предыдущую версию 112, указывающее результаты подтверждения корректности во время исполнения (этап 520).
[0027] Если подтверждение корректности во время исполнения в отношении последующей версии 116 было неудачным (этап 522), клиентское устройство 110 может переключать пользователя обратно на предыдущую версию 112 после неудачи инсталляции или неудачи подтверждения корректности последующей версией 116 (этап 524). Если подтверждение корректности во время исполнения в отношении последующей версии 116 было успешным (этап 522), последующая версия 116 может переключать точку входа в приложение с предыдущей версии 112 на последующую версию 116 (этап 526). Устройство 110 на стороне клиента может автоматически переходить с предыдущей версии 112 на последующую версию 116 (этап 528). Последующая версия 116 может принимать любые промежуточные данные приложения, принятые предыдущей версией 112, после того как инсталляция началась (этап 530). Последующая версия 116 может запрашивать, чтобы устройство 110 на стороне клиента деинсталлировало предыдущую версию 112 после успешного запуска и подтверждения корректности последующей версии 116 (этап 532).
[0028] Хотя изобретение было описано на языке, характерном для структурных признаков и/или методологических действий, объем изобретения, определяемый прилагаемой формулой изобретения, не ограничивается обязательно конкретными признаками или действиями, описанными выше. Вместо этого, характерные признаки и этапы, описанные выше, раскрываются как примерные формы реализации формулы изобретения.
[0029] Варианты осуществления в объемы настоящего изобретения могут также включать в себя энергонезависимые компьютерно-читаемые носители хранения для передачи или сохранения на них компьютерно-исполняемых инструкций или структур данных. Такие энергонезависимые компьютерно-читаемые носители хранения могут быть любыми доступными носителями, к которым может осуществлять доступ компьютер общего или специального назначения. В качестве примера, а не ограничения, такие энергонезависимые компьютерно-читаемые носители хранения могут содержать RAM, ROM, EEPROM, CD-ROM или другой накопитель на оптическом диске, накопитель на магнитном диске или другие магнитные запоминающие устройства, или любой другой носитель, который может быть использован, чтобы передавать или хранить желаемое средство кодирования программы в форме компьютерно-исполняемых инструкций или структур данных. Комбинации вышеописанного могут быть в рамках энергонезависимых компьютерно-читаемых носителей хранения.
[0030] Варианты осуществления могут также быть применены на практике в распределенных вычислительных окружениях, где задачи выполняются посредством локальных и удаленных устройств обработки данных, которые связаны (либо посредством фиксированных линий связи, беспроводных линий связи или их комбинации) через сеть передачи данных.
[0031] Компьютерно-исполняемые инструкции включают в себя, например, инструкции и данные, которые инструктируют компьютер общего назначения, специализированный компьютер или специализированное устройство обработки данных выполнять определенную функцию или группу функций. Компьютерно-исполняемые инструкции также включают в себя программные модули, которые исполняются посредством компьютеров в автономных или сетевых окружениях. Как правило, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и так далее, которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Компьютерно-исполняемые инструкции, ассоциированные структуры данных и программные модули представляют примеры средства кодирования программы для исполнения этапов способов, раскрытых в данном документе. Конкретная последовательность таких исполняемых инструкций или ассоциированных структур данных представляет примеры соответствующих действий для реализации функций, описанных на таких этапах.
[0032] Хотя вышеприведенное описание может содержать конкретные детали, они не должны истолковываться как ограничивающие формулу изобретения каким-либо образом. Другие конфигурации раскрытых вариантов осуществления являются частью объема изобретения. Например, принципы изобретения могут быть применены к каждому отдельному пользователю, когда каждый пользователь может индивидуально применять такую систему. Это предоставляет возможность каждому пользователю использовать преимущества изобретения, даже если какое-либо из большого числа возможных приложений не использует функциональность, описанную в данном документе. Множественные экземпляры электронных устройств, каждое, могут обрабатывать содержимое различными возможными способами. Реализации необязательно существуют в одной системе, используемой всеми конечными пользователями. Соответственно, именно прилагаемая формула изобретения и ее законные эквиваленты должны лишь определять изобретение, а не какие-либо конкретные приведенные примеры.