Обслуживание событий для локальных приложений-клиентов посредством локального сервера
Изобретение относится к вычислительной техники, а именно к обработке запросов в архитектуре клиент–сервер. Технический результат – эффективная обработка запросов сервером от имени приложений–клиентов на одном устройстве. Способ выполнения запросов на устройстве, имеющем процессор, исполняющий по меньшей мере одно локальное приложение-клиент, при этом способ содержит этап, на котором исполняют на устройстве команды, сконфигурированные генерировать локальный сервер, связывающий по меньшей мере один серверный сценарий с по меньшей мере одним локальным событием, по приему от локального приложения-клиента запроса подписки, задающего выбранное локальное событие, связывать выбранное локальное событие с локальным приложением-клиентом, по обнаружению локального события, связанного с по меньшей мере одним серверным сценарием и локальным приложением-клиентом, исполнять внутри локального сервера серверные сценарии, связанные с и относящиеся к этому локальному событию, от имени локального приложения-клиента, по приему запроса подписки, задающего адресата, от локального приложения-клиента, определять, содержит ли адресат локальный сервер на упомянутом устройстве, по определению того, что адресат содержит локальный сервер на упомянутом устройстве, представлять запрос подписки, задающий адресата, в локальный сервер, и по определению того, что адресат содержит удаленный сервер вне упомянутого устройства, отправлять запрос подписки, задающий адресата, в удаленный сервер. 5 н. и 15 з.п. ф-лы, 8 ил.
УРОВЕНЬ ТЕХНИКИ ИЗОБРЕТЕНИЯ
[0001] В области вычислительной техники во многих подходах вовлекается архитектура клиент-сервер для предоставления возможности исполнения приложения на клиенте. В качестве первого примера, устройство с веб-сервером может предоставлять команды и/или содержимое, содержащее веб-приложение, во второе устройство для исполнения внутри веб-браузера. В качестве второго примера, хранилище приложений может предоставлять команды, содержащие развертываемое локальное приложение, которое может исполняться полностью на втором устройстве. В качестве третьего примера, сервер базы данных может предоставлять данные для содействия исполнению приложения на втором устройстве.
[0002] Ввиду этих и других подходов архитектура клиент-сервера привела к исполнению на каждом устройстве специализированных технологий. В некоторых случаях такая специализация приводит к прямо противоположной разработке ввиду различных обстоятельств сервера и клиента. Например, серверное устройство часто вовлекает код, специализированный для контекста сервера, такого как одновременное исполнение приложений от имени нескольких клиентов; выполнение запросов по реализуемому и масштабируемому принципу (например, исполнение высоко оптимизированного кода для ускорения выполнения запросов и уменьшение или устранение привязанности к пользовательскому интерфейсу); уменьшение взаимодействий с сохранением состояний, когда сервер хранит данные, связанные с первой транзакцией, для того чтобы выполнить вторую транзакцию; и проверка допустимости и изоляция контекстов выполнения запросов, принятых от других клиентов, чтобы уменьшить уязвимость безопасности. Схожим образом клиентское устройство часто вовлекает код, специализированный для контекста клиента, такого как кодирование команд на платформенно-независимом языке, который не зависит от конкретной конфигурации устройства; конфигурирование команд для исполнения внутри веб-браузера; обеспечение устойчивого пользовательского интерфейса; и хранение информации в клиенте (например, в форме куки-файлов (cookies), сохраненных в кэш-памяти веб-браузера) для того, чтобы удерживать информацию от первой транзакции в поддержку второй транзакции. С этими и другими подходами специализация контекстов сервера и клиента привела к исполнению на этих различных устройствах очень разных типов команд.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] Данный раздел «Сущность изобретения» предоставлен для введения подборки идей в упрощенной форме, которые дополнительно описываются ниже в разделе Подробное описание. Не подразумевается, что данный раздел «Сущность изобретения» означает главные признаки или существенные признаки заявляемого изобретения, кроме того, не предусматривается использование данного раздела Сущность для ограничения объема заявляемого изобретения.
[0004] В то время как дивергентная специализация контекстов сервера и клиента содействует производительности каждого типа устройств, такая дивергенция вызывает различные трудности. В качестве одного такого примера, если сервер исполняет один тип кода (например, команды, которые, в частности, сконфигурированы для возможностей сервера), а клиент исполняет второй тип кода (например, гибкие и платформенно-независимые команды, которые могут исполняться одинаково на многих устройствах), такие различия могут усложнять совместную разработку приложения-сервера и приложения-клиента из-за различий в языках, интерфейсах (API) прикладного программирования и стандартах данных. Дополнительно, разработчики должны понимать два различных языка и среды исполнения и методики для преобразования типов данных и объектов, которыми там приходится обмениваться. В результате, последние разработки вовлекли конвергенцию в разработке этих сред, такую как разработка и популярность модели Node.js, вовлекающую код JavaScript на стороне сервера с конструкциями языка и интерфейсами (API) прикладного программирования, специализированными для контекста сервера, таким образом предоставляя возможность разработки кода сервера и кода клиента на одном и том же языке и совместно используя интерфейсы (API) прикладного программирования и типы данных. Однако такие конвергентные среды разработки сервера и клиента обычно применяются при взаимодействии исполнения приложения-сервера на серверном устройстве и исполнения приложений-клиентов на одном или более клиентских устройствах.
[0005] В данном документе представлены методики для применения конвергентных сред разработки сервера и клиента для использования на одном устройстве. В частности, такие методики могут позволять устройству реализовывать обработку, относящуюся к локальным событиям, от имени приложения-клиента, исполняющегося на устройстве, посредством локального сервера, выполненного на том же самом устройстве. Например, на устройстве может исполняться локальный сервер (такой как веб-сервер), сконфигурированный с возможностью наблюдения за локальными событиями устройства и приема запросов приложениями-клиентами на том же самом устройстве для подписки на одно или более локальных событий. Локальный сервер может также связывать один или более серверных (скриптов) сценариев, и после обнаружения возникновения локального события, на которое подписано приложение-клиент, локальный сервер может исполнить серверный сценарий(и), связанный с локальным событием, от имени локального устройства.
[0006] Например, локальное событие может содержать событие мобильной связи, такое как входящий сеанс передачи голоса, и приложение-клиент может запросить некоторую конкретную обработку для данного сеанса передачи голоса, такую как запись сеанса. Однако приложения-клиенты, исполняющиеся на мобильном устройстве, могут не находиться в исполнении во время входящего сеанса передачи голоса и, таким образом, могут не наблюдать за возникновением такого локального события. Альтернативно, модель обеспечения безопасности мобильного устройства может обычным образом мешать приложениям-клиентам взаимодействовать с такими локальными событиями в качестве меры качества обслуживания или безопасности (например, локальное приложение может исполняться внутри изолированной конструкции устройства, например, внутри веб-браузера). Скорее, и согласно методикам, представленным в данном документе, приложение-клиент может посылать локальному серверу на том же самом устройстве (исполняющемуся непрерывно и вне веб-браузера) запрос подписки, идентифицирующий локальное событие входящего сеанса передачи голоса. После обнаружения такого события локальный сервер может исполнить один или более серверных сценариев, относящихся к локальному событию, от имени приложения-клиента. Кроме того, серверный сценарий может быть разработан в среде разработки, подобной среде разработки приложения-клиента (например, как серверный сценарий, так и локальное приложение-клиент могут быть написаны на JavaScript, где серверный сценарий использует API Node.js на стороне сервера), таким образом, содействуя разработке этих взаимодействующих приложений согласованным и совместимым образом. Такие преимущества могут быть достижимыми посредством изменений архитектуры клиент-сервер, представленной в данном документе.
[0007] Для выполнения вышеуказанных и связанных с ними задач последующее описание и сопроводительные чертежи формулируют некоторые иллюстративные аспекты и варианты реализации. Они указывают всего лишь несколько из различных принципов, по которым один или более аспектов могут использоваться. Другие аспекты, преимущества и новые признаки раскрытия станут очевидными из последующего подробного описания при рассмотрении совместно с сопроводительными чертежами.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0008] Фиг.1 является иллюстрацией примерного подхода, изображающего архитектуру клиент-сервер для выполнения запросов приложений-клиентов, относящихся к событиям, возникающим на клиентском устройстве и серверном устройстве.
[0009] Фиг.2 является иллюстрацией примерного подхода, изображающего архитектуру клиент-сервер для выполнения запросов приложений-клиентов, относящихся к локальным событиям, в соответствии с методиками, представленными в данном документе.
[0010] Фиг.3 является иллюстрацией примерного способа конфигурирования устройства для выполнения запросов приложений-клиентов, относящихся к локальным событиям, в соответствии с методиками, представленными в данном документе.
[0011] Фиг.4 является блок-схемой компонентов, изображающей примерную систему для выполнения запросов приложений-клиентов, относящихся к локальным событиям, в соответствии с методиками, представленными в данном документе.
[0012] Фиг.5 является иллюстрацией примерного считываемого компьютером носителя, содержащего исполняемые процессором команды, сконфигурированные с возможностью воплощения одного или более положений, сформулированных в данном документе.
[0013] Фиг.6 является иллюстрацией примерного подхода, показывающего модель подписки на события, позволяющую локальным приложениям подписываться на локальные события, генерируемые компонентами устройства, при этом соответствующие компоненты идентифицируются адресом компонента.
[0014] Фиг.7 является иллюстрацией примерного подхода, показывающего ячейку устройств, содержащую набор устройств, на которых соответственно исполняется локальный сервер, сконфигурированный с возможностью приема и выполнения запросов подписки на события, принимаемых как от локальных приложений-клиентов, так и от удаленных приложений-клиентов, исполняющихся на других устройствах ячейки устройств.
[0015] Фиг.8 изображает примерную вычислительную среду, в которой может быть реализовано одно или более положений, сформулированных в данном документе.
ПОДРОБНОЕ ОПИСАНИЕ
[0016] Заявляемое изобретение теперь описывается со ссылкой на чертежи, на которых одинаковые ссылочные позиции используются для обозначения повсюду одинаковых элементов. В последующем описании, в целях пояснения, излагаются многочисленные конкретные подробности для того, чтобы обеспечить исчерпывающее понимание заявляемого изобретения. Очевидно, существует возможность того, однако, что заявляемое изобретение может быть реализовано без этих конкретных подробностей. В других примерах структуры и устройства изображены в виде блок-схем для содействия описанию заявляемого изобретения.
[0017] A. Введение
[0018] В области вычислительной техники, во многих подходах вовлекается архитектура клиент-сервер, содержащая приложение-сервер (например, веб-сервер), обеспечивающее один или более сервисов от имени одного или более приложений-клиентов. В качестве первого примера, сервис может включать в себя предоставление веб-содержимого (контента), включающего в себя веб-страницы и веб-приложения, которые следует визуализировать внутри веб-браузера клиентского устройства. В качестве второго примера, сервис может включать в себя хранилище приложений, сконфигурированное с возможностью хранения набора приложений, исполняемых на различных устройствах, и обеспечения конкретного устройства одним или более приложениями, которые вслед за этим могут быть исполнены. В качестве третьего примера, сервис может включать в себя хранение данных (например, в базе данных) и предоставление таких данных для использования внутри различных «управляемых данными» приложений, исполняющихся на соответствующих клиентских устройствах. В традиционной модели приложение-сервер функционирует в качестве резидентного процесса устройства, чтобы ждать соединения, инициируемого приложением-клиентом, принимает запросы со стороны приложения-клиента и выполняет такие запросы для того, чтобы предоставить сервис приложению-клиенту.
[0019] Во многих таких подходах приложение-сервер исполняется на серверном устройстве, а приложение-клиент исполняется на одном или более клиентских устройствах. Данные устройства могут представлять различные возможности, подходящие для каждой роли. Например, клиентское устройство может содержать ориентированное на пользователя устройство (например, рабочая станция, портативный компьютер, планшет, мобильный телефон или другое устройство), исполняющее приложение-клиент от имени пользователя, и может быть специализированным для таких взаимодействий (например, включать в себя устройства ввода с поддержкой касания и устройство высококачественного отображения и компоненты для звука). В отличие от этого серверное устройство может содержать сервис-ориентированное устройство (например, компонент сервера «без устройства отображения», не имеющий выделенного компонента отображения) и может быть специализированным для удовлетворения запросов на обслуживание очень производительным образом (например, иметь высокопроизводительные процессоры, кэш-память данных большой емкости и обильные сетевые ресурсы). Серверное устройство может содержать несколько серверных устройств, взаимодействующих по принципу «серверной фермы» (группы серверов). То есть клиентские устройства могут быть сконфигурированы с возможностью предоставления привлекательной для пользователя эксплуатации, в то время как серверные устройства могут быть сконфигурированы с возможностью ускорения обработки запросов на обслуживание и надежности таких устройств (например, через возможности обхода отказов, предоставляемые на серверной ферме).
[0020] Ввиду этих и других соображений методики для разработки приложений-серверов обычно отличаются по нескольким известным аспектам от методик для разработки приложений-клиентов. В качестве первого примера, приложения-клиенты часто разрабатываются для исполнения на большом разнообразии клиентских устройств, и поэтому могут разрабатываться на платформенно-независимом языке (например, JavaScript, который способен исполняться внутри любого веб-браузера). В отличие от этого приложения-серверы часто разрабатываются с использованием методик разработки, которые в высокой степени подстроены и настроены для конкретной конфигурации сервера, чтобы повышать производительность. В качестве второго примера, приложения-клиенты могут разрабатываться в качестве «сохраняющих состояния», то есть сохраняя некоторую информацию о первом запросе, посланном приложением-клиентом серверу, чтобы обеспечить контекст и непрерывность для второго запроса, посланного приложением-клиентом серверному устройству. Например, веб-браузеры часто конфигурируются с возможностью хранения «куки-файлов» на машине пользователя, чтобы позже предоставлять возможность серверу снова идентифицировать клиентское устройство. В отличие от этого приложения-серверы часто разрабатываются по принципу «без сохранения состояний», посредством чего данные, хранящиеся касаемо любой конкретной первой транзакции, уменьшаются для того, чтобы повысить масштабируемость приложения-сервера при выполнении от имени многих приложений-клиентов.
[0021] На фиг.1 представлена иллюстрация примерного подхода 100, показывающего взаимодействие приложения-сервера 104, исполняющегося на серверном устройстве 102, и приложения-клиента 108, исполняющегося на клиентском устройстве 106. Серверное устройство 102 может быть соединено с сетью (например, Интернетом или локальной сетью (LAN)) и сконфигурировано с возможностью ожидания соединения от одного или более приложений-клиентов 108. После такого соединения приложение-клиент 108 может предоставить один или более запросов в приложение-сервер 104, таких как запрос веб-содержимого, приложения, исполняемого на клиентском устройстве 106, или данных, используемых «управляемым данными» приложением. Приложение-сервер 104 может выполнять такие запросы от имени приложения-клиента 108, и клиентское устройство 106 может представлять результаты такого обслуживания пользователю 110. Чтобы удовлетворять различным ролям этих устройств, приложение-сервер 104 часто, в частности, сконфигурировано с возможностью использования конкретных возможностей серверного устройства 102. В отличие от этого приложение-клиент 108 часто выполняется на языке высокого уровня, таком как JavaScript, который может исполняться на большом разнообразии клиентских устройств 106 независимо от возможностей конкретного клиентского устройства 106.
[0022] В качестве конкретного примера, приложение-сервер 104 может быть выполнено с возможностью уведомления приложений-клиентов 108 и/или клиентских устройств 106 о событиях 112 на сервере, обнаруженных серверным устройством 102, таких как прием новых данных серверным устройством 102 или наблюдение за условиями локального окружения (например, наблюдение за погодой или захваченные изображения окружения, в котором расположено серверное устройство 102). Приложение-клиент 108 может запросить уведомление о таких событиях 112 на сервере, и после обнаружения события 112 на сервере приложение-сервер 104 может отправить уведомление 114 о событии на сервере приложению-клиенту 108. Дополнительно, клиентское устройство 106 может наблюдать за событиями 116 на клиентском устройстве, такими как пользовательский ввод, принятый от пользователя 110 или компонента ввода, и может исполнять наблюдение 118 за событиями на клиентском устройстве, чтобы обнаруживать и сообщать о таких сервисах. Например, клиентское устройство 106 может включать в себя программу управления аппаратным обеспечением, которая сконфигурирована с возможностью наблюдения за событиями в аппаратном обеспечении, и предоставлять уведомления 120 о событиях на клиентском устройстве, сообщающих о таких событиях в аппаратном обеспечении приложениям-клиентам 108. По такому принципу приложение-сервер 104 и приложение-клиент 108, исполняющиеся в различных ролях и на различных устройствах, могут взаимодействовать для сообщения приложению-клиенту 108 о событиях 112 на сервере, обнаруженных приложением-сервером 104, и событиях 116 на клиентском устройстве, обнаруженных наблюдением 118 за событиями на клиентском устройстве.
[0023] Однако архитектура, представленная в примерном подходе 100 на фиг.1, может представлять некоторые недостатки. В частности, разработка приложения-сервера 104, ввиду специализированных свойств серверного устройства 102, может значительно отличаться от разработки приложения-клиента 108 на обобщенном языке для разнообразных устройств. Из-за различных языков и сред разработки разработчикам может потребоваться понимание обеих сред разработки и согласование таких отличий для взаимодействия приложения-сервера 104 и приложения-клиента 108 (например, борясь с различиями с помощью доступных сред (API) прикладного программирования и преобразования форматов данных). Чтобы согласовать такие различия, наиболее последние модели разработки приложений-серверов становятся конвергентными с разработкой приложений-клиентов, чтобы обеспечить слаженность при разработке таких взаимодействующих приложений. В качестве первого примера, JavaScript традиционно считался недостаточно производительным для приложений-серверов, однако широко распространенное знакомство с JavaScript среди сообщества разработчиков привело к разработке Node.js, модуля JavaScript, обеспечивающего исполнение кода JavaScript на стороне сервера. В качестве второго примера, методики разрабатывались для позволения серверам исполнять языки верхнего уровня (такие как JavaScript) более производительным образом, например, компилируя JavaScript в собственный код, который может исполняться быстрее на сервером устройстве 102. Поэтому разработчики могут использовать один и тот же язык и подобные API для разработки как приложений-серверов 104, так и приложений-клиентов 108. Ввиду таких конвергентных технологий могут разрабатываться методики для использования кода на стороне сервера в новых подходах.
[0024] B. Представленные методики
[0025] В данном документе представлен один такой подход, в котором приложение-сервер 104 может предоставлять сервисы, относящиеся к событиям 116 на клиентском устройстве, связанным с клиентским устройством 106. В частности, приложение-сервер 104 может исполняться на устройстве 106 для предоставления относящихся к локальным событиям сервисов одному или более приложениям-клиентам 108, исполняющимся на том же самом устройстве. Например, традиционный веб-сервер может исполняться пассивно, но непрерывно на клиентском устройстве 107, и может ожидать запросы на сервисы локальных событий, инициируемые одним или более локальными клиентскими веб-приложениями, исполняющимися внутри веб-браузера на том же самом клиентском устройстве 106. Такие запросы могут включать в себя, например, уведомление клиентского устройства 106 о локальных событиях, либо применение некоторой обработки, относящейся к локальному событию, от имени приложения-клиента 108. Предоставляя возможность приложению-серверу 104 наблюдать за такими событиями 116 на клиентском устройстве и применять исполнение к событиям 116 на устройстве, эта модель может разгрузить приложения-клиенты 108 от данного наблюдения и вычислительной нагрузки, которые могут исполняться очень интерактивным, оперативным образом по запросу пользователя 110 (например, наблюдение и обработка событий 116 на клиентском устройстве могут продолжаться даже после того, как приложение-клиент 108 завершено пользователем 110). Дополнительно, данная модель может предоставлять возможность взаимодействия приложению-серверу 104 с событиями 116 на клиентском устройстве, тогда как такие взаимодействия могут быть не разрешены приложению-клиенту 108. Например, приложение-клиент 108 может исполняться внутри веб-браузера, который изолирует приложение-клиент 108 от локальных событий 116 на клиентском устройстве из соображений безопасности; однако приложение-клиент 108 может запросить приложение-сервер 104, исполняющееся вне веб-браузера и с более большим набором разрешенных возможностей, взаимодействовать с событиями 116 клиентского устройства проверенным и доверенным образом.
[0026] На фиг.2 представлена иллюстрация примерного подхода 200, показывающего архитектуру клиент-сервер, сконфигурированную согласно методикам, представленным в данном документе. В данном примерном подходе 200 на клиентском устройстве 106 исполняется как приложение-сервер 104, так и одно или более приложений-клиентов 108, и клиентское устройство 106 может предоставлять возможность приложениям-клиентам 108 взаимодействовать с локальными событиями 206 через взаимодействие с клиент-серверным приложением 104. В частности, приложение-сервер 104 может содержать один или более серверных сценариев 202, которые обеспечивают различные типы обработки при исполнении в контексте различных локальных событий 206. Приложение-клиент 108 может представлять приложению-серверу 104 запрос 204 подписки на событие, идентифицирующий одно или более конкретных локальных событий 206, которые могут возникнуть внутри клиентского устройства 106. Приложение-сервер 104 может выполнить запрос 204 подписки на событие посредством связывания одного или более серверных сценариев 202 с локальным событием 206, так что, когда происходят такие локальные события 206, приложение-сервер 104 может реализовать исполнение 208 серверных сценариев из серверных сценариев 202 от имени подписанного приложения-клиента 108.
[0027] Архитектурная модель, представленная в примерном подходе 200 на фиг.2, может сделать возможными различные преимущества по отношению к другим моделям обработки локальных событий. В качестве первого примера, данная архитектура может предоставлять возможность приложению-серверу 104 реализовывать непрерывное фоновое наблюдение за локальными событиями 206 и исполнение доверенных серверных сценариев 202, обеспечивающих вызывающую доверие обработку локальных событий 206, в то время как недоверенное приложение-клиент 104 может исполняться время от времени и недоверенным образом (например, внутри изолированной конструкции веб-браузера). В качестве второго примера, предоставление одного приложения-сервера 104 для наблюдения за обширным диапазоном локальных событий 206 и применения к ним обработки может быть более эффективным, чем конфигурирование каждого из нескольких приложений-клиентов 108 для наблюдения за тем же самым набором локальных событий 206. В качестве третьего примера, серверные сценарии 202 могут быть разработаны в подобной среде разработки, что и приложения-клиенты 104 (например, серверный сценарий 202 может использовать Node.js модель программирования JavaScript на стороне сервера, а приложение-клиент 104 может быть разработано в качестве JavaScript на стороне клиента, исполняющегося внутри веб-браузера клиентского устройства 102). Например, локальные события 206 могут включать в себя события, которые приложениям-клиентам 104 часто не разрешено обрабатывать непосредственно, такие как события аппаратного обеспечения низкого уровня или события, возникающие внутри различных процессов клиентского устройства 102, с которыми приложению-клиенту 104 запрещено взаимодействовать. В качестве четвертого примера, посредством обработки информации на одном и том же пользовательском устройстве вместо отправки информации в качестве задействования сервиса на удаленном устройстве, эти методики содействуют изоляции информации, которую пользователь может не хотеть распространять, такой как информация, которая является личной для пользователя (например, местоположение и личность пользователя) и/или информация безопасности (например, пароли). В качестве пятого примера, подход программирования приложений, которые следует исполнять сервером при обслуживании приложений-клиентов, исполняющихся на том же самом устройстве, может обеспечить новый вычислительный подход и может предоставить возможность развития нового рынка вокруг таких приложений. Эти и другие преимущества могут быть достижимыми посредством архитектуры, изображенной в примерном подходе 200 на фиг.2, и методик, представленных в данном документе.
[0028] C. Примерные варианты осуществления
[0029] На фиг.3 представлен первый примерный вариант осуществления методик, представленных в данном документе, изображенный в качестве примерного способа 300 выполнения запросов на устройстве, имеющем процессор и исполняющем, по меньшей мере, одно локальное приложение-клиент 108. Примерный способ 300 может быть реализован, например, в качестве набора команд, сохраненных в запоминающем компоненте устройства, таком как запоминающая схема, диск жесткого диска, твердотельное запоминающее устройство или магнитный или оптический диск, и организованных так, чтобы, при исполнении устройством, предписывать устройству функционировать согласно методикам, представленным в данном документе. Примерный способ 300 начинается на этапе 302 и вовлекает исполнение 304 команд в процессоре устройства. В частности, эти команды могут быть сконфигурированы с возможностью генерирования 306 локального сервера, связывающего, по меньшей мере, один серверный сценарий 202 с, по меньшей мере, одним локальным событием 206, которое может возникнуть на устройстве. Команды также сконфигурированы с возможностью, после приема от локального приложения-клиента 108 запроса 204 подписки на событие, задающего выбранное локальное событие 206, связывания 308 выбранного локального события 206 с локальным приложением-клиентом 108. Команды также сконфигурированы с возможностью, после обнаружения локального события, связанного с, по меньшей мере, одним серверным сценарием 202 и локальным приложением-клиентом 108, исполнения 310 внутри локального сервера серверных сценариев 202, связанных с и относящихся к локальному событию 206, от имени локального приложения-клиента 108. Выполнив обработку локального события 206 от имени локального приложения-клиента 108 посредством использования локального сервера, исполняющегося на том же самом устройстве, примерный способ 300 реализует методики, представленные в данном документе, и завершается на этапе 312.
[0030] На фиг.4 представлен второй примерный вариант осуществления методик, представленных в данном документе, изображенный в качестве примерного подхода 400, показывающего примерную систему 406, сконфигурированную с возможностью выполнения запросов на устройстве 402, имеющем процессор 404, исполняющий, по меньшей мере, одно локальное приложение-клиент 108. Примерная система 406 может быть реализована, например, в качестве команд, сохраненных в запоминающем компоненте устройства 402 и сконфигурированных с возможностью, при исполнении в процессоре 404, предписания устройству 402 функционировать согласно методикам, представленным в данном документе. Примерная система 406 содержит компонент 408 с локальным сервером, сконфигурированный с возможностью связывания, по меньшей мере, одного серверного сценария 202 с, по меньшей мере, одним локальным событием 206. Примерная система 406 также содержит компонент 410 привязки к локальному серверу, который сконфигурирован с возможностью, после приема от приложения-клиента 108 запроса 204 подписки на событие, задающего выбранное локальное событие 206, связывания выбранного локального события 206 с локальным приложением-клиентом 108; и, после обнаружения локального события 206, связанного с, по меньшей мере, одним серверным сценарием 202 и приложением-клиентом 108, исполнения внутри компонента 408 с локальным сервером серверных сценариев 202, связанных с и относящихся к локальному событию 206, от имени приложения-клиента 108. Посредством наблюдения появления локальных событий 206 и исполнения серверных сценариев 202 в ответ на локальные события 206 от имени приложения-клиента 108 примерная система 406 достигает внутри устройства 402 применение методик, представленных в данном документе.
[0031] Еще один вариант осуществления вовлекает считываемый компьютером носитель, содержащий исполняемые процессором команды, сконфигурированные с возможностью применения методик, представленных в данном документе. Такой считываемый компьютером носитель может включать в себя, например, считываемые компьютером носители хранения информации, вовлекающие материальное устройство, такое как запоминающий полупроводник (например, полупроводник, использующий технологии статической памяти (SRAM) с произвольным доступом, динамической памяти (DRAM) с произвольным доступом и/или синхронной динамической памяти (SDRAM) с произвольным доступом), диск жесткого диска, устройство с флэш-памятью, либо магнитный или оптический диск (такой как CD-R, DVD-R или гибкий диск), кодирующие набор считываемых компьютером команд, которые при исполнении процессором устройства предписывают устройству реализовывать методики, представленные в данном документе. Такой считываемый компьютером носитель может также включать в себя (в качестве класса технологий, которые отличаются от считываемых компьютером носителей хранения информации), различные типы носителей связи, такие как сигнал, который может распространяться посредством различных физических процессов (например, электромагнитный сигнал, сигнал звуковой волны или оптический сигнал) и в различных проводных подходах (например, через Ethernet или кабель волоконной оптики) и/или беспроводных подходах (например, беспроводная локальная сеть (WLAN), такая как WiFi, персональная сеть (PAN), такая как Bluetooth, либо сеть сотовой или радиосвязи), и который кодирует набор считываемых компьютером команд, которые при исполнении процессором устройства предписывают устройству реализовывать методики, представленные в данном документе.
[0032] Примерный считываемый компьютером носитель, который может быть разработан по таким принципам, изображен на фиг.5, причем вариант 500 реализации содержит считываемый компьютером носитель 502 (например, CD-R, DVD-R либо диск жесткого диска), на котором закодированы считываемые компьютером данные 504. Эти считываемые компьютером данные 504, в свою очередь, содержат набор компьютерных команд 506, сконфигурированных с возможностью функционирования согласно принципам действия, изложенным в данном документе. В одном таком варианте осуществления исполняемые процессором команды 506 могут быть сконфигурированы с возможностью реализации способа 508 выполнения запросов приложений-клиентов 108, относящихся к локальным событиям 105, такого как примерный способ 300 с фиг.3. В другом таком варианте осуществления исполняемые процессором команды 506 могут быть сконфигурированы с возможностью реализации системы для выполнения запросов приложений-клиентов 108, относящихся к локальным событиям 206, такой как примерная система 406 с фиг.4. Некоторые варианты осуществления данного считываемого компьютером носителя могут содержать считываемый компьютером носитель хранения информации (например, жесткий диск, оптический диск либо устройство с флэш-памятью), который сконфигурирован с возможностью хранения исполняемых процессором команд, сконфигурированных по данному принципу. Специалистами в уровне техники может быть разработано много таких считываемых компьютером носителей, которые сконфигурированы с возможностью функционирования в соответствии с методиками, представленными в данном документе.
[0033] D. Разновидности
[0034] Методики, обсужденные в данном документе, могут быть разработаны по-разному во многих аспектах, и некоторые разновидности могут представлять дополнительные преимущества и/или уменьшить недостатки относительно других разновидностей этих и других методик. Кроме того, некоторые разновидности могут реализовываться в сочетаниях, и некоторые сочетания могут демонстрировать дополнительные преимущества и/или уменьшенные недостатки посредством синергетического взаимодействия. Разновидности могут быть включены в различные варианты осуществления (например, примерный способ 300 с фиг.3 и примерная система 406 с фиг.4), чтобы предоставить отдельные и/или синергетические преимущества при помощи таких вариантов осуществления.
[0035] D1. Подходы
[0036] Первый аспект, который может изменяться среди вариантов осуществления этих методик, относится к подходам, в которых такие методики могут быть использованы.
[0037] В качестве первой разновидности данного первого аспекта методики, представленные в данном документе, могут использоваться со многими типами устройств 402, такими как серверы, серверные фермы, рабочие станции, портативные компьютеры, планшеты, мобильные телефоны, игровые приставки и сетевые устройства. Такие устройства 402 могут также предоставлять множество вычислительных компонентов, таких как устройства проводной или беспроводной связи; устройства ввода от человека, такие как клавиатуры, «мышки», сенсорные панели, сенсорные устройства отображения, микрофоны и компоненты основанного на жестах ввода; устройства автоматизированного ввода, такие как камеры неподвижной съемки или съемки движения, устройства с услугами (GPS) глобального позиционирования и другие датчики; устройства вывода, такие как устройства отображения и громкоговорители; и устройства связи, такие как компоненты проводной и/или беспроводной сети.
[0038] В качестве второй разновидности данного первого аспекта методики, представленные в данном документе, могут использоваться с различными типами приложений-серверов 104, таких как веб-серверы, файловые серверы, серверы приложений, мультимедийные серверы, координационные серверы однорангового совместного использования, серверы баз данных, почтовые серверы, серверы наблюдения за физическими параметрами и серверы автоматизации диспетчерского управления и сбора данных (SCADA).
[0039] В качестве третьей разновидности данного первого аспекта методики, представленные в данном документе, могут использоваться для обслуживания множества типов приложений-клиентов 108, таких как веб-браузеры, приложения совместного использования файлов, приложения визуализации мультимедиа и управляемые данными приложения-клиенты. Кроме того, приложения-клиенты 108 могут исполняться в различных контекстах, таких как собственное исполнение на устройстве 402; управляемое исполнение, которому способствует одна или более управляющих сред выполнения; виртуальное исполнение внутри виртуальной среды, такой как веб-приложение, исполняющееся внутри веб-браузера; и изолированное исполнение внутри изолированной конструкции. Такие приложения-клиенты 108 могут также приниматься устройством 402 посредством различных методик, например, приложения-клиенты 108, поставляемые с устройством 402; приложения-клиенты, извлекаемые из различного обслуживания, такого как сервер приложений, предоставляемый сетью; встроенное в веб-страницу содержимое; программа управления аппаратным обеспечением или программным обеспечением, предоставляемая компонентом устройства 402; или приложение-клиент 108, предоставляемое приложением-сервером 104. Эти и другие подходы могут быть совместимыми с и могут преимущественно использовать методики, представленные в данном документе.
[0040] D2. Типы локальных событий и серверных сценариев
[0041] Второй аспект, который может изменяться среди вариантов осуществления методик, представленных в данном документе, вовлекает типы локальных событий 206, за которыми может наблюдать приложение-сервер 104, и типы серверных сценариев 202, которые приложение-сервер 104 может исполнять от имени одного или более приложений-клиентов 108 после появления таких локальных событий 206.
[0042] В качестве первой разновидности данного второго аспекта методики, представленные в данном документе, могут принадлежать к наблюдению за многими типами локальных событий 206 на устройстве 402, такими как события локального ввода, вовлекающие прием локального ввода компонентом ввода устройства 402; событие локального пользователя, указывающее обнаружение присутствия, личности или взаимодействия, принимаемых от локального пользователя компонентом обнаружителя устройства; событие локальной обработки, указывающее завершение случая локальной обработки данных устройством; или запрос 204 подписки на событие, направляемый приложению-серверу 104 приложением-клиентом 108. В качестве одного такого примера, локальное событие 206 может содержать событие локального приложения, возникающее в течение исполнения третьего приложения на устройстве 402 (отличающегося от приложения-сервера 104 и приложения-клиента 108), такого как программа управления аппаратным обеспечением, компонент операционной системы, другое приложение-сервер 104 либо другое приложение-клиент 108. Поэтому приложение-сервер 104 может наблюдать за исполнением третьего приложения на устройстве 402 для обнаружения появления события локального приложения (например, запуск третьего приложения; приостановка, завершение или окончание третьего приложения; или логическое исключение, возникающее внутри третьего приложения), и может исполнять один или более серверных сценариев 202, связанных с событием локального приложения. Кроме того, третье приложение может задавать один или более особых для приложения событий, которые присущи третьему приложению, и приложение-сервер 104 может связывать один или более серверных сценариев 202 с особыми для приложения событиями для исполнения от имени другого приложения-клиента 108.
[0043] В качестве второй разновидности данного второго аспекта серверные сценарии 202 могут задавать много типов обработки, относящейся к локальному событию 206, такой как сообщение локального события 206 приложению-клиенту 108, регистрирование появления локального события 206 либо применение дополнительной логики в течение обработки локального события 206. Дополнительно, серверные сценарии 202 могут приниматься от многих источников; например, серверный сценарий 202 может содержаться с приложением-сервером 104, может быть предоставлен пользователем 110, может предоставляться с и/или автоматически генерироваться устройством 402, либо может приниматься от приложения-клиента 108 или внешнего источника. Кроме того, приложение-сервер 104 может быть сконфигурировано с возможностью уведомления приложения-клиента 108 относительно завершения серверного сценария 202. Например, запрос 204 подписки на событие, предоставляемый приложением-клиентом 108, может задавать обратный вызов приложения, который следует задействовать после обнаружения локального события 206 и/или после завершения исполнения серверного(ых) сценария(ев) 202, связанного с локальным событием 206.
[0044] В качестве третьей разновидности данного второго аспекта методики, представленные в данном документе, могут вовлекать исполнение многих типов серверных сценариев 202. В качестве первого примера данной третьей разновидности такие серверные сценарии 202 могут быть разработаны с использованием множества технологий, включающих в себя JavaScript на стороне сервера, который задействует модуль Node.js и должен быть исполнен локальным веб-сервером.
[0045] В качестве второго примера данной третьей разновидности серверный сценарий 202 может вовлекать запрос блокирования, который может прерывать функционирование процесса устройства 402. Например, серверный сценарий 202 может вовлекать сложную логику, которая вовлекает длительное вычисление, либо может вовлекать доступ к данным или ресурсам, которые в настоящее время исключительно используются другим процессом. Такие запросы блокирования могут не поддерживаться в приложении-клиенте 108 (например, веб-приложение, которое посылает запрос блокирования, может быть приостановлено временно или на неопределенное время, таким образом прерывая пользовательский интерфейс и/или веб-браузер, содержащий веб-приложение, и/или может превысить пороговую величину времени ожидания обработки, что приводит в результате к завершению веб-приложения). Вместо этого приложение-клиент 108 может поручить такие запросы блокирования приложению-серверу 104, при этом серверный сценарий 202 задает запрос блокирования и/или логику, которую следует исполнить после запроса блокирования. Приложение-сервер 104, исполняющееся в фоновом режиме, может устойчиво исполнять такие запросы блокирования в качестве блокируемого потока без прерывания какого-либо приоритетного процесса устройства 402, и/или может приемлемым образом продолжать обрабатывать запрос блокирования (например, ожидая завершения продолжительного процесса или доступности ресурсов) более долгое время.
[0046] В качестве третьего примера данной третьей разновидности серверный сценарий 202 может задавать обратный вызов серверного сценария, который следует задействовать после достижения завершения асинхронного процесса. Обратный вызов серверного сценария может быть задан серверным сценарием 202, приложением-сервером 104, пользователем 110 и/или приложением-клиентом 108. В качестве одного такого примера, запрос подписки приложения-клиента 108 может быть связан с событием пользовательского интерфейса на клиенте (например, приложение-клиент 108 может ожидать некоторой формы ввода от пользователя 110), и приложение-клиент 108 может задавать обратный вызов приложения, который следует задействовать после обнаружения ввода. После приема запроса 204 подписки приложение-сервер 108 может сконфигурировать или сгенерировать серверный сценарий 202 для задействования обратного вызова приложения приложения-клиента 108 и может связать серверный сценарий 202 с локальным событием 206, вовлекающим обнаружения пользовательского ввода. Устройство 402 может продолжать исполнение приложения-клиента 108, включающее в себя событие пользовательского интерфейса на клиенте, представленное там, таким образом предоставляя возможность уведомления приложения-клиента 108 об обнаружении события пользовательского ввода без необходимости наблюдения (например, через опрашивание) за компонентами ввода относительно такого обнаружения. Эти и другие типы локальных событий 206 и/или серверных сценариев 202 могут быть вовлечены в архитектуру клиент-сервер и методики, представленные в данном документе.
[0047] D3. Исполнение и подписка на серверный сценарий
[0048] Третий аспект, который может изменяться среди вариантов осуществления этих методик, вовлекает принцип, посредством которого приложение-сервер 108 принимает запросы 204 подписки от соответствующих приложений-клиентов 108 и/или исполняет серверный сценарий(и) 202, связанный с локальным событием 206, от имени одного или более приложений-клиентов 108.
[0049] В качестве первой разновидности данного третьего аспекта приложение-сервер 104 может содействовать подписке приложений-клиентов 108 на локальные события 206 посредством предоставления информации о доступных локальных событиях 206, на которые приложения-клиенты 108 могут подписываться. Например, после приема от приложения-клиента 108 запроса на идентификацию набора локальных событий 206 с возможностью подписки, приложение-сервер 104 может перечислить локальные события 206, на которые может подписаться приложение-клиент 108. Альтернативно, приложение-сервер 104 может просто поддерживать каталог локальных событий 206 с возможностью подписки, которые могут запрашиваться приложениями-клиентами 108.
[0050] В качестве второй разновидности данного третьего аспекта локальное приложение-сервер 104 может идентифицировать локальные события 206 с возможностью подписки разными способами. В качестве одного такого примера, соответствующие локальные события 206 могут быть связаны с адресом локального события, например адресом гипертекстового транспортного протокола (HTTP), посредством которого приложения-клиенты 108 могут запрашивать ресурсы у локального приложения-сервера 104. После приема запроса клиента, задающего конкретный адрес, локальное приложение-сервер 104 может определить, является ли адрес адресом локального события, который связан с запросом подписки для локального события 206, и если это так, может обработать запрос клиента в качестве запроса 204 подписки на событие, инициируемого локальным приложением-клиентом 108. В качестве дополнительного такого примера, соответствующие компоненты устройства 402 могут быть идентифицированы посредством адреса локального события, включающего в себя имя компонента конкретного компонента, и локальные приложения-клиенты 108 могут подписываться на локальные события 206, вовлекающие такие компоненты, посредством инициирования запроса клиента, задающего адрес локального события, включающий в себя имя компонента конкретного компонента.
[0051] На фиг.6 представлена иллюстрация примерного подхода 600, показывающего несколько из разновидностей методик, представленных в данном документе. В данном примерном подходе 600 устройство 402 содержит набор компонентов, которые могут генерировать локальные события 206, на одно или более из которых локальные приложения-клиенты 108 могут подписываться, такие как компонент 602 с мышкой, задействуемый пользователем 110 для генерирования ввода указателя; компонент 604 с камерой, задействуемый пользователем 110 для захвата неподвижных изображений или изображений движения; и компонент 606 с процессором, сконфигурированный с возможностью реализации специализированных типов обработки (например, графический процессор с трассировкой лучей). Устройство 402 может использовать локальное приложение-сервер 104 для выполнения таких запросов 204 подписки на событие посредством связывания соответствующих компонентов с адресом 612 компонента. Приложение-клиент 108 может отправить локальному приложению-серверу 104 запрос 608 на перечисление событий (например, запрос для локального приложения-сервера 104 на перечисление типов локальных событий 206, на которые локальное приложение-клиент 108 может подписаться, включающих в себя компоненты, которые доступны локальному приложению-клиенту 108), и локальное приложение-сервер 104 может ответить перечислением 610 событий с возможностью подписки, идентифицирующим, для соответствующих компонентов, адрес 612 компонента, который локальное приложение-клиент 108 может задавать для подписки на локальные события 206, генерируемые компонентом. Если локальное приложение-клиент 108 отправляет приложению-серверу 104 запрос 204 подписки на событие, задающий адрес 614 компонента некоторого компонента, то тогда локальное приложение-сервер 104 может связать локальное приложение 108 с локальными событиями 206, генерируемыми компонентом, и после обнаружения такого локального события 206 может исполнить серверный сценарий 202, связанный с и относящийся к локальному событию 206, сгенерированному компонентом устройства 402. По такому принципу локальное приложение-сервер 104 может предоставлять возможность и добиваться взаимодействия локальных приложений-клиентов 108 с компонентами устройства 402.
[0052] В качестве третьей разновидности данного третьего аспекта в дополнение к предоставлению локального приложения-сервера 104, предоставляющего сервисы подписок на локальные события одному или более локальным приложениям-клиентам 108, устройство 402 может также включать в себя другие приложения, исполняющиеся на других устройствах 402 (например, расширение модели локального обслуживания, предоставленной в данном документе, до включения в нее также традиционных архитектур клиент-сервер для множества устройств). В качестве первого такого примера, устройство 402 может позволить локальным приложениям-клиентам 108 адресовать запросы подписки либо локальному приложению-серверу 104, либо удаленному приложению-серверу, исполняющемуся на удаленном устройстве. После определения того, что адресат запроса 204 подписки на событие локального приложения-клиента 108 является локальным приложением-сервером 104, устройство 402 может представить запрос 204 подписки на событие локальному приложению-серверу 104; а после определения того, что адресат запроса 204 подписки на событие содержит удаленное приложение-сервер удаленного устройства, устройство 402 может переслать запрос 204 подписки удаленному устройству. Альтернативно или дополнительно, в дополнение к приему и обслуживанию запросов 204 подписки на события, предоставляемых локальными приложениями-клиентами 108, локальное приложение-сервер 104 может принимать запросы 204 подписки на события, принимаемые от удаленных приложений-клиентов, исполняющихся на втором устройстве, и может выполнять такие запросы 204 подписки на события посредством, после обнаружения локального события 206, на которое подписано удаленное приложение, исполнения одного или более серверного сценария(ев) 202, связанного с и относящегося к локальному событию 206, от имени удаленного приложения-клиента, исполняющегося на втором устройстве. В качестве одного такого примера, это может быть очень преимущественным для предоставления локальных приложений-серверов 104 на каждом из набора устройств, взаимодействующих в качестве ячейки устройств, где каждое локальное приложение-сервер 104 сконфигурировано с возможностью обслуживания запросов 204 подписки на события на локальные события 206 от имени локальных приложений-клиентов 108, исполняющихся локально на том же самом устройстве 402, а также удаленных приложений-клиентов, исполняющихся на других устройствах 402 ячейки устройств.
[0053] На фиг.7 представлена иллюстрация примерного подхода 700, показывающего взаимодействие нескольких устройств 704, содержащихся в ячейке 702 устройств, согласно методикам, представленным в данном документе. В данном примерном подходе 700 соответствующие устройства 704 ячейки 702 устройств могут осуществлять связь (например, через проводную или беспроводную сеть для совместного использования информации о локальных событиях 206, возникающих внутри каждого устройства 704. С этой целью каждое устройство 704 может содержать приложение-сервер 104, сконфигурированное с возможностью приема и выполнения запросов 204 подписки на события, предоставляемых не только локальными приложениями-клиентами 108, исполняющимися на том же самом устройстве 704, но также и удаленными приложениями-клиентами, исполняющимися на другом устройстве 704 ячейки 702 устройств. Дополнительно, после приема первым устройством 704 запроса 204 подписки на событие от локального приложения-клиента 108, задающего в качестве адресата запроса удаленное приложение-сервер, исполняющееся на втором устройстве 704 ячейки 702 устройств, первое устройство 704 может переслать запрос 204 подписки на событие второму устройству. После обнаружения появления локального события 206 приложение-сервер 104 может идентифицировать локальные приложения-клиенты 108 и удаленные приложения-клиенты, исполняющиеся на других устройствах 704, и может инициировать исполнение серверного сценария 208 из одного или более серверных сценариев 202, связанных с локальным событием 206, от имени каждого такого подписанного приложения-клиента 108. Поэтому данная разновидность расширяет модель обслуживания локальных событий, представленную в данном документе, включением в нее других приложений-клиентов 106, исполняющихся на других устройствах 704 в соответствии с методиками, представленными в данном документе.
[0054] В качестве четвертой разновидности данного третьего аспекта устройство 402 может регулировать исполнение локального приложения-сервера 104 и/или локального приложения-клиента (локальных приложений-клиентов) 108 по принципу, который сберегает ресурсы устройства 402, например, функционирование мобильного устройства с батареей ограниченной емкости и/или в пределах ограничений с низкой мощностью в ваттах, либо процессор, который выдает более высокую производительность устройства, если сберегается обработка и/или память.
[0055] В качестве первого примера данной четвертой разновидности локальное приложение-сервер 108 может исполняться только тогда, когда запросы 204 подписки на события от одного или более приложений-клиентов 108 находятся на рассмотрении. Например, после приема запроса 204 подписки на событие устройство 402 может определить, исполняется ли на данный момент локальное приложение-сервер 104, и если нет, то может задействовать исполнение локального приложения-сервера 104, чтобы выполнить запросы 204 подписки на события. Альтернативно или дополнительно, после обнаружения отсутствия запросов подписки на события на локальные события 206, которые локальное приложение-сервер 104 способно обнаруживать, устройство 402 может временно или на неопределенное время закончить исполнение локального приложения-сервера 104. По такому принципу устройство 402 может задействовать локальное приложение-сервер 104 оперативным образом, и может, в противном случае, сберечь ресурсы устройства 402, когда локальное приложение-сервер 104 не находится в использовании.
[0056] В качестве второго примера данной четвертой разновидности соответствующие компоненты обработки устройства 402 могут использоваться только тогда, когда обнаружены локальные события 206. Например, если локальное событие 206 содержит обработку пользовательского ввода, принятого через компонент ввода, устройство 402 может отказать в предоставлении мощности компоненту обработки, когда такие локальные события 206 не возникают. Кроме того, такая обработка может зависеть от подписки одного или более приложений-клиентов 108 на локальные события 206, связанные с компонентом обработки. Например, если устройство 402 содержит компонент обработки, сконфигурированный с возможностью интерпретации сенсорного ввода, принимаемого через компонент с сенсорным устройством отображения, то устройство 402 может уменьшить или исключить предоставление мощности компоненту обработки, когда компонент с сенсорным устройством отображения не принимает сенсорный ввод, и, в качестве дополнительной возможности, дополнительно зависит от того, сконфигурированы ли в настоящее время какие-либо приложения-клиенты 108 с возможностью приема и обработки сенсорного ввода через компонент с сенсорным устройством отображения. Такие методики могут содействовать сбережению ресурсов устройства (таких как емкость мощности, процессора, памяти и пропускная способность осуществления связи) в соответствии с методиками, представленными в данном документе. Эти и другие разновидности подписки и исполнения серверных сценариев 202 могут использоваться приложением-сервером 104 от имени одного или более приложений-клиентов 108 в ответ на и связываться с обнаружением различных локальных событий 206 в соответствии с методиками, представленными в данном документе.
[0057] E. Вычислительная среда
[0058] Фиг.8 и следующее обсуждение предоставляют краткое, общее описание подходящей вычислительной среды для реализации вариантов осуществления одного или более из положений, изложенных в данном документе. Операционная среда с фиг.8 является только одним примером подходящей операционной среды, и не подразумевается, что она предлагает какое-либо ограничение по отношению к объему использования или функциональности операционной среды. Примерные вычислительные устройства включают в себя, но не ограничиваются ими, персональные компьютеры, компьютеры с серверами, карманные или портативные устройства, мобильные устройства (такие как мобильные телефоны, персональные цифровые секретари (PDA), медиапроигрыватели и т.п.), многопроцессорные системы, настраиваемую пользователем электронику, мини-компьютеры, универсальные компьютеры, распределенные вычислительные среды, которые включают в себя любые из вышеупомянутых систем или устройств и т.п.
[0059] Хотя и не обязательно, варианты осуществления описаны в общем контексте «считываемых компьютером команд», исполняемых одним или более вычислительными устройствами. Считываемые компьютером команды могут распространяться через считываемые компьютером носители (обсуждаемые ниже). Считываемые компьютером команды могут быть реализованы в качестве программных модулей, таких как функции, объекты, интерфейсы прикладного программирования (API), структуры данных и т.п., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Как правило, функциональность считываемых компьютером команд может быть объединена или распределена по необходимости в различных средах.
[0060] Фиг.8 изображает пример системы 800, содержащей вычислительное устройство 802, сконфигурированное с возможностью реализации одного или более вариантов осуществления, предложенных в данном документе. В одной конфигурации вычислительное устройство 802 включает в себя, по меньшей мере, один блок 806 обработки и запоминающее устройство 808. В зависимости от точной конфигурации и типа вычислительного устройства запоминающее устройство 808 может быть с кратковременным хранением (такое как RAM, например), с долговременным хранением (такое как ROM, флэш-память и т.д., например) или некоторое их сочетание. Данная конфигурация изображена на фиг.8 пунктирной линией 804.
[0061] В других вариантах осуществления устройство 802 может включать в себя дополнительные признаки и/или функциональность. Например, устройство 802 может также включать в себя дополнительное хранилище (например, съемное и/или несъемное), включающее в себя, но не ограничивающееся этим, магнитное хранилище, оптическое хранилище и т.п. Такое дополнительное хранилище изображено на фиг.8 посредством хранилища 810. В одном варианте осуществления считываемые компьютером команды для реализации одного или более вариантов осуществления, предложенных в данном документе, могут находиться в хранилище 810. Хранилище 810 может также хранить другие считываемые компьютером команды для реализации операционной системы, прикладной программы и т.п. Считываемые компьютером команды могут загружаться в запоминающее устройство 808 для исполнения блоком 806 обработки, например.
[0062] Термин «машиночитаемый носитель», используемый в данном документе, охватывает компьютерные носители данных. Компьютерные носители данных включают в себя съемные и несъемные носители кратковременного и долговременного хранения, реализованные любым способом или технологией хранения информации, такой как считываемые компьютером команды или другие данные. Запоминающее устройство 808 и хранилище 810 являются примерами компьютерного носителя данных. Компьютерные носители данных включают в себя, но не ограничиваются этим, технологию RAM, ROM, EEPROM, флэш-память или другую технологию запоминающего устройства, CD-ROM, цифровые универсальные диски (DVD) или другие оптические хранилища, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другие устройства магнитного хранения, или какой-либо другой носитель, который может использоваться для хранения необходимой информации и к которому может осуществлять доступ устройство 802. Любой такой компьютерный носитель данных может быть частью устройства 802.
[0063] Устройство 802 может также включать в себя соединение(я) 816 для связи, которое позволяет устройству 802 осуществлять связь с другими устройствами. Соединение(я) 816 для связи может включать в себя, но не ограничивается этим, модем, плату сетевого интерфейса (NIC), встроенный блок сопряжения с сетью, радиочастотный передатчик/приемник, инфракрасный порт, соединение USB или другие блоки сопряжения для соединения вычислительного устройства 802 с другими вычислительными устройствами. Соединение(я) 816 для связи может включать в себя проводное соединение или беспроводное соединение. Соединение(я) 816 для связи может передавать и/или принимать носитель связи.
[0064] Термин «машиночитаемый носитель» также охватывает среды связи. Среды связи обычно воплощают считываемые компьютером команды или другие данные в «модулированном сигнале данных», таком как несущая волна или другой механизм переноса, и включают в себя любые среды доставки информации. Термин «модулированный сигнал данных» может включать в себя сигнал, у которого одна или более из его характеристик устанавливаются или изменяются таким образом, чтобы кодировать информацию в сигнале.
[0065] Устройство 802 может включать в себя устройство(а) 814 ввода, такое как клавиатура, мышь, перо, устройство ввода голоса, устройство сенсорного ввода, инфракрасные камеры, устройства ввода видеосигнала и/или любое другое устройство ввода. Устройство(а) 812 вывода, такое как один или более устройств отображения, громкоговорителей, печатающих устройств и/или любых других устройств вывода, может также быть включено в состав устройства 802. Устройство(а) 814 ввода и устройство(а) 812 вывода могут быть соединены с устройством 802 через проводное соединение, беспроводное соединение или любое их сочетание. В одном варианте осуществления устройство ввода или устройство вывода от другого вычислительного устройства могут использоваться в качестве устройства (устройств) 814 ввода или устройства (устройств) 812 вывода для вычислительного устройства 802.
[0066] Компоненты вычислительного устройства 802 могут быть соединены посредством различных межсоединений, таких как шина. Такие межсоединения могут включать в себя межсоединение периферийных компонентов (PCI), такое как PCI Express, универсальную последовательную шину (USB), Firewire (IEEE 1394), систему оптических шин и т.п. В другом варианте осуществления компоненты вычислительного устройства 802 могут быть соединены посредством сети. Например, запоминающее устройство 808 может состоять из множества блоков физической памяти, расположенных в различных физических местоположениях, соединенных посредством сети.
[0067] Специалистам будет понятно, что запоминающие устройства, используемые для хранения считываемых компьютером команд, могут быть распределены по сети. Например, вычислительное устройство 820, доступное через сеть 818, может хранить считываемые компьютером команды для реализации одного или более вариантов осуществления, предложенных в данном документе. Вычислительное устройство 802 может осуществлять доступ к вычислительному устройству 820 и загружать часть или все из считываемых компьютером команд для исполнения. Альтернативно, вычислительное устройство 802 может загружать порции считываемых компьютером команд, по необходимости, либо некоторые команды могут исполняться в вычислительном устройстве 802, а некоторые в вычислительном устройстве 820.
[0068] F. Использование терминов
[0069] Несмотря на то что изобретение описано на языке, особом для структурных признаков и/или методологических действий, следует понимать, что объем изобретения, определяемый прилагаемой формулой изобретения, не обязательно ограничивается особыми признаками или действиями, описанными выше. Скорее особые признаки и действия, описанные выше, раскрываются в качестве примерных форм реализации пунктов формулы изобретения.
[0070] Подразумевается, что в целом используемые в данной заявке термины «компонент», «модуль», «система», «блок сопряжения/интерфейс» и т.п. ссылаются на относящийся к компьютеру объект, либо аппаратное обеспечение, сочетание аппаратного и программного обеспечения, программное обеспечение, либо программное обеспечение при исполнении. Например, компонент может быть, но не ограничивается этим, процессом, запущенным на процессоре, процессором, объектом, исполняемой программой, потоком исполнения, программой и/или компьютером. Посредством иллюстрации как приложение, запущенное на контроллере, так и контроллер могут быть компонентом. Один или более компонентов могут находиться внутри процесса и/или потока исполнения, а компонент может быть расположен на одном компьютере и/или распределен между двумя или более компьютерами.
[0071] Кроме того, заявляемое изобретение может быть реализовано в качестве способа, устройства или промышленного изделия с использованием стандартных методик программирования и/или конструирования для создания программного обеспечения, встроенного микропрограммного обеспечения, аппаратного обеспечения или любого их сочетания, чтобы управлять компьютером для реализации раскрываемого объекта изобретения. Подразумевается, что термин «промышленное изделие», используемый в данном документе, охватывает компьютерную программу, доступную из любого считываемого компьютером устройства, носителя или среды. Конечно, специалистам в уровне техники будет понятным, что с данной конфигурацией можно сделать множество изменений без отступления от объема или сущности заявляемого изобретения.
[0072] В данном документе предложены различные действия вариантов осуществления. В одном варианте осуществления одно или более из описанных действий может являться считываемыми компьютером командами, сохраненными на одном или более считываемых компьютером носителях, которые при исполнении вычислительным устройством будут предписывать вычислительному устройству реализовывать описанные действия. Не стоит полагать, что порядок, в котором описываются некоторые или все действия, подразумевает, что эти действия обязательно зависят от данного порядка. Специалисту будет понятным, что альтернативное упорядочивание также обеспечивает технический результат данного описания. Дополнительно, следует понимать, что не всем действиям обязательно присутствовать в каждом варианте осуществления, предложенном в данном документе.
[0073] Кроме того, использование в данном документе термина «примерный» означает, что служит в качестве примера, варианта или иллюстрации. Любой аспект или конструкция, описанные в данном документе в качестве «примерных», не должны обязательно рассматриваться в качестве преимущественных по отношению к другим аспектам или конструкциям. Скорее, использование термина «примерный» подразумевает представление идей конкретным образом. Подразумевается, что используемый в данной заявке термин «или» означает включающее «или», а не исключающее «или». То есть, пока не указано иным образом, или очевидно из контекста, подразумевается, что «X использует A или B» означает любую из естественных включающих перестановок. То есть, если X использует A; X использует B; или X использует и A, и B, то «X использует A или B» удовлетворяет любому из вышеперечисленных примеров. Кроме того, в целом может считаться, что используемые в данной заявке и прилагаемой формуле изобретения признаки в единственном числе означают «один или более», пока не указана иным образом или очевидна из контекста адресация к форме единственного числа.
[0074] Также, несмотря на то что раскрытие изображено и описано по отношению к одному или более вариантам реализации, на основе прочтения и понимания данного описания и сопроводительных чертежей специалисты в уровне техники смогут разработать эквивалентные изменения и модификации. Данное раскрытие включает в себя все такие модификации и изменения и ограничивается только объемом следующей формулы изобретения. В частности, касаемо различных функций, реализуемых вышеупомянутыми описанными компонентами (например, элементами, ресурсами и т.д.), подразумевается, что термины, используемые для описания таких компонентов, соответствуют, пока не указано иным образом, любому компоненту, который реализует указанную функцию описанного компонента (например, который является функционально эквивалентным), даже не являясь структурно эквивалентным раскрытой структуре, которая реализует функцию в изображенных в данном документе примерных вариантах реализации раскрытия. Кроме того, в то время как конкретный признак раскрытия может раскрываться по отношению только к одному из нескольких вариантов реализации, такой признак может объединяться с одним или более другими признаками других вариантов реализации по необходимости и для преимуществ в любом заданном или конкретном применении. Кроме того, до той степени, в которой термины «включает в себя», «имеет», «обладает», «с» или их варианты используются либо в подробном описании, либо в формуле изобретения, подразумевается, что такие термины являются включающими по принципу подобно термину «содержит».
1. Способ выполнения запросов на устройстве, имеющем процессор, исполняющий по меньшей мере одно локальное приложение-клиент, при этом способ содержит этап, на котором исполняют на устройстве команды, сконфигурированные:
генерировать локальный сервер, связывающий по меньшей мере один серверный сценарий с по меньшей мере одним локальным событием;
по приему от локального приложения-клиента запроса подписки, задающего выбранное локальное событие, связывать выбранное локальное событие с локальным приложением-клиентом;
по обнаружению локального события, связанного с по меньшей мере одним серверным сценарием и локальным приложением-клиентом, исполнять внутри локального сервера серверные сценарии, связанные с и относящиеся к этому локальному событию, от имени локального приложения-клиента;
по приему запроса подписки, задающего адресата, от локального приложения-клиента:
определять, содержит ли адресат локальный сервер на упомянутом устройстве,
по определению того, что адресат содержит локальный сервер на упомянутом устройстве, представлять запрос подписки, задающий адресата, в локальный сервер, и
по определению того, что адресат содержит удаленный сервер вне упомянутого устройства, отправлять запрос подписки, задающий адресата, в удаленный сервер.
2. Способ по п. 1, в котором:
другое приложение задает зависящее от приложения событие; и
упомянутые команды дополнительно сконфигурированы, после приема от локального приложения-клиента запроса подписки, задающего зависящее от приложения событие этого другого приложения, связывать зависящее от приложения событие с данным другим приложением.
3. Способ по п. 1, в котором:
локальный сервер отвечает на запросы подписки, соответственно задающие адреса;
соответственные локальные события связаны с адресом локального события; и
прием запроса подписки от клиента содержит прием от приложения-клиента запроса подписки, задающего адрес локального события, связанный с локальным событием.
4. Способ по п. 3, в котором:
соответственные локальные события связаны с по меньшей мере одним компонентом упомянутого устройства, идентифицируемым именем компонента; и
адрес локального события некоторого локального события включает в себя имя компонента для компонента, связанного с локальным событием.
5. Способ по п. 1, в котором упомянутые команды дополнительно сконфигурированы:
перед обнаружением локального события уменьшать мощность, подаваемую на по меньшей мере один компонент обработки из состава упомянутого устройства; и
после обнаружения локального события восстанавливать мощность, подаваемую на этот по меньшей мере один компонент обработки.
6. Способ по п. 5, в котором восстановление мощности, подаваемой на по меньшей мере один компонент обработки, содержит:
определение, по обнаружению локального события, связан ли по меньшей мере один запрос подписки с локальным событием; и
восстановление мощности, подаваемой на упомянутый по меньшей мере один компонент обработки, только по выявлении по меньшей мере одного запроса подписки, связанного с локальным событием.
7. Машиночитаемый носитель, содержащий команды, которыми при их исполнении процессором устройства выполняются запросы, принимаемые от локальных приложений-клиентов, посредством того, что:
генерируют локальный сервер, связывающий по меньшей мере один серверный сценарий с по меньшей мере одним локальным событием;
по приему от локального приложения-клиента запроса подписки, задающего выбранное локальное событие, связывают выбранное локальное событие с локальным приложением-клиентом;
по обнаружению локального события, связанного с по меньшей мере одним серверным сценарием и локальным приложением-клиентом, исполняют внутри локального сервера серверные сценарии, связанные с и относящиеся к этому локальному событию, от имени локального приложения-клиента;
по приему запроса подписки, задающего адресата, от локального приложения-клиента:
определяют, содержит ли адресат локальный сервер на упомянутом устройстве,
представляют запрос подписки, задающий адресата, в локальный сервер по определению того, что адресат содержит локальный сервер на упомянутом устройстве, и
отправляют запрос подписки, задающий адресата, в удаленный сервер по определению того, что адресат содержит удаленный сервер вне упомянутого устройства.
8. Машиночитаемый носитель по п. 7, при этом:
локальный сервер содержит веб-сервер, включающий в себя модуль Node.js; и
по меньшей мере один серверный сценарий содержит JavaScript, задействующий модуль Node.js веб-сервера от имени локального приложения-клиента.
9. Машиночитаемый носитель по п. 7, при этом локальное событие, выбираемое из набора локальных событий, содержит:
событие локального ввода, указывающее прием локального ввода компонентом ввода из состава упомянутого устройства;
событие локального пользователя, указывающее обнаружение локального пользователя компонентом обнаружения из состава упомянутого устройства;
событие локальной обработки, указывающее завершение случая локальной обработки данных упомянутым устройством; и
запрос клиента, направленный к локальному серверу приложением-клиентом.
10. Машиночитаемый носитель по п. 7, при этом:
локальное событие содержит событие локального приложения, возникающее в течение исполнения третьего приложения на упомянутом устройстве; и
обнаружение локального события содержит наблюдение за исполнением другого приложения для обнаружения события локального приложения.
11. Система для выполнения запросов на устройстве, имеющем процессор, исполняющий по меньшей мере одно локальное приложение-клиент, при этом система содержит:
компонент локального сервера, сконфигурированный связывать по меньшей мере один серверный сценарий с по меньшей мере одним локальным событием;
компонент привязки к локальному серверу, сконфигурированный:
по приему от локального приложения-клиента запроса подписки, задающего выбранное локальное событие, связывать выбранное локальное событие с локальным приложением-клиентом, и
по обнаружению локального события, связанного с по меньшей мере одним серверным сценарием и локальным приложением-клиентом, исполнять внутри локального сервера серверные сценарии, связанные с и относящиеся к этому локальному событию, от имени локального приложения-клиента; и
компонент, сконфигурированный:
принимать запрос подписки, задающий адресата, от локального приложения-клиента,
представлять запрос подписки, задающий адресата, в локальный сервер, когда определено, что адресат является компонентом локального сервера, и
отправлять запрос подписки, задающий адресата, в компонент удаленного сервера, являющийся удаленным по отношению к системе, когда определено, что адресат представляет собой компонент удаленного сервера.
12. Система по п. 11, в которой компонент привязки к локальному серверу дополнительно сконфигурирован, по приему от локального приложения-клиента запроса идентифицировать локальные события, на которые можно подписаться посредством локального приложения-клиента, перечислять локальные события, на которые можно подписаться посредством локального приложения-клиента.
13. Система по п. 11, в которой компонент привязки к локальному серверу дополнительно сконфигурирован:
по приему запроса подписки,
определять, исполняется ли локальный сервер, и
по определению того, что локальный сервер не исполняется, запускать исполнение локального сервера; и
по определению отсутствия запросов подписки в отношении локальных событий, обнаруженных локальным сервером, прекращать исполнение локального сервера.
14. Система по п. 11, в которой компонент привязки к локальному серверу дополнительно сконфигурирован, по достижению локальным сервером завершения серверного сценария, связанного с по меньшей мере одним локальным событием, уведомлять локальное приложение-клиент о завершении серверного сценария при выполнении запроса.
15. Система по п. 14, в которой серверный сценарий содержит по меньшей мере один запрос блокирования, при этом компонент привязки к локальному серверу дополнительно сконфигурирован исполнять серверный сценарий путем исполнения серверного сценария в блокируемом потоке внутри локального сервера.
16. Система по п. 15, в которой серверный сценарий инициирует запрос блокирования в качестве асинхронного процесса и обеспечивает обратный вызов серверного сценария, который должен задействоваться по достижению завершения асинхронного процесса, при этом компонент привязки к локальному серверу дополнительно сконфигурирован исполнять серверный сценарий посредством, по достижению завершения асинхронного процесса, задействования обратного вызова серверного сценария упомянутого серверного сценария.
17. Система по п. 14, в которой запрос подписки принимается от локального приложения-клиента включающим в себя обратный вызов приложения к локальному приложению-клиенту, который должен задействоваться при обнаружении локального события, при этом компонент привязки к локальному серверу дополнительно сконфигурирован уведомлять локальное приложение-клиент посредством задействования обратного вызова приложения, обеспечиваемого локальным приложением-клиентом.
18. Система по п. 17, в которой запрос подписки со стороны локального приложения-клиента связан с событием пользовательского интерфейса на клиенте, при этом компонент привязки к локальному серверу дополнительно сконфигурирован, после приема запроса подписки и до обнаружения локального события, связанного с запросом подписки, продолжать исполнение локального приложения-клиента, включающего событие пользовательского интерфейса на клиенте.
19. Способ выполнения запросов на устройстве, имеющем процессор, исполняющий по меньшей мере одно локальное приложение-клиент, при этом способ содержит этап, на котором исполняют на устройстве команды, сконфигурированные:
генерировать локальный сервер, связывающий по меньшей мере один серверный сценарий с по меньшей мере одним локальным событием;
по приему от локального приложения-клиента запроса подписки, задающего выбранное локальное событие, связывать выбранное локальное событие с локальным приложением-клиентом;
по обнаружению локального события, связанного с по меньшей мере одним серверным сценарием и локальным приложением-клиентом, исполнять внутри локального сервера серверные сценарии, связанные с и относящиеся к этому локальному событию, от имени локального приложения-клиента;
по приему запроса подписки от удаленного приложения-клиента, исполняющегося на втором устройстве, связывать выбранное локальное событие с удаленным приложением-клиентом; и
по обнаружению локального события, связанного с по меньшей мере одним серверным сценарием и удаленным приложением-клиентом, исполнять внутри локального сервера серверные сценарии, связанные с этим локальным событием, от имени удаленного приложения-клиента.
20. Система для выполнения запросов на устройстве, имеющем процессор, исполняющий по меньшей мере одно локальное приложение-клиент, при этом система содержит:
компонент локального сервера, сконфигурированный связывать по меньшей мере один серверный сценарий с по меньшей мере одним локальным событием;
компонент привязки к локальному серверу, сконфигурированный:
по приему от локального приложения-клиента запроса подписки, задающего выбранное локальное событие, связывать выбранное локальное событие с локальным приложением-клиентом, и
по обнаружению локального события, связанного с по меньшей мере одним серверным сценарием и локальным приложением-клиентом, исполнять внутри локального сервера серверные сценарии, связанные с и относящиеся к этому локальному событию, от имени локального приложения-клиента, при этом компонент привязки к локальному серверу дополнительно сконфигурирован:
по приему запроса подписки от удаленного приложения-клиента, исполняющегося на втором устройстве, связывать выбранное локальное событие с удаленным приложением-клиентом, и
по обнаружению локального события, связанного с по меньшей мере одним серверным сценарием и удаленным приложением-клиентом, исполнять внутри локального сервера серверные сценарии, связанные с этим локальным событием, от имени удаленного приложения-клиента.