разделение режимов работы для изменений приложения
Классы МПК: | G06F9/06 с хранимой программой, те с записью и хранением программы в устройствах памяти вычислительных машин |
Автор(ы): | ШИХАН Джон М. (US), РИЕРСОН Кристофер Х. (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2009-07-16 публикация патента:
20.08.2013 |
Изобретение относится к средствам обработки изменений в приложениях. Технический результат заключается в уменьшении времени конфигурирования приложения. Исполняют приложение на первом устройстве, причем это приложение имеет первую конфигурацию и первый режим работы. Обнаруживают изменение в отношении упомянутого приложения, причем это изменение задает второй режим работы. Определяют первый контекст для второго режима работы, причем первый контекст не является пользовательским контекстом или машинным контекстом. Обращаются к политике, заданной для первого контекста, и сохраняют упомянутое изменение (288) на основании первого контекста, как задано в этой политике. 2 н. и 13 з.п. ф-лы, 2 ил.
Формула изобретения
1. Компьютерно-реализуемый способ обработки изменений в приложениях, содержащий этапы, на которых:
исполняют приложение (212) на первом устройстве, причем это приложение имеет первую конфигурацию и первый режим работы;
обнаруживают изменение (214) в отношении упомянутого приложения, причем это изменение задает второй режим работы;
определяют первый контекст (216) для второго режима работы, причем первый контекст не является пользовательским контекстом или машинным контекстом;
обращаются к политике (222), заданной для первого контекста; и
сохраняют упомянутое изменение (288) на основании первого контекста, как задано в этой политике.
2. Способ по п.1, в котором упомянутый контекст представляет собой специфичный для сеанса контекст.
3. Способ по п.1, в котором упомянутый контекст представляет собой кросс-машинный контекст.
4. Способ по п.3, в котором упомянутый кросс-машинный контекст содержит по меньшей мере одну виртуальную машину.
5. Способ по п.1, в котором упомянутое приложение содержит множество ресурсов, и упомянутое изменение затрагивает по меньшей мере один из упомянутых ресурсов.
6. Способ по п.5, в котором один из упомянутого множества ресурсов является вторым приложением.
7. Способ по п.5, в котором упомянутое приложение исполняется на первой аппаратной платформе, а один из упомянутых ресурсов исполняется на второй аппаратной платформе.
8. Способ по п.5, в котором упомянутое приложение исполняется в первом виртуальном контексте.
9. Способ по п.8, в котором по меньшей мере один из упомянутого множества ресурсов находится во втором виртуальном контексте.
10. Способ по п.9, в котором первый виртуальный контекст является контекстом виртуализации приложения.
11. Способ по п.10, в котором второй виртуальный контекст является контекстом виртуализации приложения.
12. Способ по п.10, в котором второй виртуальный контекст является контекстом виртуальной машины.
13. Способ по п.8, в котором первый виртуальный контекст является первым контекстом виртуальной машины.
14. Компьютерная система для обработки изменений в отношении приложений, содержащая
политику (110), содержащую реализации изменений, основывающиеся на по меньшей мере одном из множеств контекстов;
исполнительную систему (106), сконфигурированную исполнять первое приложение в упомянутом множестве контекстов;
систему (108) отслеживания изменений, сконфигурированную
определять, что в отношении первого приложения было сделано изменение,
определять по меньшей мере один контекст для этого изменения,
сохранять упомянутое изменение так, чтобы это изменение можно было реализовать, когда упомянутый по меньшей мере один контекст является текущим контекстом.
15. Система по п.14, в которой упомянутое множество контекстов содержит по меньшей мере один из группы, состоящей из
контекста, специфичного для сеанса,
контекста, специфичного для типа сеанса,
кросс-машинного контекста и
дуального контекста приложения.
Описание изобретения к патенту
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Приложения могут быть изменены многими различными способами. В некоторых случаях, приложения могут быть изменены обновлением реестров, изменением конфигурационных файлов, обновлением динамически подключаемых библиотек или другими способами. Каждое изменение приложения может затрагивать участки операционной системы, которые, в свою очередь, могут затрагивать другие приложения, исполняемые в окружении операционной системы.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Режимы работы приложения могут быть сохранены и извлечены с использованием политик, которые определяют различные контексты, в которых используется данное приложение. Режимы работы приложения могут определять конфигурации или использования приложения, включая подключения и взаимодействия с другими приложениями. Приложения, являющиеся виртуализированными, могут иметь режимы работы, которые определены в пределах контекста использования, и на основании данного контекста использования можно сохранить и повторно вызвать несколько режимов работы или конфигураций. Политики могут определять такой контекст и то, какие параметры должны быть сохранены и могут быть применены, когда приложение работает виртуализированным способом.
Данное краткое изложение сущности изобретения предоставлено для представления подборки концепций в упрощенной форме, которые дополнительно описаны ниже в подробном описании. Данное краткое изложение сущности изобретения не предназначено для определения ключевых признаков или существенных признаков заявленного изобретения, а также не предназначено для использования с целью ограничения объема заявленного изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
На чертежах:
Фигура 1 является диаграммой, иллюстрирующей вариант осуществления, показывающий систему для сохранения различных конфигураций на основании контекста приложения.
Фигура 2 является алгоритмической иллюстрацией варианта осуществления, показывающей способ для работы с различными контекстными конфигурациями.
ПОДРОБНОЕ ОПИСАНИЕ
Приложения могут работать в различных режимах работы или конфигурациях. Один подобный механизм - через виртуализацию приложения. Когда приложение сконфигурировано для конкретного контекста, конфигурационная информация может быть сохранена и повторно вызвана для более позднего использования. Приложение может быть сконфигурировано работать во многих различных режимах работы, а набор политик управляет конфигурациями.
Режим работы, в котором исполняется приложение, может включать в себя конфигурации операционной системы, наличие и работу различных других приложений, конфигурацию сервисов, к которым осуществляется доступ через сеть или другое соединение, и много других факторов. Конфигурация и работа приложения могут быть различными для разных режимов работы.
Для примера, некоторые приложения могут иметь симбиотические отношения с другими приложениями. Поведение или функциональные характеристики приложения сами по себе могут быть отличными от поведения или функциональных характеристик приложения с другим интегральным приложением. В подобном примере, можно определить конфигурацию для приложения в режиме самостоятельной работы и отдельную конфигурацию можно определить для приложения, когда второе симбиотическое приложение присутствует и работает.
В типичном варианте осуществления, приложения могут работать в виртуальной среде. Виртуальная среда может быть выполнена с возможностью принимать различные наборы параметров конфигурации на основании конкретного контекста. В некоторых случаях, виртуальная среда может быть средой виртуальной машины. В других случаях, виртуальная среда может быть виртуальной средой приложения.
Для целей данного описания изобретения и формулы изобретения, конфигурация приложения может соответствовать способу, которым приложение настраивается или конфигурируется. Конфигурация приложения может включать в себя любой элемент, который может быть изменен или задан, включая те элементы, которые затрагивают функциональные характеристики, функции, внешний вид и другие эксплуатационные характеристики приложения.
Для целей настоящего описания изобретения и формулы изобретения, режим работы приложения может относиться к контексту, в котором исполняется приложение. Режим работы может включать в себя операционную систему и любые настройки или конфигурации операционной системы или каких-либо установленных или исполняющихся приложений. Режим работы может включать в себя состояние и конфигурацию любого другого элемента, который может взаимодействовать с приложением, включая компоненты аппаратного обеспечения, сервисы, доступные через сеть, другие исполняющиеся приложения, периферийные устройства и любой другой элемент.
Для целей настоящего описания изобретения и формулы изобретения, контекст приложения может быть категорией режима работы приложения. Хотя режим работы может включать в себя любые переменные, которые могут затрагивать приложение, контекст может быть широкой категорией, которая может быть использована для классификации и хранения конфигурации. Например, контексты могут быть определены для сеансов, виртуальных сред приложений, сред виртуальных машин, пользовательских контекстов, машинно-ориентированных контекстов, контекстов, характерных для групп пользователей или групп машин, контекстов, где совместно работают два или более взаимодействующих приложений, и другие контексты.
На протяжении данного описания изобретения, одинаковые номера ссылок обозначают одни и те же элементы на протяжении описания данных фигур.
Когда элементы именуются как являющиеся "подключенными" или "соединенными", такие элементы могут быть напрямую подключены к или соединены друг с другом, или также могут присутствовать один или более промежуточных элементов. Напротив, когда элементы именуются как являющиеся "напрямую подключенными" или "напрямую соединенными", промежуточных элементов не имеется.
Настоящее изобретение может быть осуществлено как устройства, системы, способы и/или компьютерные программные продукты. Соответственно, изобретение, полностью или частично, может быть осуществлено в аппаратном и/или программном обеспечении (в том числе в программно-аппаратном обеспечении (firmware), резидентном программном обеспечении, наборе микрокоманд, машинах состояний, матрицах логических элементов и так далее). Более того, настоящее изобретение может принять вид компьютерного программного продукта на машиночитаемом или пригодном для использования компьютером носителе данных, содержащем пригодный для использования компьютером или машиночитаемый программный код, воплощенный в данном носителе, для использования исполняющей команды системой или в сочетании с ней. В контексте данного документа, пригодный для использования компьютером или машиночитаемый носитель может быть любым носителем, который может содержать, сохранять, сообщать, распространять или переносить программу для использования исполняющей команды системой, прибором или устройством, или в сочетании с ними.
Такой пригодный для использования компьютером или машиночитаемый носитель может быть, для примера, электронной, магнитной, оптической, электромагнитной, инфракрасной или полупроводниковой системой, прибором, устройством или средой распространения, но не ограничивается этим. С целью примера, а не ограничения, машиночитаемые носители могут содержать компьютерные носители данных и коммуникационные среды.
Компьютерные носители данных включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители данных, реализованные по любому способу или технологии для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. Компьютерные носители данных включают в себя, но не ограничиваются этим, ПЗУ, ОЗУ, EEPROM, флэш-память или память другой технологии, CD-ROM, универсальный цифровой диск (DVD) или другое оптическое хранилище, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другое магнитное запоминающее устройство, или любой другой носитель, который может быть использован для хранения желаемой информации и к которому можно обратиться посредством исполняющей команды системы. Следует отметить, что пригодный для использования компьютером или машиночитаемый носитель может быть бумажным или другим подходящим носителем, на котором распечатана программа, поскольку такая программа может быть захвачена в электронном виде посредством, например, оптического сканирования такого бумажного или другого носителя, затем при необходимости откомпилирована, интерпретирована или иначе обработана подходящим способом, и затем сохранена в компьютерном запоминающем устройстве.
Коммуникационные среды обычно воплощают машиночитаемые команды, структуры данных, программные модули и другие данные в модулированном сигнале данных, таком как несущая волна или другие механизмы переноса, и включают в себя любые среды доставки информации. Термин "модулированный сигнал данных" означает сигнал, который имеет одну или несколько своих характеристик установленными или изменяемыми так, чтобы закодировать информацию в данный сигнал. С целью примера, а не ограничения, коммуникационные среды включают в себя проводные среды, такие как проводные сети или прямые проводные соединения, и беспроводные среды, такие как акустические, радиочастотные, инфракрасные и другие беспроводные среды. Сочетание любых из перечисленных выше сред и носителей также должно быть включено в объем понятия «машиночитаемый носитель».
Когда настоящее изобретение осуществляется в общем контексте машиночитаемых команд, вариант осуществления может содержать в себе программные модули, исполняемые одной или несколькими системами, компьютерами или другими устройствами. Обычно программные коды включают в себя процедуры, программы, объекты, компоненты, структуры данных и так далее, которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Обычно функциональные возможности программных модулей в различных вариантах осуществления могут быть по желанию объединены или распределены.
Фигура 1 является диаграммой варианта 100 осуществления, показывающую систему с разделением режимов работы и управление системой. Вариант 100 осуществления является примером системы, которая может сохранять и управлять конфигурациями для приложения на основании контекста или режима работы приложения.
Диаграмма на Фигуре 1 иллюстрирует функциональные компоненты системы. В некоторых случаях, компонент может быть аппаратным компонентом, программным компонентом или сочетанием программного и аппаратного обеспечения. Некоторые из компонентов могут быть программным обеспечением уровня приложений, в то время как другие компоненты могут быть компонентами уровня операционной системы. В некоторых случаях, подключение одного компонента к другому может быть близким соединением, где два или более компонентов работают на единой аппаратной платформе. В других случаях, такие подключения могут быть сделаны через сетевые соединения, охватывая большие расстояния. Каждый вариант осуществления может использовать различные аппаратные, программные и взаимозависимые архитектуры для достижения описанных функций.
Вариант 100 осуществления является примером функциональных элементов, которые могут составлять многорежимную исполняющую систему для приложения. Различные конфигурации 104 приложения 102 могут быть исполнены в исполняющей системе 106 на основании контекста, в котором исполняется данное приложение.
Различные варианты осуществления могут иметь разные уровни конфигураций, которые могут быть исполнены для приложения. Например, приложение, которое установлено и исполняется в рамках среды операционной системы, может иметь набор конфигурационных файлов, которые определяют конфигурацию. Другой набор конфигурационных файлов может быть использован для запуска приложения 102 на основании контекста, относящегося к конфигурационным файлам.
В другом примере, приложение может быть исполнено в виртуальной среде и, дополнительно к конфигурационным файлам из предыдущего примера, между контекстами могут быть изменены установки реестра, динамически подгружаемые библиотеки и многие другие элементы конфигурации. Подобные виртуальные среды могут быть средами виртуальной машины или виртуальными программными средами. Когда виртуальная среда используется для исполнения приложения, между контекстами может быть изменен очень широкий и богатый набор элементов конфигурации.
Приложение 102 может быть любым видом исполняемых программ или набором программ, сервисов или других действий, которые выполняются в вычислительной среде. Во многих случаях, приложение может иметь коллекцию исполняемых элементов, таких как файлы, которые могут быть исполнены напрямую в среде операционной системы или исполнены в среде приложения, например сценарии (скрипты), подпрограммы, библиотеки или другие компоненты.
Многие приложения 102 могут работать в сочетании с другими приложениями или услугами. Например, приложение 102 может работать с web-сервисом, доступным через Интернет. В подобном примере, приложение может выполнять некоторые действия, а web-сервис может выполнять другие действия, чтобы обеспечить пользовательское восприятие.
В другом примере, приложение 102 может быть работоспособно само по себе или с другим приложением, которое "подключается" или, по меньшей мере, частично интегрируется с первым приложением. Примером может быть такое приложение как программа обработки текстов, которая может отображать панель инструментов, элементы меню или другие ссылки на приложение публикации документов, когда приложение публикации документов работоспособно. Когда приложение публикации документов не доступно, приложение обработки текста может иметь один пользовательский интерфейс, но может иметь второй пользовательский интерфейс и второй набор доступных функций, когда приложение публикации документов доступно.
В подобном примере, приложение 102 может иметь одну конфигурацию 104, определенную для режима работы или контекста, когда работает в одиночку, и вторую конфигурацию 104, определенную для второго режима работы или контекста, когда работает со вторым приложением. Каждая конфигурация 104 может быть отдельно определена и управляема с использованием системы 108 отслеживания изменений в сочетании с набором политик 110.
Система 108 отслеживания изменений может обнаруживать и сохранять изменения в конфигурацию 104 приложения. Система 108 отслеживания изменений может обнаруживать изменение, классифицировать это изменение и определять, применимо ли данное изменение к одному или более контекстам, в которых приложение 102 исполняется или будет исполняться. Определение того, как классифицируются изменения и контексты и как распорядиться такими изменениями, может быть задано в политиках 110.
Вариант 100 осуществления показывает разделение приложения 102 и набора конфигураций 104. В некоторых вариантах осуществления, конфигурации 104 могут быть сохранены как набор файлов или установок которые могут быть реализованы поверх конфигураций по умолчанию, которые могут быть определены в приложении 102. В подобных вариантах осуществления, конфигурации 104 могут быть просмотрены как "дельта" файл или группа изменений от значений по умолчанию.
В других вариантах осуществления, приложение может быть определено как пакет, который включает в себя одну из конфигураций 104. Для каждой конфигурации может быть создан другой пакет приложения. Подобные варианты осуществления могут быть использованы, когда установки в конфигурациях являются всеобъемлющими или когда изменения конфигурации используются при запуске приложения. Примерами подобных изменений конфигурации могут быть установки реестра, которые определяют возможности, используемые приложением во время начальной загрузки.
Исполняющая система 106 может быть любой средой, рабочим пространством или механизмом, выполненным с возможностью исполнять приложение 102. В некоторых вариантах осуществления, исполняющей системой 106 может быть среда операционной системы, в которой работают многие другие приложения и сервисы, в том числе, например, система 108 отслеживания изменений. В некоторых вариантах осуществления, исполняющей системой 106 может быть виртуальная среда, такая как виртуальная машина или виртуальная среда приложения. В еще одних вариантах осуществления, исполняющая система 106 может быть отдельной аппаратной платформой, которая исполняет приложение 102.
Архитектура варианта 100 осуществления может быть любым видом архитектуры вычислительной системы. В некоторых вариантах осуществления, многие из компонентов, показанных в варианте 100 осуществления, могут быть исполнены на единой аппаратной платформе, такой как персональный компьютер или серверный компьютер. В других вариантах осуществления, некоторые из компонентов могут быть выполнены на одной аппаратной платформе, в то время как другие компоненты могут быть выполнены на отдельной аппаратной платформе. Некоторые подобные варианты осуществления могут использовать много аппаратных платформ, чтобы реализовать вариант 100 осуществления. Подобные варианты осуществления могут быть названы кросс-машинной конфигурацией.
В некоторых кросс-машинных архитектурах, некоторые из компонентов варианта 100 осуществления могут быть реализованы как виртуальные машины, работающие в виртуальных средах приложений. Виртуальная машина может быть программным моделированием аппаратной платформы и может содержать операционную систему и может функционировать так, как если бы эта виртуальная машина была бы отдельной, выделенной аппаратной платформой.
Виртуализация приложения может создавать копии всех разделяемых ресурсов, специфических для приложения. Каждое приложение может иметь отдельную конфигурацию потенциально разделяемых ресурсов, таких как записи реестра, динамически подгружаемые библиотеки и другие объекты, которые могут быть упакованы с этим приложением. Пакет может быть исполнен в кеше, создавая виртуальное приложение. Когда виртуальное приложение развернуто, оно может использовать свою собственную копию этих разделяемых ресурсов.
Диспетчер 112 контекста может определять контекст, в котором приложение работает или будет работать. Диспетчер 112 контекста может отслеживать наличие, конфигурацию и другие параметры многих различных ресурсов, которые могут быть доступны для приложения 102. Диспетчер 112 контекста может определять режим работы для приложения, который может быть использован системой 108 отслеживания изменений для сохранения конфигураций соответствующим образом. Диспетчер 112 контекста также может задавать режим работы для средства 126 запуска приложения, которое может выбирать между различными конфигурациями 104 на основании режима работы или контекста.
Диспетчер 112 контекста может быть приложением или сервисом, который непрерывно отслеживает различные аспекты системы. В некоторых случаях, подобный диспетчер 112 контекста может работать на единой аппаратной платформе и отслеживать различные состояния. Такая аппаратная платформа может быть той же самой аппаратной платформой, на которой может быть исполнено приложение 102. В других вариантах осуществления, диспетчер 112 контекста может быть сервисом, который работает удаленно от аппаратной платформы, на которой исполняется приложение 102.
Диспетчер 112 контекста может собирать различную информацию, метаданные и параметры о режиме работы, в котором приложение работает или будет работать. Диспетчер 112 контекста может собирать любую релевантную информацию, которая может быть использована в политиках 110 для обработки конфигураций другими способами. Другие варианты осуществления могут собирать другие наборы информации и метаданных для определения текущего режима работы.
Примеры контекстных метаданных могут включать в себя то, какие виртуальные приложения 114 наличествуют или не наличествуют, наличие различных виртуальных машин 116, наличие и конфигурация операционной системы 118, наличие и конфигурация различных других приложений 120 и сетевых сервисов 122, также как и другую информацию 124 о режиме работы. Другая информация о режиме работы может быть сеансом, в котором работает приложение, участие в группах пользователей или устройств, либо другие параметры.
Другая информация 124 о режиме работы может включать в себя информацию о сеансе, который может включать в себя метаданные о сеансе. Например, информация 124 о сеансе может включать в себя вид сеанса, который может быть сеансом, соединяющим два или более конкретных устройства или пользователей, или сеансом, соединяющим два или более произвольных устройства или пользователей. Метаданные сеанса также могут включать в себя различные параметры соединения, такие как протоколы, используемые в сеансе, или адреса или порты, используемые для установления сеанса. В некоторых вариантах осуществления, приложение может создавать несколько различных видов сеансов с другими приложениями или услугами, и присутствие, отсутствие, или конфигурация данных сеансов могут быть определены как часть контекста для приложения.
Присутствие и конфигурация других интерактивных компонентов могут определять часть контекста для приложения. Приложение 102 может взаимодействовать с виртуальными приложениями 114, виртуальными машинами 116, приложениями 120 и сетевыми сервисами 122 в разных объемах. В некоторых случаях, функциональные характеристики или работа приложения могут быть затронуты присутствием, отсутствием или конфигурацией различных внешних относительно приложения 102 интерактивных компонентов.
Присутствие, отсутствие и, в некоторых случаях, конфигурация компонента, с которым приложение взаимодействует, могут определять новый режим работы для приложения. Например, приложение может добавить или удалить компоненты пользовательского интерфейса для других приложений или сервисов. Когда другое приложение присутствует и настроено, первое приложение может предоставить некоторый набор компонентов пользовательского интерфейса или функциональных возможностей, которые связываются с или используют функциональные возможности, предоставленные другим приложением. Когда это другое приложение не присутствует или настроено другим образом, первое приложение может предоставить альтернативный пользовательский интерфейс или функциональные возможности.
Компонент, с которым взаимодействует приложение, может быть виртуальным компонентом. В некоторых случаях, приложение может быть виртуально исполнено с использованием исполняющей системы 106, в то время как другое приложение также может быть исполнено виртуально. Поскольку оба приложения исполняются виртуально, каждое приложение может работать без взаимодействия друг с другом в конфигурации по умолчанию. Однако, когда оба приложения работоспособны, каждое приложение может быть выполнено с возможностью проводить данные, управление или другие сигналы между каждым приложением. В этом случае, каждое приложение может иметь специализированную конфигурацию 104, которая определяет точки взаимодействия и позволяет взаимодействию иметь место, даже если оба приложения работают виртуально и раздельно. В этом случае, оба приложения могут быть запущены одновременно или последовательно с правильными конфигурациями так, чтобы эти приложения могли взаимодействовать.
Виртуальные компоненты могут предоставлять конфигурационные возможности (опции), отличающиеся от компонентов, которые установлены и работают в той же операционной системе, что и приложение 102. В целом, виртуальные компоненты могут работать агностически к другим компонентам и могут быть выполнены с возможностью индивидуальным образом взаимодействовать с другими приложениями в раздельных средах, включая среды традиционных операционных систем и другие виртуальные среды.
Контекст может включать в себя различные параметры или конфигурации операционной системы 118. Например, контекст может включать в себя общую информацию об операционной системе, такую как вид операционной системы, конкретную версию и другие параметры о собственной операционной системе. Контекст также может включать в себя добавления или изменения в среду операционной системы, такие как установки реестра, присутствие и конфигурация таких файлов, как динамически подгружаемые библиотеки, настройки, используемые операционной системой для доступа к различным аппаратным периферийным устройствам и интерфейсам, и другие виды параметров.
В некоторых вариантах осуществления, конфигурации 104 могут быть применены, когда приложение запускается. Некоторые варианты осуществления также могут позволить применение конфигурации 104 к приложению 102 после начала исполнения этого приложения.
Некоторые варианты осуществления могут обеспечить возможность применения некоторых конфигураций 104 после начала исполнения, в то время как другие конфигурации 104 могут быть применены только при старте приложения. В подобных вариантах осуществления, к одному экземпляру приложения 102 могут быть применены две или более конфигураций 104. Например, может быть определена корпоративная конфигурация, которая задает корпоративные настройки по умолчанию для приложения. Может быть применена вторая конфигурация, содержащая пользовательские настройки, которая может или не может дополнительно приспособить корпоративную конфигурацию для индивидуальных предпочтений пользователя.
В другом примере, приложение 102 может взаимодействовать с несколькими другими приложениями или сетевыми сервисами. Каждый сетевой сервис или приложение могут быть определены в отдельной конфигурации 104, так что когда приложение 102 запускается, могут быть применены многие различные конфигурации 104, каждая из которых обеспечивает возможность доступа к отдельному приложению или сервису.
Приложение 102 также может взаимодействовать с различными сетевыми сервисами 122, которые могут быть доступны через локальную сеть (LAN), глобальную сеть (WAN) или любую другую сеть, включая Интернет. Во многих случаях, для предоставления данных в ответ на запросы, другие действия или услуги, может быть использован web-сервис. Для исполнения приложения 102, когда web-сервис или другой сетевой сервис 122 присутствует, может быть определена конфигурация 104. Подобная конфигурация может включать в себя различные параметры, такие как порты, протоколы, адреса и другая информация о конфигурации передачи данных, а так же настройку конфигурации конкретных функциональных возможностей, которые будут доступны через приложение 102.
Конфигурация 104 может включать в себя компоненты пользовательского интерфейса, ссылки или другие настраиваемые элементы, которые, в некоторых случаях, могут обеспечить возможность доступа к сетевому сервису 122 в некоторых случаях.
Например, программа обработки текстов может использовать сервис словаря, который предоставляется как сетевой сервис 122. Когда сервис словаря доступен, программа обработки текстов может иметь ссылки на этот сервис словаря в пользовательском интерфейсе, такие как пункт меню для доступа к сервису словаря. Когда сервис словаря выбран, может быть послан запрос сетевому сервису и принят ответ. Ответ может быть отображен в программе обработки текстов, как если бы сервис словаря был бы частью программы обработки текстов. В этом случае, пользователь может не осознавать, что был вызван сетевой сервис. Когда сервис словаря не доступен, конфигурация 104 может предоставить вместо нее локальную версию или сделать функцию словаря неактивной, невидимой или иным образом недоступной.
Диспетчер 112 контекста может определять контекст, в котором приложение работает в текущий момент или собирается работать. Такой контекст может быть использован в сочетании с политиками 110 для создания специализированной конфигурации 104, которая может быть вызвана, когда средство 126 запуска приложения запустит приложение 102. Диспетчер 112 контекста также может обнаруживать текущий контекст, который может быть использован средством 126 запуска приложения для выбора соответствующей конфигурации 104 или группы конфигураций 104.
Контекст, в котором исполняется приложение, может быть определен политиками 110. Контекст может быть классификацией или видом режима работы. Во многих случаях, режим работы может иметь несколько контекстов. Для примера, приложение 102 может взаимодействовать с другим приложением, работающим в виртуальной машине 116, а также взаимодействовать с сетевой услугой 122. Присутствие виртуальной машины 116 может определять контекст виртуальной машины, а присутствие сетевых сервисов может определять контекст, поддерживающий работу в сети. В некоторых случаях, можно применить два или более различных контекста.
Когда к одному экземпляру приложения 102 может быть применено множество конфигураций 104, для конкретного экземпляра могут быть определены множество независимых контекстов. В приведенном выше примере, контекст виртуальной машины и контекст, поддерживающий работу в сети, могут быть определены раздельно и независимо.
Когда к одному экземпляру приложения 102 может быть применена единственная конфигурация 104, контекст может быть определен как являющийся сочетанием нескольких различных факторов. В приведенном выше примере, единственный контекст может быть определен так, чтобы он включал в себя виртуальную машину и сервисы, поддерживающие работу в сети, и может быть создана единая конфигурация 104. Для виртуальной машины без сервисов, поддерживающих работу в сети, и для поддерживающих работу в сети сервисов без виртуальной машины можно создать раздельные конфигурации.
Политики 110 могут определять вид контекста и то, как изменения конфигурации приложения будут обработаны на основании контекста. Например, некоторые изменения могут быть отброшены, в то время как другие виды изменений могут быть сохранены. Когда используется множество независимых конфигураций, политика может определить сохранение одного вида изменения в одном контексте, но не в другом.
Фигура 2 является иллюстрацией функциональной схемы варианта 200 осуществления, показывающего способ для работы с конфигурациями, зависящими от контекста. Вариант 200 осуществления является примером различных действий, которые могут быть выполнены компонентами варианта 100 осуществления, в том числе средством 126 запуска приложения, диспетчером 112 контекста, системой 108 отслеживания изменений и исполняющей системой 106.
Другие варианты осуществления могут использовать другие последовательности, дополнительное или меньшее число этапов, и другую номенклатуру или терминологию для достижения схожих функций. В некоторых вариантах, различные действия или наборы действий могут быть выполнены параллельно с другими действиями, синхронным, асинхронным или как тем, так и другим способами. Выбранные здесь этапы были избраны для иллюстрации некоторых принципов работы в упрощенной форме.
Вариант 200 осуществления иллюстрирует способ для запуска приложения, обнаружения изменений в конфигурации приложения, и сохранения изменений в хранилище конфигураций для последующего повторного использования.
На этапе 202 может быть принята команда на запуск приложения. Во многих случаях, команда может быть инициирована пользовательским вводом, таким как выбор пиктограммы или ввод команды в командной строке. В других случаях, команда на запуск приложения может быть инициирована другим приложением или сервисом, в том числе сетевым сервисом.
На этапе 204 для приложения может быть определен контекст. Контекст может быть задан в политике, и для конкретных контекстов может быть создан набор конфигурационных параметров для приложения. Контекст может быть определен любым способом. В некоторых вариантах осуществления, диспетчер контекста, такой как диспетчер 112 контекста в варианте 100 осуществления, может быть использован для определения текущего или намеченного контекста.
Контекст может быть текущим контекстом или намеченным контекстом. Текущий контекст может быть определен посредством восприятия текущего состояния различных параметров, систем и сервисов, с которыми приложение может взаимодействовать. Намеченный контекст может быть контекстом, который может существовать, когда приложение будет исполняться.
Намеченный контекст может быть использован, когда несколько приложений, которые могут взаимодействовать друг с другом, запускаются последовательно или практически одновременно. Каждое приложение в группе запущенных приложений может быть сконфигурировано работать с другими приложениями, но подобный контекст может существовать, когда все из этих приложений запущены и имеют соединения друг с другом.
Если на этапе 206 конфигурация для контекста не задана, то на этапе 208 может быть выбрана конфигурация по умолчанию. Если на этапе 206 задана конфигурация для контекста, эта конфигурация может быть загружена на этапе 210.
В некоторых вариантах осуществления, две или более конфигураций могут быть загружены и применены на основании контекста. В подобных вариантах осуществления, различные конфигурации могут быть применены подряд, так что последняя примененная конфигурация может перезаписать установки предшествующей конфигурации.
Некоторые варианты осуществления могут применять систему приоритетов для определения того, какие параметры каких конфигураций могут быть применены, когда более чем одна конфигурация устанавливает параметры. В последовательной схеме приоритетов, последняя применяемая конфигурация может доминировать. Однако в других схемах могут быть применены другие показатели или правила. Подобные правила могут быть заданы в наборе политик.
После того как конфигурации заданы, на этапе 212 приложение может быть исполнено с использованием этих конфигураций.
Во многих вариантах осуществления, где используется множество конфигураций, приложение может быть исполнено в виртуальной среде, такой как выделенная виртуальная машина, или в среде виртуализации приложения. Посредством виртуализации приложения многие установки могут быть изменены или настроены более легким способом, чем в случае, если бы приложение работало в среде обычной операционной системы со многими другими приложениями. Например, виртуальная среда может позволить изменение для виртуального приложения настроек реестра или динамически подгружаемых библиотек, которые иначе могут быть совместно использованы с другим приложением.
Если на этапе 212 обнаружено изменение, может начаться процесс для создания или изменения конфигурационных настроек на основании контекста приложения.
На этапе 216 контекст может быть классифицирован. В некоторых вариантах осуществления, конкретный экземпляр может включать в себя несколько разных контекстов, каждый из которых имеет один или малое число параметров, которые могут быть независимы от других контекстов. В других вариантах осуществления, для любой ситуации может быть определен единый контекст, который может содержать много разных параметров или дескрипторов. Контексты могут задаваться набором политик.
Изменение может быть классифицировано по типу на этапе 218. Тип изменения может быть общей классификацией изменения, как задано в политике, так что это изменение может быть упорядочено соответственным образом.
Для каждой классификации контекста на этапе 220 изменение может быть упорядочено на последующих этапах. Вариант 200 осуществления является примером варианта осуществления, в котором для конкретной ситуации могут существовать два или более контекстов. В других вариантах осуществления, может быть задан единый контекст, и for-цикл по этапу 220 может быть выполнен для такого контекста один единственный раз.
Если политика не устанавливает, какой тип изменения обрабатывается на этапе 222, на этапе 224 может быть применена политика по умолчанию. Иначе может быть применена текущая политика.
Текущая политика или политика по умолчанию может констатировать, должно ли изменение быть записано или проигнорировано на этапе 226. Если на этапе 226 изменение должно быть проигнорировано, то это изменение можно не сохранять на этапе 230. Если на этапе 226 изменение должно быть сохранено, тогда на этапе 228 конфигурация может быть обновлена для контекста.
Процесс может продолжаться на этапе 220 для следующего контекста, если таковой существует. После того как каждый из контекстов обработан на этапе 220, процесс может вернуться к этапу 212 для дальнейшего исполнения приложения.
Вариант 200 осуществления является примером процесса, который может быть использован для определения контекста и записи изменения в приложение на основании этого контекста. При перезапуске приложения в том же самом контексте, конфигурация может быть повторно вызвана и приложение может вести себя в соответствии с изменением.
Вышеприведенное раскрытие изобретения было представлено с целью иллюстрации и описания. Оно не подразумевается быть исчерпывающим или для ограничения изобретения раскрытым точным образом, и другие поправки и изменения могут быть возможны в свете идей, описанных выше. Вариант осуществления был избран и описан с целью лучшего объяснения принципов изобретения и практического применения, таким образом позволяя специалистам в данной области техники наилучшим образом использовать изобретение в различных вариантах осуществления, охватывая различные модификации, которые подходят для предполагаемого конкретного использования. Предполагается, что прилагаемая формула изобретения подразумевает включение в себя других альтернативных вариантов осуществления, за исключением того, насколько это ограничено предшествующим уровнем техники.
Класс G06F9/06 с хранимой программой, те с записью и хранением программы в устройствах памяти вычислительных машин