ИНФРАСТРУКТУРА АКТИВАЦИИ ПРИЛОЖЕНИЙ
APPLICATION ACTIVATION FRAMEWORK

Предпосылки изобретения
[0001] Традиционно, приложения для конкретной вычислительной системы являются в значительной степени автономными. Хотя приложения пользуются преимуществом некоторых признаков операционной системы и могут запускаться операционной системой для осуществления конкретных заданий для пользователей, операционная система слабо управляет или вовсе не управляет тем, как приложения реализуют признаки или осуществляют задания. Кроме того, разные приложения, в особенности приложения, связанные с разными платформами среды выполнения, могут по отдельности управлять такими аспектами, как генерация, размещение и упорядочение окон, цветовые схемы, шрифты и т.д. Соответственно, традиционный, нескоординированный подход к реализации приложения создает несвязный “вид и ощущения” (“look and feel”), что может препятствовать пользователям в получении полностью положительного пользовательского восприятия в отношении операционной системы.
Сущность изобретения
[0002] Здесь описаны подходы к активации приложений. Операционная система (OS) может быть сконфигурирована таким образом, чтобы включать в себя различные точки расширения, которые могут обслуживаться через соответствующие контракты (например, спецификации, которые определяют реализацию функциональных возможностей, представленных точками расширения.) Расширяемые аспекты определяются как интегрированные функциональные возможности OS и регулируются OS централизованным образом. Однако конкретные реализации расширяемых функциональных возможностей могут перегружаться на приложения с использованием контрактов. Например, OS может включать в себя или иначе использовать централизованный компонент активации приложений, который применяет объектно-ориентированный подход для вызова приложений для осуществления конкретных контрактов. В ходе активации OS может передавать информацию (например, объект контракта или другие подходящие данные), касающуюся конкретного контракта, чтобы активировать назначенное приложение и дать возможность приложению обслуживать контракт в соответствии с указаниями OS. Таким образом, управляющую и координирующую роль в обработке контрактов кодом приложения может брать на себя централизованный компонент активации приложений, который поддерживает разные приложения и платформы среды выполнения. В одном подходе, платформа среды выполнения действует для обработки инициализации приложения на основании объекта контракта, предоставленного OS, и передает большинство реализации расширения самому коду приложения.
[0003] Это краткое изложение сущности изобретения предназначено для ознакомления с избранными концепциями в упрощенной форме, которые дополнительно описаны ниже в подробном описании. Это краткое изложение сущности изобретения не призвана ни выявлять ключевые признаки или существенные признаки заявленного изобретения, ни использоваться для ограничения объема заявленного изобретения.
Краткое описание чертежей
[0004] В чертежах для обозначения сходных признаков используются одинаковые ссылочные позиции.
[0005] Фиг. 1 иллюстрирует операционную среду, в которой можно применять различные описанные здесь принципы в соответствии с одним или более вариантами осуществления.
[0006] Фиг. 2 изображает примерный операционный сценарий для активации приложений в соответствии с одним или более вариантами осуществления.
[0007] Фиг. 3 - логическая блок-схема операций, которая описывает этапы примерного способа в соответствии с одним или более вариантами осуществления.
[0008] Фиг. 4 - логическая блок-схема операций, которая описывает этапы другого примерного способа в соответствии с одним или более вариантами осуществления.
[0009] Фиг. 5 иллюстрирует примерную вычислительную систему, которую можно использовать для реализации одного или более вариантов осуществления.
Подробное описание
Обзор
[0010] Традиционные, нескоординированные подходы к реализации приложений в вычислительной системе могут создавать несвязный “вид и ощущения”, что может препятствовать пользователям в получении полностью положительных ощущений пользователя в отношении операционной системы. Хотя приложения могут пользоваться преимуществом некоторых признаков операционной системы, операционная система может слабо управлять или вовсе не управлять тем, как приложения фактически реализуют признаки в традиционном подходе.
[0011] Здесь описаны подходы к активации приложений, которые облегчают интеграцию приложений с операционной системой. Операционная система (OS) может быть сконфигурирована таким образом, чтобы включать в себя различные точки расширения, которые могут использоваться через соответствующие контракты (например, спецификации, которые определяют реализацию функциональных возможностей, представленных точками расширения), которые формируются между OS и приложениями. Расширяемые аспекты определяются как интегрированные функциональные возможности, обеспечиваемые OS, и регулируются OS централизованным образом. Однако конкретные реализации расширяемых функциональных возможностей могут перегружаться на приложения согласно контрактам.
[0012] Например, OS может включать в себя или иначе использовать централизованный компонент активации приложений, который экспонируется OS и применяет объектно-ориентированный подход для вызова приложений для осуществления конкретных контрактов указанным образом. В ходе активации OS может передавать информацию (например, объект контракта или другие подходящие данные), касающуюся конкретного контракта, чтобы активировать назначенное приложение и дать возможность приложению обслуживать контракт в соответствии с указаниями OS. Таким образом, обработкой контрактов кодом приложения можно управлять через централизованный компонент активации приложений. Результатом является интеграция разных приложений с OS для создания согласованных и скоординированных ощущений пользователя для OS и между разными приложениями и платформами.
[0013] В нижеследующем рассмотрении, предусмотрен раздел под названием “операционная среда”, который описывает одну среду, в которой можно применять один или более вариантов осуществления. После этого раздел под названием “подходы к активации приложений” описывает детали примерной реализации в соответствии с одним или более вариантами осуществления. Далее, раздел под названием “примерные способы” описывает примерные способы в соответствии с одним или более вариантами осуществления. Наконец, раздел под названием “примерная система” описывает примерные вычислительные системы и устройства, которые можно использовать для реализации одного или более вариантов осуществления.
Операционная среда
[0014] Фиг. 1 иллюстрирует операционную среду в соответствии с одним или более вариантами осуществления, в целом, обозначенную позицией 100. Среда 100 включает в себя вычислительное устройство 102, имеющее один или более процессоров 104, один или более машиночитаемых носителей 106, операционную систему 108 и одно или более приложений 110, хранящихся на машиночитаемых носителях и исполняемых процессором(ами). Один или более процессоров 104 могут извлекать и исполнять инструкции компьютерной программы из приложений 110 для предоставления вычислительному устройству 102 широкого диапазона функциональных возможностей, в том числе, но без ограничения, офисную производительность, электронную почту, администрирование сред, печать, сетевое соединение, просмотр веб-страниц и т.д. Также могут быть включены различные данные и программные файлы, связанные с приложениями 110, примеры которых включают в себя офисные документы, мультимедийные файлы, сообщения электронной почты, файлы данных, веб-страницы, данные профиля и/или предпочтений пользователя и т.д. В общем случае, приложения и другие программные модули могут включать в себя локальные приложения, сетевые приложения, действующие через хост-устройство (например, сервер или одноранговое устройство), и/или распределенные приложения, действующие посредством взаимодействия между клиентом и сервером или других взаимодействий между множественными устройствами в сети (например, “в облаке”).
[0015] Вычислительное устройство 102 можно реализовать в виде любой подходящей вычислительной системы и/или устройства, например, в порядке примера, но не ограничения, настольного компьютера, портативного компьютера, планшетного или компактного компьютера, карманного компьютера, например, карманного персонального компьютера (КПК), сотового телефона, телевизионной приставки и пр. Один пример вычислительной системы, которая может представлять различные системы и/или устройства, включая вычислительное устройство 102, показано и описано ниже на фиг. 5.
[0016] Машиночитаемые носители могут включать в себя, в порядке примера, но не ограничения, все формы энергозависимой и энергонезависимой памяти и/или носителей данных, которые обычно связаны с вычислительным устройством. Такие носители могут включать в себя ПЗУ, ОЗУ, флэш-память, жесткий диск, сменные носители и пр. Машиночитаемые носители могут включать в себя как “машиночитаемые носители данных”, так и “среды связи”, примеры которых можно найти в рассмотрении примерной вычислительной системы, показанной на фиг. 5.
[0017] Операционная система 108 также включает в себя точки 112 расширения, которые представляют расширяемые функциональные возможности, интегрированные с операционной системой 108. Другими словами, точки расширения обеспечивают расширяемые признаки операционной системы, которые могут быть реализованы разными приложениями 110, которые поддерживают отдельные точки расширения. OS задает набор функциональных возможностей для точек расширения и может перегружать реализацию на разные приложения. Точки 112 расширения могут быть сконфигурированы по-разному. В порядке примера, но не ограничения, точки расширения могут обеспечивать такие признаки, как поисковые запросы, совместное использование данных приложениями, ассоциации файлов, потоковая передача файлов, операции внешнего устройства, автовоспроизведение сред, запуск приложений, взаимодействия веб-сайтов, контроль состояния активации, обработка протокола, конфигурация сети, функциональные возможности конфигурации, зависящие от оборудования/устройства, связь между расширениями и т.д.
[0018] Функциональные возможности точек 112 расширения можно по-разному реализовать посредством различных приложений 110 для эффективного интегрирования некоторых аспектов приложений 110 с операционной системой 108. Таким образом, точки расширения представляют централизованные механизмы, которые разные приложения могут использовать и обслуживать для расширения и координации соответствующих признаков операционной системы через код, интерфейсы и конкретные возможности разных приложений. Спецификации, используемые для управления реализацией функциональных возможностей, представленных точками расширения, именуются здесь контрактами. Контракты могут создаваться между OS и приложениями в ответ на запрос использования расширенных признаков. В соответствии с контрактами, объекты или другие подходящие данные могут передаваться надлежащему приложению, которое поддерживает контракт/точку расширения, чтобы приложение могло выполнить контракт. Другими словами, приложение, которое передает на OS индикацию того, что оно поддерживает точку расширения, может активироваться OS для обработки контракта, связанного с точкой расширения.
[0019] Наподобие вышеописанного, по меньшей мере, некоторые из конкретных деталей и кода для расширяемых функциональных возможностей OS могут перегружаться на приложения, которые окончательно реализуют расширяемые функциональные возможности. Вообще говоря, точки расширения являются инвариантными к приложению и платформе. Соответственно, различные типы приложений/платформ можно использовать для реализации и обслуживания одних и тех же точек расширения. Реализация по различным типам приложений/платформ может происходить с использованием общего централизованного компонента, посредством которого OS может направлять разные приложения/платформы и предписывать, каким образом приложения/платформы обслуживают точки 112 расширения. Таким образом, хотя некоторые аспекты расширяемых функциональных возможностей перегружаются на обслуживающие приложения, OS сохраняет управление функциональными возможностями и может указывать приложениям, как осуществлять контракты для точек расширения, посредством централизованного компонента.
[0020] В частности, вычислительное устройство 102 дополнительно включает в себя компонент 114 активации приложений, который хранится на машиночитаемых носителях и также исполняется процессором(ами). Компонент 114 активации приложений можно реализовать как проиллюстрированное самостоятельное приложение или как компонент другого приложения. Например, компонент 114 активации приложений можно обеспечить как интегрированный компонент операционной системы 108.
[0021] Компонент 114 активации приложений представляет общий централизованный компонент, который может экспонироваться операционной системой и применяться для направления приложений 110 в отношении точек 112 расширения и соответствующих контрактов. В частности, компонент 114 активации приложений может экспонироваться для регистрации приложений для обслуживания точек расширения, выбора из зарегистрированных приложений и/или вызова приложений для выполнения контрактов (например, конкретных вызовов расширяемых функциональных возможностей OS). Компонент 114 активации приложений также позволяет OS сохранять управление реализациями точек 112 расширения посредством различных приложений 110. Компонент 114 активации приложений может быть сконфигурирован для поддержки многих разных видов приложений и/или разных платформ 118 среды выполнения вычислительного устройства 102, которые обеспечивают окружения исполнения для соответствующих приложений. Примеры платформ 118 среды выполнения для вычислительного устройства 102 включают в себя, среди прочих, среду выполнения JAVA™ (JRE), Adobe™ Flash™, инфраструктуру Microsoft™ .NET, и Microsoft Silverlight™. Поддерживаемые приложения могут исполняться на любой подходящей платформе 118 среды выполнения, которая сконфигурирована для взаимодействия с OS и/или компонентом 114 активации приложений. Когда платформа среды выполнения установлена для обеспечения взаимодействия с OS и/или компонентом 114 активации приложений, платформа среды выполнения готова к использованию как для существующих точек расширения, так и для будущих обновлений для точек расширения, без необходимости в дальнейших ревизиях среды выполнения для поддержки новых обновлений.
[0022] В, по меньшей мере, некоторых вариантах осуществления, компонент 114 активации приложений реализует объектно-ориентированный подход для осуществления связи с приложениями и направления их в отношении контрактов и точек 112 расширения и/или для иного управления точками расширения, обеспеченными как часть операционной системы 108. Например, в случае применения объектно-ориентированного подхода, компонент 114 активации приложений может обеспечивать или иначе использовать объекты 116 контракта для активации и направления приложений 110 для выполнения контрактов. Объектно-ориентированный подход можно использовать вместо традиционных строковых параметров командной строки, которые громоздки, труднообновляемы и обеспечивают сравнительно жесткие и упрощенные команды по сравнению с более функционально богатыми объектами, доступными в объектно-ориентированном подходе. Например, более функционально богатые объекты могут обеспечивать возможности, недоступные при использовании параметров командной строки, например, среди прочих, обеспечение двусторонней связи, получение данных из внешних процессов и обеспечение посреднических объектов между приложениями для доступа к совместно используемым данным.
[0023] Объекты 116 контракта можно конструировать согласно ожидаемому и согласованному протоколу связи, который поддерживается совместимыми приложениями. Протокол связи сконфигурирован для обеспечения инвариантного, независимого от вычислительного языка способа связи между разными сущностями и средами, которые могут внутренне использовать разные вычислительные языки, протоколы и методы. Совместимые приложения способны понимать общий формат, применяемый для объектов, и, если применимо, переводить объекты в зависящие от приложения форматы, пригодные для конкретной платформы/среды. Один пример подходящего протокола, который можно применять в некоторых вариантах осуществления, представляет собой модель компонентных объектов (COM) Microsoft™. Однако любой подходящий протокол, обеспечивающий инвариантную, независимую от языка связь между разными сущностями и/или средами, можно использовать для реализации описанной здесь инфраструктуры активации приложений.
[0024] Объекты 116 контракта (или другие эквивалентные объекты, данные и/или сообщения) могут передаваться непосредственно приложениям 110 и/или, в ряде случаев, через соответствующие платформы 118 среды выполнения, соответствующие приложениям, вызванным для обслуживания соответствующего контракта. Объект 116 контракта может быть сконфигурирован для передачи любой подходящей информации, касающейся контракта, на принимающее приложение. В общем случае, информация, передаваемая через объекты 116 контракта (или иначе), сконфигурирована так, чтобы активировать назначенное приложение и дать возможность приложению обслуживать соответствующий контракт в соответствии с указаниями со стороны OS. Согласно фиг. 1, объект 116 контракта может включать в себя ID 120 контракта для идентификации контракта принимающему приложению, детали 122 контракта, описывающие контуры и/или конкретные данные для контракта, и настройки 124 активации, используемые для управления тем, как принимающее приложение активирует и/или осуществляет обработку для обработки контракта. Дополнительные детали, касающиеся этих и других аспектов подходов к активации приложений, описаны в связи со следующими чертежами.
[0025] Описав примерную операционную среду, рассмотрим примерные подходы к активации приложений в соответствии с одним или более вариантами осуществления.
Подходы к активации приложений
[0026] В соответствии с вышеизложенным, операционная система (OS) может включать в себя различные точки расширения, которые могут использоваться через соответствующие контракты. Расширяемые аспекты определяются как интегрированные функциональные возможности OS и регулируются OS централизованным образом. Однако конкретные реализации расширяемых функциональных возможностей могут перегружаться на приложения через контракты. Управляющую и координирующую роль в обработке реализации кодом приложения может брать на себя централизованный компонент активации приложений, используя объектно-ориентированный подход.
[0027] Дополнительные детали, касающиеся подходов к активации приложений, описаны в связи с примерным операционным сценарием, изображенным на фиг. 2, который в целом обозначен позицией 200. В частности, на фиг. 2 представлены некоторые иллюстративные детали, касающиеся компонента 114 активации приложений, который может экспонироваться OS для обработки активации приложений. Согласно фиг. 2, операционная система 108 может принимать запрос 202. Запрос 202 может быть получен от субъекта (например, приложения, устройства, пользователя или компонента), желающего использовать функциональные возможности, обеспечиваемые точкой расширения. Другими словами, запрос представляет собой запрос доступа к расширяемым функциональным возможностям. В этом примере, операционная система 108 включает в себя компонент 114 активации приложений, сконфигурированный для обработки запроса 202 и иного управления расширяемыми функциональными возможностями, предоставляемыми через OS. Конечно, компонент 114 активации приложений можно альтернативно обеспечить как компонент, отдельный от OS, как упомянуто ранее.
[0028] В ответ на запрос 202, компонент 114 активации приложений может быть сконфигурирован для выбора приложения для обслуживания запроса. В одном подходе, запрос может указывать конкретное применение для реализации расширяемых функциональных возможностей. Дополнительно или альтернативно, совместимое приложение можно выбирать из группы приложений, которые поддерживают расширяемые функциональные возможности. Например, приложения могут регистрироваться в OS или иначе извещать ее об отдельных точках расширения, поддерживаемых и обслуживаемых приложениями. Соответственно, OS может поддерживать, осуществлять доступ или иначе использовать манифест, базу данных, таблицу или другую подходящую структуру данных, сконфигурированную для сопоставления приложений с разными точками расширения. На основании этого сопоставления, OS способна перечислять все приложения, указавшие способность к обслуживанию конкретной точки расширения, соответствующей запросу 202. В, по меньшей мере, некоторых вариантах осуществления, список возможных приложений для обслуживания запроса может экспонироваться запрашивающей стороне для выбора. В другом подходе, компонент 114 активации приложений может быть сконфигурирован для самостоятельного выбора приложения (например, без помощи явного выбора запрашивающей стороной) с использованием списка предпочтений, стандартных вариантов выбора, рейтингов, обратной связи с сообществом и/или других подходящих критериев выбора. В общем случае, любые подходящие подходы и/или эвристики, включая комбинации вышеприведенных примеров, можно применять для определения того, какое приложение активировать в соответствии с запросом 202.
[0029] В любом случае, компонент 114 активации приложений идентифицирует и/или выбирает приложение для обслуживания запроса 202. Согласно фиг. 2, приложение может реализовываться или не реализовываться посредством соответствующей платформы 118 среды выполнения. Компонент 114 активации приложений может действовать для активации выбранного приложения для выполнения запроса. В частности, запрос 202 предписывает компоненту 114 активации приложений инициировать контракт с приложением для реализации расширяемых функциональных возможностей. Например, компонент 114 активации приложений может создавать объект 116 контракта (или множественные объекты контракта) для связи с выбранным приложением. Один или более объектов 116 контракта передаются компонентом 114 активации приложений надлежащему приложению 110 и обеспечивают различную информацию, которая используется приложением для выполнения контракта. Эта информация включает в себя ID 120 контракта, детали 122 контракта для конкретного контракта и настройки 124 активации для управления осуществлением контракта, которые можно обеспечить как отдельные объекты и/или посредством единичного объекта контракта.
[0030] В частности, ID 120 контракта используется для передачи приложению конкретного контракта, подлежащего осуществлению. Как и точки 112 расширения, разные контракты могут быть связаны с разными функциональными возможностями, например поисковыми запросами, совместным использованием данных приложениями, потоковой передачей файлов, операциями внешнего устройства, запуском приложений, взаимодействий веб-сайтов, контролем состояния активации и т.д.
[0031] Приложение может использовать ID 120 контракта, чтобы различать различные типы контрактов и понимать, как интерпретировать и обрабатывать остальную информацию, поступающую через объект 116 контракта. Таким образом, приложение может манипулировать, переводить и/или иначе обрабатывать объект 116 контракта по-разному в зависимости от конкретного контракта, который соответствует объекту 116 контракта, указанному посредством ID контракта. Например, идентичные аргументы, передаваемые с объектами контракта, можно интерпретировать и манипулировать ими по-разному в зависимости от ID контракта. В, по меньшей мере, некоторых вариантах осуществления контракты могут быть организованы в классы, соответствующие различным типам контрактов. В этом случае, ID контракта также можно использовать для передачи класса контракта, соответствующего контракту.
[0032] Детали 122 контракта обеспечивают конкретную информацию, касающуюся осуществляемого контракта. Они могут включать в себя параметры, ссылки, имена файлов и другие данные, используемые для осуществления контракта. Детали 122 контракта также могут указывать конкретные операции обработки, подлежащие осуществлению для контракта, и/или обеспечивать доступ к методам, которые можно использовать для осуществления контракта. В порядке примера, но не ограничения, текст поискового запроса можно обеспечить в связи с контрактом поиска. В другом примере, путь к файлу или поток можно обеспечить в связи с контрактом потоковой передачи файлов. Также можно обеспечить местонахождение выходной папки. В еще одном примере, унифицированный указатель ресурса (URL) или адрес веб-сайта можно обеспечить в связи с контрактом размещения файла. Детали контракта размещения файла также могут указывать операцию переформатирования, например, для снижения разрешения изображений до размещения изображений на сайте общего пользования.
[0033] Настройки 124 активации включают в себя параметры, которые указывают приложению, как проводить инициализацию для выполнения контракта. Настройки 124 активации также могут указывать существующий экземпляр приложения или среды выполнения, используемый для обработки данного контракта. Настройки 124 активации могут быть сконфигурированы для управления приложением и/или платформой 118 среды выполнения. Настройки 124 активации могут включать в себя аспекты представления, состояния приложения, настройки инициализации и другие настройки, которые указывают, как инициализировать приложение в назначенное состояние, чтобы приложение могло участвовать в контракте.
[0034] Например, настройки 124 активации могут включать в себя параметры создания окна, назначенные для управления созданием окна для приложения. Параметры создания окна, передаваемые с объектом контракта, можно использовать для обеспечения непрерывности вида и ощущения по пользовательским интерфейсам, применяемым OS и другими приложениями. Таким образом, окна для разных приложений могут быть скоординированными и появляться иммерсивно как часть пользовательского интерфейса для OS, или же OS выбирает размещение, порядок и организацию окон. Параметры создания окна могут быть сконфигурированы для управления хронированием создания окна приложения, размещением окна в выбранном месте экрана и/или визуальными аспектами, например цветами, шрифтами, графикой и т.д. Дополнительно, параметры создания окна можно использовать для указания разновидности создаваемого окна из разных доступных опций. Опции для типов окон могут включать в себя, среди прочих, полноразмерное/самостоятельное окно, внедренное или подчиненное окно, расположенное в UI другого приложения, окно для вывода на внешнее устройство, невидимое окно (например, фоновый процесс) или минимодовое окно. Таким образом, параметры создания окна обеспечивают управление, зависящее от контракта, над UI для указания создания надлежащей разновидности окна, которое запускается в правильном месте и имеет вид и ощущения, скоординированный с OS и/или другими приложениями.
[0035] В одном подходе, настройки 124 активации направляются на платформу 118 среды выполнения, которая принимает и использует настройки для активации соответствующего приложения в надлежащем состоянии, которое задано параметрами создания окна и/или другими настройками. Другая информация, включенная в объект контракта, например ID контракта и детали контракта, передаются самому коду приложения, который осуществляет фактическое выполнение контракта. В этом подходе, платформа 118 среды выполнения участвует в активации приложений, в основном для обработки заданий, связанных с инициализацией приложения. Платформа 118 среды выполнения может осуществлять эти задания, не располагая информацией об особенностях контракта или точках расширения, обеспечиваемых OS. Поскольку платформа 118 среды выполнения не располагает информацией о точках расширения, инфраструктура допускает разработку и добавление новых точек расширения, преимуществами которых могут пользоваться приложения, не внося изменений в платформу 118 среды выполнения. Соответственно, новые расширения могут устанавливаться и использоваться без модификаций различных платформ 118 среды выполнения, которые могут использоваться устройством. Среда выполнения просто действует для обработки инициализации приложения на основании объекта контракта и передает большинство реализации расширения самому коду приложения.
[0036] Таким образом, для активации приложения, компонент 114 активации приложений передает объект 116 контракта на точку 204 входа, которая назначена приложением. Связь может осуществляться непосредственно с приложением или через платформу 118 среды выполнения в качестве посредника для приложений, реализованных в конкретной среде выполнения. Точки 204 входа приложений для различных точек расширения/контрактов могут назначаться, когда приложения регистрируются в OS или иначе извещают ее для указания поддержки отдельных точек расширения/контрактов. Точки 204 входа обеспечивают точку контакта для соответствующих приложений, через которую компонент 114 активации приложений может взаимодействовать, вызывать и/или активировать приложения.
[0037] Точка входа может соответствовать конкретному методу, средству управления, форме, веб-странице и/или другому подходящему компоненту приложения (или среде выполнения), сконструированному для обработки объекта 116 контракта и/или соответствующего контракта. Точка 204 входа понимает формат объекта 116 контракта и может осуществлять перевод объекта в конкретную форму приложения. Например, точка 204 входа может быть сконфигурирована для обработки объектов, сообщений и/или других данных, которые передаются в соответствии с инвариантным, независимым от вычислительного языка протоколом, применяемым компонентом 114 активации приложений. В частности, единичный метод приложения, который действует на объекте контракта, может быть указан как общая точка входа для приложения. Она действует как воронка, через которую различная информация, переносимая объектами 116 контракта, передается приложению. Метод указывает приложению начать участвовать в точке расширения для выполнения контракта. Таким образом, одна общая точка входа может назначаться для приложения, которое способно осуществлять операции в отношении объектно-ориентированных компонентов, которые затем передаются приложению.
[0038] Когда объект 116 контракта принимается через точку входа, объект 116 контракта предписывает точке входа активировать приложение и инициировать обработку приложением для выполнения соответствующего контракта. Обработка происходит под управлением OS и наподобие того, как указывает объект 116 контракта через детали 122 контракта и/или настройки 124 активации.
[0039] После обработки, приложение может формировать ответ 206, возвращаемый компоненту 114 активации приложений. Ответ отражает результаты выполнения контракта приложением, включающие в себя, по меньшей мере, индикацию того, успешно ли выполнен контракт. Детали этих и других аспектов подходов к активации приложений описаны в связи со следующими примерными способами.
Примерные способы
[0040] В следующем разделе представлено рассмотрение логических блок-схем операций, которые описывают подходы к активации приложений, которые можно реализовать в соответствии с одним или более вариантами осуществления. Описанные ниже примерные способы можно реализовать в связи с любым подходящим оборудованием, программным обеспечением, программно-аппаратным обеспечением (firmware) или их комбинацией.
[0041] Фиг. 3 изображает примерный способ, в котором операционная система может активировать приложение для осуществления контракта, связанного с точкой расширения операционной системы. В, по меньшей мере, некоторых вариантах осуществления способ можно реализовать посредством надлежащим образом сконфигурированного вычислительного устройства, например иллюстративного вычислительного устройства 102, показанного на фиг. 1, которое включает в себя или иначе использует компонент 114 активации приложений.
[0042] На этапе 300 приложение регистрируется в точке расширения, обеспеченной операционной системой устройства. В одном подходе, приложения, которые поддерживают различные точки расширения, могут быть сконфигурированы для регистрации в операционной системе как часть процесса инсталляции приложения. Регистрируясь в конкретной точке расширения, приложение извещает OS о том, что приложение сконфигурировано для обслуживания точки расширения. Приложения также могут обеспечивать извещения вне инсталляции для регистрации в OS для обслуживания назначенных точек расширения.
[0043] Регистрация может происходить через компонент 114 активации приложений, который экспонируется операционной системой для обеспечения общего канала для активации приложений между разными приложениями и платформами среды выполнения. В частности, компонент 114 активации приложений может назначать идентификаторы приложений (AppID) и поддерживать манифест регистраций для разных приложений. Манифест сконфигурирован для согласования AppID с конкретными точками расширения по отдельности. Таким образом, манифест сопоставляет точки расширения с разными зарегистрированными приложениями, таким образом указывая, что эти приложения могут обслуживать эти точки расширения.
[0044] На этапе 302 осуществляется вызов приложения для обслуживания контракта, связанного с точкой расширения. Например, компонент 114 активации может быть сконфигурирован для обработки запроса доступа к расширяемым функциональным возможностям и выбора приложения для обслуживания запроса. Компонент 114 активации приложений может идентифицировать подходящее приложение для обслуживания запроса путем обращения к манифесту или другой подходящей структуре данных, которая сопоставляет приложения с соответствующими точками расширения. Затем компонент 114 активации приложений может предписывать активацию выбранного приложения.
[0045] в частности, на этапе 304 осуществляется передача объекта(ов) контракта приложению. Объект контракта идентифицирует контракт и обеспечивает информацию, достаточную для того, чтобы приложение могло выполнить контракт. Например, объект 116 контракта может передаваться через точку входа соответствующей платформы 118 среды выполнения, которая обрабатывает инициализацию приложения 110 на основании объекта. Затем платформа среды выполнения устанавливает надлежащую среду выполнения, инициализирует приложение и передает приложению большинство деталей для реализации расширения. При этом применяется разветвленный подход, который отделяет реализацию контракта и конкретный код от платформы среды выполнения. Платформа среды выполнения обрабатывает инициализацию, а приложение обрабатывает реализацию с использованием соответствующей информации, обеспеченной как часть объекта 116 контракта. Таким образом, платформе среды выполнения не требуется знать конкретные детали точек расширения, контрактов или реализации. Таким образом платформа 118 среды выполнения поддерживает инфраструктуру активации приложений, но не требует параллельного обновления при создании дополнений или модификаций точек расширения. Кроме того, разработчики могут создавать точки расширения для инфраструктуры без учета обновления платформ среды выполнения.
[0046] С другой стороны, некоторые приложения могут быть сконструированы для самостоятельной обработки инициализации и/или могут быть записаны в аппаратном собственном коде, который не опирается на платформу среды выполнения. В этом случае, объект 116 контракта может передаваться непосредственно точке входа в самом приложении. В этом подходе, приложение может быть сконфигурировано для обработки, как своей собственной инициализации, так и реализации расширения согласно объекту 116 контракта. Кроме того, приложение может активироваться для осуществления фонового задания посредством фонового процесса и/или невидимого окна. В этом случае, параметры окна, указывающие конкретный тип окна, могут вовсе не передаваться приложению.
[0047] В другом подходе, платформа среды выполнения может быть сконфигурирована для реализации выбранных контрактов и/или точек расширения со стороны приложений, обрабатываемых платформой. Этот подход можно применять, например, когда конкретный контракт и/или точка расширения считается сравнительно важным/ой для приложений, связанных с платформой среды выполнения. Например, если контракт поиска считается пригодным для всех приложений, связанных с платформой среды выполнения, платформа среды выполнения может быть сконфигурирована для автоматической реализации поискового контракта со стороны приложений. В этом случае, платформа среды выполнения может действовать наподобие приложения, которое активируется для обслуживания контрактов, подобных описанным здесь.
[0048] После активации, приложение может осуществлять обработку для выполнения контракта под управлением операционной системы. Разнообразная обработка может происходить в связи с разными точками 112 расширения. В частности, объект 116 контракта может указывать ID 120 контракта и детали 122 контракта, которые информируют приложение о конкретном контракте и о том, как обрабатывать контракт. Таким образом, приложение способно осуществлять назначенную обработку и сообщать результаты обратно компоненту 114 активации приложений.
[0049] В частности, на этапе 306 осуществляется получение ответа от приложения, указывающего, успешно ли выполнен контракт. Например, компонент 114 активации приложений может принимать и обрабатывать ответ от приложения после обработки приложением для осуществления контракта. Ответ может быть сконфигурирован для указания, по меньшей мере, успешного или неудачного выполнения контракта. Например, ответ может включать в себя логический параметр, используемый для указания того, успешно ли приложение выполнило контракт. Если контракт не увенчался успехом, компонент 114 активации приложений может инициировать повторную попытку с помощью того же приложения, закрыть приложение, инициировать обработку ошибок для приложения и/или вызвать другое совместимое приложение для выполнения контракта, при его наличии. Если контракт увенчался успехом, OS может совершать различные действия, например извещение запрашивающей стороны об успехе, инициирование последующих контрактов, которые зависят от результатов, получение и/или предоставление результатов контракта другим субъектам и т.д.
[0050] Фиг. 4 изображает другой примерный способ, в котором приложение действует для осуществления контракта, связанного с точкой расширения операционной системы. В, по меньшей мере, некоторых вариантах осуществления способ можно реализовать посредством надлежащим образом сконфигурированного вычислительного устройства, например иллюстративного вычислительного устройства 102, показанного на фиг. 1, которое включает в себя или иначе использует различные приложения 110 и/или соответствующие платформы 118 среды выполнения, которые совместимы с инфраструктурой активации приложений.
[0051] На этапе 400 осуществляется извещение операционной системы о точках входа приложения для указания поддержки приложением одной или более точек расширения через точки входа. Это может осуществляться любым пригодным способом. Как упомянуто выше, извещение может обеспечиваться приложением при инсталляции приложения. Извещения также могут обеспечиваться в другие моменты времени вне инсталляции, например, когда пользователь включает необязательный признак, когда признак используется в первый раз, или когда приложение исполняется в первый раз. В этих случаях, OS имеет возможность выявлять способность и намерение приложения использовать конкретные расширения на основании контекста взаимодействия. Соответственно, OS может регистрировать приложение для конкретных расширений. Приложение может извещать операционную систему через компонент 114 активации приложений о каждой точке 112 расширения, которую может обслуживать приложение. Приложение также снабжает операционную систему точкой 204 входа, которая выступает в качестве назначенной точки контакта приложения в отношении соответствующей точки 112 расширения. Точки 204 входа сконфигурированы для обработки передач, обеспечиваемых компонентом 114 активации приложений для активации приложения для обслуживания соответствующих точек расширения. Таким образом, извещения, обеспечиваемые приложениями, позволяют компоненту 114 активации приложений обновлять и поддерживать манифест, сопоставляющий приложения и их точки входа с точками расширения.
[0052] На этапе 402 осуществляется активация для обслуживания контракта, связанного с одной из точек расширения. Активация может происходить под управлением операционной системы. В, по меньшей мере, некоторых случаях, активация может происходить посредством платформы среды выполнения для приложения. Если экземпляр приложения уже исполняется, существующий экземпляр можно использовать. В противном случае, можно создавать новый экземпляр приложения.
[0053] На этапе 404 осуществляется получение объекта контракта через соответствующую точку входа. Объект контракта идентифицирует контракт и указывает приложению, как выполнять контракт, как упомянуто ранее. В частности, объект 116 контракта может приниматься точкой входа, которая назначена приложением. Точку входа можно обеспечить как часть самого приложения или посредством соответствующей платформы среды выполнения. Объект 116 контракта может включать в себя настройки 124 активации, используемые для инициализации приложения, включая задание окна под управлением OS. Объект контракта также включает в себя ID 120 контракта и детали 122 контракта, используемые приложением для реализации расширяемых функциональных возможностей.
[0054] Для выполнения контракта, на этапе 406 осуществляется обработка, указанная объектом контракта. Затем, на этапе 408 результаты обработки передаются операционной системе. Например, различные параметры данных, обеспеченные в составе деталей 122 контракта, могут информировать приложение о том, как осуществлять соответствующий контракт. При этом могут задаваться, например, этапы обработки, подлежащие осуществлению, имена/местоположения файлов, URL или домены для взаимодействия с другими сторонами, форматы данных, инструкции ответа, методы/объекты, которые могут способствовать в осуществлении контракта, и другую информацию, которая позволяет приложению реализовать контракт. Таким образом, приложение осуществляет контракт для реализации расширяемых функциональных возможностей наподобие предписанных операционной системой.
[0055] Когда контракт выполнен, приложение может отправлять ответ в компонент 114 активации приложений, который включает в себя результаты обработки. Результаты включают в себя, по меньшей мере, индикацию того, успешно ли выполнен контракт. В некоторых сценариях, результаты также могут включать в себя данные, файлы, ссылки и/или другую информацию, связанную с контрактом, которая генерируется по выполнении контракта. Например, результаты поиска могут сообщаться обратно в OS для расширения поиска, или преобразованные файлы могут сообщаться как результаты расширения преобразования формата. OS может использовать результаты для инициирования дальнейшей обработки, если применимо (например, вызова приложений для осуществления других контрактов), и/или сообщения результатов запрашивающему приложению или устройству.
[0056] Следует отметить, что в ряде случаев приложение может не отправлять ответ обратно в OS. Например, OS может быть сконфигурирована для опрашивания приложений в различные моменты времени для выяснения в отношении статуса контракта и/или приложения помимо или вместо явных ответов. Кроме того, зависшее приложение может быть неспособно обеспечивать надлежащий ответ. Таким образом, благодаря проверке статуса приложения, OS может обеспечивать другой механизм, посредством которого OS может отслеживать активированные приложения и соответствующие контракты.
[0057] Рассмотрев примерные подходы к активации приложений, обратимся к описанию примерной системы в соответствии с одним или более вариантами осуществления.
Примерная система
[0058] Фиг. 5 иллюстрирует примерную систему, в целом, обозначенную позицией 500, которая включает в себя примерное вычислительное устройство 502, которое представляет одну или более таких вычислительных систем и/или устройств, которые могут реализовать различные вышеописанные варианты осуществления. Вычислительным устройством 502 может быть, например, сервер поставщика услуг, устройство, связанное с вычислительным устройством 102 (например, клиентское устройство), внутрикристалльная система и/или любое другое подходящее вычислительное устройство или вычислительная система.
[0059] Примерное вычислительное устройство 502 включает в себя один или более процессоров 504 или блоков обработки данных, один или более машиночитаемых носителей 506, которые могут включать в себя один или более компонентов 508 памяти и/или хранения, один или более интерфейсов 510 ввода/вывода (I/O) для устройств ввода/вывода (I/O) и шину 512, которая позволяет различным компонентам и устройствам осуществлять связь друг с другом. Машиночитаемые носители 506 и/или одно или более устройств I/O могут входить в состав вычислительного устройства 502 или, альтернативно, могут быть подключены к нему. Шина 512 представляет один или более из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину, ускоренный графический порт и процессор или локальную шину, использующих любую из различных шинных архитектур. Шина 512 может включать в себя проводные и/или беспроводные шины.
[0060] Один или более процессоров 504 не ограничиваются материалами, из которых они сформированы, или применяемыми в них механизмами обработки. Например, процессоры могут состоять из полупроводника(ов) и/или транзисторов (например, электронных интегральных схем (ИС)). В таком контексте исполняемые на процессоре инструкции могут представлять собой электронно-исполняемые инструкции. Компонент 508 памяти/хранения представляет емкость памяти/хранилища, связанную с одним или более машиночитаемых носителей. Компонент 508 памяти/хранения может включать в себя энергозависимые носители (например, оперативную память (ОЗУ)) и/или энергонезависимые носители (например, постоянную память (ПЗУ), флэш-память, оптические диски, магнитные диски и т.д.). Компонент 508 памяти/хранения может включать в себя встроенные носители (например, ОЗУ, ПЗУ, встроенный жесткий диск и т.д.), а также сменные носители (например, накопитель на основе флэш-памяти, сменный жесткий диск, оптический диск и т.д.).
[0061] Интерфейс(ы) 510 ввода/вывода позволяют пользователю вводить команды и информацию в вычислительное устройство 502, и также позволяют представлять информацию пользователю и/или другим компонентам или устройствам с использованием различных устройств ввода/вывода. Примеры устройств ввода включают в себя клавиатуру, дисплей с сенсорным экраном, устройство управления курсором (например, мышь), микрофон, сканер и т.д. Примеры устройств вывода включают в себя устройство отображения (например, монитор или проектор), громкоговорители, принтер, сетевую карту и т.д.
[0062] Различные технические средства и технологии могут быть описаны здесь в общем контексте программного обеспечения, оборудования (неизменяемой логической схемы) или программных модулей. В целом, такие модули включают в себя процедуры, программы, объекты, элементы, компоненты, структуры данных и т.д., которые осуществляют конкретные задания или реализуют конкретные абстрактные типы данных. Реализация этих модулей и подходов может храниться на тех или иных разновидностях машиночитаемых носителей или передаваться через них. Машиночитаемые носители могут включать в себя различные доступные носители, к которым может осуществлять доступ вычислительное устройство. В порядке примера, но не ограничения, машиночитаемые носители могут включать в себя “машиночитаемые носители данных” и “среды связи”.
[0063] Термин “машиночитаемые носители данных” может означать носители и/или устройства, которые обеспечивают постоянное и/или нетранзиторное хранение информации, в отличие от простой передачи сигнала, несущих волн или самих сигналов. Таким образом, термин «машиночитаемые носители данных» означает носители, не связанные с передачей сигнала. Термин “машиночитаемые носители данных” также включает в себя аппаратные элементы, имеющие инструкции, модули и/или неизменяемую логику устройства, реализованные в аппаратной форме, которые могут применяться в некоторых вариантах осуществления для реализации аспектов описанных подходов.
[0064] Термин “машиночитаемые носители данных” включает в себя энергозависимые и энергонезависимые, сменные и стационарные носители и/или запоминающие устройства, реализованные согласно способу или технологии, пригодному(ой) для хранения информации, например машиночитаемых инструкций, структур данных, программных модулей, логических элементов/схем или других данных. Примеры машиночитаемых носителей данных могут включать в себя, но без ограничения, ОЗУ, ПЗУ, ЭСППЗУ (EEPROM), флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или другое оптическое запоминающее устройство, жесткие диски, магнитные кассеты, магнитную ленту, накопитель на основе магнитного диска или другие магнитные запоминающие устройства, аппаратные элементы (например, неизменяемую логику) интегральной схемы или микросхемы, или другое запоминающее устройство, вещественные носители, или промышленное изделие, пригодное для хранения нужной информации, к которому может обращаться компьютер.
[0065] Термин “среды связи” может означать среду переноса сигнала, которая сконфигурирована для передачи инструкций на оборудование вычислительного устройства, например, через сеть. Среды связи обычно могут воплощать машиночитаемые инструкции, структуры данных, программные модули или другие данные в виде модулированного сигнала данных, например несущих волн, сигналов данных или другого транспортного механизма. Среды связи также включают в себя любые среды доставки информации. Термин “модулированный сигнал данных” означает сигнал, одна или более характеристик которого задается или изменяется таким образом, чтобы кодировать информацию в сигнале. В порядке примера, но не ограничения, среды связи включают в себя проводные среды передачи данных, например проводную сеть или прямое проводное соединение, и беспроводные среды передачи данных, например акустические, радиочастотные (РЧ), инфракрасные и другие беспроводные среды передачи данных.
[0066] Комбинации любых из вышеперечисленных вариантов также охватываются понятием “машиночитаемый носитель”. Соответственно, программное обеспечение, оборудование или программные модули, включая компонент 114 активации приложений, операционную систему 108, приложения 110 и другие программные модули, можно реализовать в виде одной или более инструкций и/или логики, воплощенных в той или иной разновидности машиночитаемых носителей.
[0067] Соответственно, конкретные описанные здесь модули, функциональные возможности, компоненты и технические средства можно реализовать в виде программного обеспечения, оборудования, программно-аппаратного обеспечения и/или их комбинаций. Вычислительное устройство 502 может быть сконфигурировано для реализации конкретных инструкций и/или функций, соответствующих программным и/или аппаратным модулям, реализованным на машиночитаемых носителях. Инструкции и/или функции могут исполняться/эксплуатироваться одним или более промышленным изделием (например, одним или более вычислительных устройств 502 и/или процессоров 504) для реализации подходов к активации приложений, а также других подходов. Такие подходы включают в себя, но без ограничения, описанные здесь примерные процедуры. Таким образом, машиночитаемые носители могут быть сконфигурированы для хранения или иного обеспечения инструкций, которые, при их исполнении одним или более описанными здесь устройствами, предписывают осуществлять различные подходы к активации приложений.
Заключение
[0068] Здесь были описаны методики активации приложений. В соответствии с вышеизложенным, операционная система (OS) может включать в себя различные точки расширения, которые могут использоваться через соответствующие контракты. Расширяемые аспекты определяются как интегрированные функциональные возможности OS и регулируются со стороны OS централизованным образом. Однако конкретные реализации расширяемых функциональных возможностей могут перегружаться на приложения через контракты. Управляющую и координирующую роль в обработке реализации функциональных возможностей кодом приложения может брать на себя централизованный компонент активации приложений, используя объектно-ориентированный подход.
[0069] Хотя варианты осуществления были описаны применительно к конкретным структурным признакам и/или методологическим действиям, следует понимать, что варианты осуществления, заданные в нижеследующей формуле изобретения, не обязательно ограничиваются конкретными описанными признаками или действиями. Напротив, конкретные признаки и действия раскрыты как примерные формы реализации пунктов формулы изобретения.