ОБСЛУЖИВАНИЕ СОБЫТИЙ ДЛЯ ЛОКАЛЬНЫХ ПРИЛОЖЕНИЙ-КЛИЕНТОВ ПОСРЕДСТВОМ ЛОКАЛЬНОГО СЕРВЕРА
EVENT SERVICE FOR LOCAL CLIENT APPLICATIONS THROUGH LOCAL SERVER

УРОВЕНЬ ТЕХНИКИ ИЗОБРЕТЕНИЯ
[0001] В области вычислительной техники во многих подходах вовлекается архитектура клиент-сервер для предоставления возможности исполнения приложения на клиенте. В качестве первого примера, устройство с веб-сервером может предоставлять команды и/или содержимое, содержащее веб-приложение, во второе устройство для исполнения внутри веб-браузера. В качестве второго примера, хранилище приложений может предоставлять команды, содержащие развертываемое локальное приложение, которое может исполняться полностью на втором устройстве. В качестве третьего примера, сервер базы данных может предоставлять данные для содействия исполнению приложения на втором устройстве.
[0002] Ввиду этих и других подходов архитектура клиент-сервера привела к исполнению на каждом устройстве специализированных технологий. В некоторых случаях такая специализация приводит к прямо противоположной разработке ввиду различных обстоятельств сервера и клиента. Например, серверное устройство часто вовлекает код, специализированный для контекста сервера, такого как одновременное исполнение приложений от имени нескольких клиентов; выполнение запросов по реализуемому и масштабируемому принципу (например, исполнение высоко оптимизированного кода для ускорения выполнения запросов и уменьшение или устранение привязанности к пользовательскому интерфейсу); уменьшение взаимодействий с сохранением состояний, когда сервер хранит данные, связанные с первой транзакцией, для того чтобы выполнить вторую транзакцию; и проверка допустимости и изоляция контекстов выполнения запросов, принятых от других клиентов, чтобы уменьшить уязвимость безопасности. Схожим образом клиентское устройство часто вовлекает код, специализированный для контекста клиента, такого как кодирование команд на платформенно-независимом языке, который не зависит от конкретной конфигурации устройства; конфигурирование команд для исполнения внутри веб-браузера; обеспечение устойчивого пользовательского интерфейса; и хранение информации в клиенте (например, в форме куки-файлов (cookies), сохраненных в кэш-памяти веб-браузера) для того, чтобы удерживать информацию от первой транзакции в поддержку второй транзакции. С этими и другими подходами специализация контекстов сервера и клиента привела к исполнению на этих различных устройствах очень разных типов команд.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] Данный раздел «Сущность изобретения» предоставлен для введения подборки идей в упрощенной форме, которые дополнительно описываются ниже в разделе Подробное описание. Не подразумевается, что данный раздел «Сущность изобретения» означает главные признаки или существенные признаки заявляемого изобретения, кроме того, не предусматривается использование данного раздела Сущность для ограничения объема заявляемого изобретения.
[0005] В данном документе представлены методики для применения конвергентных сред разработки сервера и клиента для использования на одном устройстве. В частности, такие методики могут позволять устройству реализовывать обработку, относящуюся к локальным событиям, от имени приложения-клиента, исполняющегося на устройстве, посредством локального сервера, выполненного на том же самом устройстве. Например, на устройстве может исполняться локальный сервер (такой как веб-сервер), сконфигурированный с возможностью наблюдения за локальными событиями устройства и приема запросов приложениями-клиентами на том же самом устройстве для подписки на одно или более локальных событий. Локальный сервер может также связывать один или более серверных (скриптов) сценариев, и после обнаружения возникновения локального события, на которое подписано приложение-клиент, локальный сервер может исполнить серверный сценарий(и), связанный с локальным событием, от имени локального устройства.
[0007] Для выполнения вышеуказанных и связанных с ними задач последующее описание и сопроводительные чертежи формулируют некоторые иллюстративные аспекты и варианты реализации. Они указывают всего лишь несколько из различных принципов, по которым один или более аспектов могут использоваться. Другие аспекты, преимущества и новые признаки раскрытия станут очевидными из последующего подробного описания при рассмотрении совместно с сопроводительными чертежами.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0008] Фиг.1 является иллюстрацией примерного подхода, изображающего архитектуру клиент-сервер для выполнения запросов приложений-клиентов, относящихся к событиям, возникающим на клиентском устройстве и серверном устройстве.
[0009] Фиг.2 является иллюстрацией примерного подхода, изображающего архитектуру клиент-сервер для выполнения запросов приложений-клиентов, относящихся к локальным событиям, в соответствии с методиками, представленными в данном документе.
[0010] Фиг.3 является иллюстрацией примерного способа конфигурирования устройства для выполнения запросов приложений-клиентов, относящихся к локальным событиям, в соответствии с методиками, представленными в данном документе.
[0011] Фиг.4 является блок-схемой компонентов, изображающей примерную систему для выполнения запросов приложений-клиентов, относящихся к локальным событиям, в соответствии с методиками, представленными в данном документе.
[0012] Фиг.5 является иллюстрацией примерного считываемого компьютером носителя, содержащего исполняемые процессором команды, сконфигурированные с возможностью воплощения одного или более положений, сформулированных в данном документе.
[0013] Фиг.6 является иллюстрацией примерного подхода, показывающего модель подписки на события, позволяющую локальным приложениям подписываться на локальные события, генерируемые компонентами устройства, при этом соответствующие компоненты идентифицируются адресом компонента.
[0014] Фиг.7 является иллюстрацией примерного подхода, показывающего ячейку устройств, содержащую набор устройств, на которых соответственно исполняется локальный сервер, сконфигурированный с возможностью приема и выполнения запросов подписки на события, принимаемых как от локальных приложений-клиентов, так и от удаленных приложений-клиентов, исполняющихся на других устройствах ячейки устройств.
[0015] Фиг.8 изображает примерную вычислительную среду, в которой может быть реализовано одно или более положений, сформулированных в данном документе.
ПОДРОБНОЕ ОПИСАНИЕ
[0016] Заявляемое изобретение теперь описывается со ссылкой на чертежи, на которых одинаковые ссылочные позиции используются для обозначения повсюду одинаковых элементов. В последующем описании, в целях пояснения, излагаются многочисленные конкретные подробности для того, чтобы обеспечить исчерпывающее понимание заявляемого изобретения. Очевидно, существует возможность того, однако, что заявляемое изобретение может быть реализовано без этих конкретных подробностей. В других примерах структуры и устройства изображены в виде блок-схем для содействия описанию заявляемого изобретения.
[0017] A. Введение
[0018] В области вычислительной техники, во многих подходах вовлекается архитектура клиент-сервер, содержащая приложение-сервер (например, веб-сервер), обеспечивающее один или более сервисов от имени одного или более приложений-клиентов. В качестве первого примера, сервис может включать в себя предоставление веб-содержимого (контента), включающего в себя веб-страницы и веб-приложения, которые следует визуализировать внутри веб-браузера клиентского устройства. В качестве второго примера, сервис может включать в себя хранилище приложений, сконфигурированное с возможностью хранения набора приложений, исполняемых на различных устройствах, и обеспечения конкретного устройства одним или более приложениями, которые вслед за этим могут быть исполнены. В качестве третьего примера, сервис может включать в себя хранение данных (например, в базе данных) и предоставление таких данных для использования внутри различных «управляемых данными» приложений, исполняющихся на соответствующих клиентских устройствах. В традиционной модели приложение-сервер функционирует в качестве резидентного процесса устройства, чтобы ждать соединения, инициируемого приложением-клиентом, принимает запросы со стороны приложения-клиента и выполняет такие запросы для того, чтобы предоставить сервис приложению-клиенту.
[0019] Во многих таких подходах приложение-сервер исполняется на серверном устройстве, а приложение-клиент исполняется на одном или более клиентских устройствах. Данные устройства могут представлять различные возможности, подходящие для каждой роли. Например, клиентское устройство может содержать ориентированное на пользователя устройство (например, рабочая станция, портативный компьютер, планшет, мобильный телефон или другое устройство), исполняющее приложение-клиент от имени пользователя, и может быть специализированным для таких взаимодействий (например, включать в себя устройства ввода с поддержкой касания и устройство высококачественного отображения и компоненты для звука). В отличие от этого серверное устройство может содержать сервис-ориентированное устройство (например, компонент сервера «без устройства отображения», не имеющий выделенного компонента отображения) и может быть специализированным для удовлетворения запросов на обслуживание очень производительным образом (например, иметь высокопроизводительные процессоры, кэш-память данных большой емкости и обильные сетевые ресурсы). Серверное устройство может содержать несколько серверных устройств, взаимодействующих по принципу «серверной фермы» (группы серверов). То есть клиентские устройства могут быть сконфигурированы с возможностью предоставления привлекательной для пользователя эксплуатации, в то время как серверные устройства могут быть сконфигурированы с возможностью ускорения обработки запросов на обслуживание и надежности таких устройств (например, через возможности обхода отказов, предоставляемые на серверной ферме).
[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 за событиями на клиентском устройстве.
[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.
[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.
[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] Также, несмотря на то что раскрытие изображено и описано по отношению к одному или более вариантам реализации, на основе прочтения и понимания данного описания и сопроводительных чертежей специалисты в уровне техники смогут разработать эквивалентные изменения и модификации. Данное раскрытие включает в себя все такие модификации и изменения и ограничивается только объемом следующей формулы изобретения. В частности, касаемо различных функций, реализуемых вышеупомянутыми описанными компонентами (например, элементами, ресурсами и т.д.), подразумевается, что термины, используемые для описания таких компонентов, соответствуют, пока не указано иным образом, любому компоненту, который реализует указанную функцию описанного компонента (например, который является функционально эквивалентным), даже не являясь структурно эквивалентным раскрытой структуре, которая реализует функцию в изображенных в данном документе примерных вариантах реализации раскрытия. Кроме того, в то время как конкретный признак раскрытия может раскрываться по отношению только к одному из нескольких вариантов реализации, такой признак может объединяться с одним или более другими признаками других вариантов реализации по необходимости и для преимуществ в любом заданном или конкретном применении. Кроме того, до той степени, в которой термины «включает в себя», «имеет», «обладает», «с» или их варианты используются либо в подробном описании, либо в формуле изобретения, подразумевается, что такие термины являются включающими по принципу подобно термину «содержит».