АРХИТЕКТУРА И СИСТЕМА ДЛЯ ОБЕСПЕЧЕНИЯ ИНФОРМИРОВАННОСТИ О МЕСТОПОЛОЖЕНИИ
ARCHITECTURE AND SYSTEM FOR PROVIDING INFORMATION ON LOCATION

Область техники
Настоящее изобретение относится к компьютерным системам, в частности к обеспечению информированности о местоположении компьютерных систем и компьютерных устройств.
Предшествующий уровень техники
С развитием сети Интернет и ростом интерактивных приложений, доступных для пользователей компьютеров, проявляется возрастающая потребность в универсальных вычислительных операциях. В этом контексте «универсальные вычислительные операции» означают способность компьютеров влиять на большинство повседневных пользовательских задач. Компьютеры называются «компьютерами» (вычислителями) ввиду их способности вычислять или выполнять математические задачи. Компьютеры больше не рассматриваются только лишь как вычислительные машины, а скорее являются персональными помощниками, которые встраиваются в структуру общества в форме персональных цифровых помощников (портативных компьютеров), электронных записных книжек, многофункциональных сотовых телефонов и т.д.
Компьютеры более не требуют пространства для размещения в офисе, чтобы иметь возможность осуществлять вычислительные операции до 20-го десятичного разряда, а вместо этого умещаются на ладони при той же самой вычислительной мощности. Разработчики программного обеспечения, создающие образ персонального помощника в форме новых вычислительных инструментальных средств, создают удобные для пользователя приложения, делая тем самым вычислительный аспект компьютера практически невидимым для пользователей. Такая технология приводит к созданию пользовательских интерфейсов, очень близко напоминающих интерфейсы, предполагающие действия человека, в резком контрасте с компьютерно-читаемыми перфокартами, требовавшимися в прошлом. Другой развивающейся технологией, воздействующей на универсальность вычислений, является беспроводная технология. Расширяющийся рост беспроводных и проводных коммуникационных сетей и новые типы беспроводных сетей создают потребность в компьютерах, обеспечивающих возможность использования выгод от коммуникационных возможностей компьютеров. Беспроводная технология больше не означает сотовый телефон, который должен быть установлен, например, на транспортном средстве с использованием постоянного монтажа, как это имело место в прошлом. Современные батареи ионно-литиевого типа и другие малогабаритные, но мощные батареи питания позволяют сотовым телефонам, устройствам типа PIMS и PDA, дорожным компьютерам (ноутбукам) работать в течение нескольких часов без подзарядки. Долговременная работа вычислительных устройств позволяет пользователю перемещаться с места на место, не принимая в расчет средства подзарядки при использовании устройства. Однако долговременная работа пользователя создает возможности для разработки новых вычислительных продуктов, которые до настоящего времени не рассматривались как необходимые или даже возможные. В качестве одного типа нового вычислительного продукта можно назвать продукт, обеспечивающий информированность о местоположении.
Современные устройства, обеспечивающие информированность о местоположении, являются фрагментарными, не функционируют совместно и не являются наращиваемыми или объединяемыми. Например, системы глобального определения местоположения, домашние сетевые системы, локальные сети и беспроводные телефоны, соединенные с компьютерной системой, способны обеспечить данные местоположения для компьютерной системы. Между этими системами нет общего знаменателя, который обеспечил бы синергетическое использование данных местоположения. Каждое устройство выводит данные местоположения в отличающихся форматах. Поэтому существует потребность в системе обеспечения информированности о местоположении, которая обеспечивает синергетический эффект для продуктов, обеспечивающих информированность о местоположении, чтобы повысить возможности пользователя, взаимодействующего с компьютерной системой.
Сущность изобретения
Соответственно, услуга определения местоположения обеспечивает наращиваемый способ обеспечения информации о местоположении, которая является непознаваемой для провайдера информации, и технологию, используемую для обеспечения этой информации. Способ направлен на прием запроса на получение контекста местоположения вычислительного устройства, сбор данных, связанных с текущим местоположением, от одного или нескольких устройств определения местоположения, согласование собранных данных в отношении расхождений касательно текущего местоположения, и генерацию объекта местоположения, доступного для приложений. Услуга согласует собранные данные множеством методов, например, путем применения иерархического, или метрического процесса, или их обоих.
Для осуществления способа соответствующая услуга включает в себя компонент управления определением местоположения, выполненный с возможностью маршрутизации данных местоположения, процессор объединения, связанный с компонентом управления определением местоположения, для приема одного или более сообщений о местоположении, генерируемых из данных местоположения, например, провайдерами данных, и программное обеспечение, конфигурированное для разрешения любых конфликтов, относящихся к данным, урегулирования конфликтов между сообщениями о местоположении и генерации объекта местоположения; и один или более интерфейсов программирования прикладных программ (API) определения местоположения, связанных с компонентом управления определением местоположения, для передачи объекта местоположения от процессора объединения к прикладной программе (приложению). Объект местоположения динамически обеспечивает для приложения самый последний доступный контекст местоположения для компьютера, на котором исполняется услуга.
Дополнительные варианты осуществления направлены на вопросы защищенности и пиратства в отношении услуги. Например, пользователь или установки по умолчанию могут определить достоверность (надежность) провайдера собираемых данных. Провайдер, который обеспечивает цифровую подпись, относится к известному источнику или является доверительным для пользователя, может быть определен как наиболее доверительный (надежный) провайдер данных местоположения. Дополнительно, отдельные условия, касающиеся защищенности и пиратства, конфигурируются для предотвращения возможности того, чтобы код третьей стороны мог ухудшить защищенность услуги определения местоположения и воспрепятствовать доступу приложений к услуге, если соответствующие условия в отношении пиратства не реализованы.
Дополнительные признаки и преимущества изобретения поясняются в последующем детальном описании иллюстративных вариантов осуществления со ссылками на чертежи.
Краткое описание чертежей
Хотя пункты формулы изобретения определяют признаки настоящего изобретения достаточно детально, однако изобретение вместе с его целями и преимуществами наилучшим образом может быть понято на основе последующего детального описания, иллюстрируемого чертежами, на которых представлено следующее:
Фиг. 1 - блок-схема, иллюстрирующая в обобщенном виде примерную компьютерную систему, в которой может быть использовано изобретения;
Фиг. 2 - блок-схема примерной архитектуры для обеспечения информированности о местоположении, выполненной в соответствии с изобретением;
Фиг. 3 - блок-схема услуги определения местоположения в архитектуре обеспечения информированности о местоположении в соответствии с возможным вариантом осуществления изобретения;
Фиг. 4 - блок-схема, иллюстрирующая примерные соединения в системе обеспечения информированности о местоположении, включающей в себя интерфейсы прикладного программирования в соответствии с вариантом осуществления изобретения;
Фиг. 5 - блок-схема последовательности операций способа, соответствующего варианту осуществления изобретения;
Фиг. 6 - блок-схема, иллюстрирующая обзор методов, используемых в услуге определения местоположения согласно варианту осуществления настоящего изобретения;
Фиг. 7 - диаграмма состояний для задающего распознавателя согласно варианту осуществления настоящего изобретения;
Фиг. 8А - блок-схема управляющей программы (менеджера, администратора) сменных модулей согласно варианту осуществления изобретения;
Фиг. 8В - диаграмма переходов состояний для управляющей программы сменных модулей, взаимодействующей с провайдером, согласно варианту осуществления изобретения;
Фиг. 9 - диаграмма состояний для управляющей программы сменных модулей согласно варианту осуществления изобретения;
Фиг. 10 - блок-схема последовательности операций способа, соответствующего варианту осуществления изобретения;
Фиг. 11 - блок-схема последовательности операций способа, соответствующего варианту осуществления изобретения;
Фиг. 12 - блок-схема последовательности операций способа для иллюстративного провайдера в соответствии с вариантом осуществления изобретения.
Детальное описание изобретения
С помощью чертежей, на которых одинаковыми ссылочными позициями обозначены одинаковые элементы, изобретение проиллюстрировано как реализованное в подходящей вычислительной среде. Хотя не требуется, однако изобретение описано в общем контексте команд, выполняемых компьютером, таких как программные модули, исполняемые на персональном компьютере. В общем случае программные модули включают в себя стандартные программы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют некоторые абстрактные типы данных. Кроме того, специалистам в данной области техники должно быть ясно, что изобретение может быть реализовано в других конфигурациях компьютерных систем, включая портативные устройства, мультипроцессорные системы, приборы бытовой электроники, основанные на микропроцессорах или программируемые, сетевых ПК, мини-компьютеры, универсальные компьютеры и т.п. Изобретение также может быть реализовано в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые связаны коммуникационной сетью. В распределенной вычислительной среде программные модули могут быть расположены как в локальных, так и в удаленных устройствах памяти.
На фиг. 1 представлена примерная среда 100 вычислительной системы, на которой может быть реализовано настоящее изобретение. Среда 100 вычислительной системы является лишь примером подходящей вычислительной среды и не предполагает никаких ограничений объема использования или функциональных возможностей изобретения. Вычислительная среда 100 не должна интерпретироваться как имеющая какую-либо зависимость или требование связи с каким-либо одним или комбинацией компонентов, показанных в составе приведенной для примера операционной среды 100.
Изобретение может быть использовано с множеством других универсальных или специализированных сред или конфигураций вычислительных систем. Примеры хорошо известных вычислительных систем, сред и/или конфигураций, пригодных для использования изобретения, представляют собой, не ограничиваясь указанным, персональные компьютеры, серверные компьютеры, портативные или карманные устройства, планшетные устройства, мультипроцессорные системы, системы на основе микропроцессоров, приставки, программируемые приборы бытовой электроники, сетевые ПК, мини-компьютеры, универсальные компьютеры, распределенные вычислительные среды, которые включают в себя любые из вышеупомянутых систем или устройств, и т.п.
Изобретение может быть описано в общем контексте команд, выполняемых компьютером, таких как программные модули, исполняемые на компьютере. В общем случае программные модули включают в себя стандартные программы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют некоторые абстрактные типы данных. Изобретение также может быть реализовано в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые связаны коммуникационной сетью. В распределенной вычислительной среде программные модули могут быть расположены как в локальных, так и в удаленных компьютерных запоминающих средах (носителях), включая устройства памяти.Как показано на фиг. 1, приведенная для примера система для реализации изобретения включает в себя универсальное вычислительное устройство в форме компьютера 110. Компоненты компьютера 110 могут включать в себя, не ограничиваясь указанным, блок 120 обработки, системную память 130 и системную шину 121, которая связывает различные системные компоненты, включая системную память, с блоком 120 обработки. Системная шина 121 может быть любой из различных типов шинных структур, включая шину памяти или контроллер памяти, шину периферийных устройств, локальную шину, использующую любую из разнообразных шинных архитектур. В качестве примера, но не ограничения, такие архитектуры включают в себя шину ISA (Архитектура, соответствующая промышленному стандарту), шину MCA (Микроканальная архитектура), усовершенствованную шину ISA (EISA), локальную шину VESA (Ассоциации по стандартам в области видеоэлектроники), шину PCI (32-разрядная системная шина), также известную как шина Mezzanine.
Компьютер 110 в типовом случае включает в себя множество считываемых компьютером сред (носителей). Считываемые компьютером носители могут представлять собой любые известные носители, к которым компьютер 110 может осуществлять доступ, и включают в себя энергозависимые и энергонезависимые носители, съемные и несъемные носители. К примеру, но не в качестве ограничения, считываемые компьютером носители могут содержать компьютерные носители записи и коммуникационную среду. Компьютерные носители записи включают в себя энергозависимые и энергонезависимые носители, съемные и несъемные носители, реализованные любым методом или по любой технологии для хранения информации, такой как считываемые компьютером команды, структуры данных, программные модули или иные данные. Компьютерные носители записи содержат, не ограничиваясь указанным, оперативную память (RAM, ОЗУ), постоянную память (ROM, ПЗУ), электронно-стираемую программируемую постоянную память (EEPROM, ЭСППЗУ), память с групповой перезаписью (флэш-память) или другие технологии памяти, CD-ROM, универсальные цифровые диски (DVD) или иные устройства памяти на оптических дисках, магнитных кассетах, магнитных лентах, устройства памяти на магнитных дисках или иные магнитные устройства памяти, или любые иные носители, которые могут быть использованы для хранения желательной информации и к которым может быть обеспечен доступ компьютера 110. Коммуникационная среда (среда передачи) в типовом случае воплощает считываемые компьютером команды, структуры данных, программные модули или иные данные в модулированном сигнале данных, таком как несущее колебание или иной транспортный механизм (механизм передачи), и включает в себя любую среду доставки информации. Термин «модулированный сигнал данных» означает сигнал, у которого одна или более характеристик установлены или изменяются таким образом, чтобы кодировать информацию в сигнале. В качестве примера, но не ограничения, коммуникационная среда включает в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводную среду передачи, такую как акустическая, радиочастотная, инфракрасная и другая беспроводная среда передачи. Комбинации любых вышеуказанных сред также должны быть включены в объем носителей (сред), считываемых компьютером.
Системная память 130 включает в себя компьютерный носитель записи в форме энергозависимой и/или энергонезависимой памяти, такой как постоянная память (ПЗУ, ROM) 131 и оперативная память (ОЗУ, RAM) 132. Базовая система ввода/вывода (BIOS) 133, содержащая базовые подпрограммы, которые способствуют переносу информации между элементами в компьютере 110, например, при запуске, в типовом случае сохранена в ПЗУ 131. ОЗУ 132 в типовом случае содержит данные и/или программные модули, которые непосредственно доступны и/или обрабатываются блоком 120 обработки. В качестве примера, но не ограничения, на фиг. 1 показаны операционная система 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
Компьютер 110 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители записи. Например, на фиг. 1 показан дисковод 141 жестких дисков для считывания с несъемного, энергонезависимого магнитного носителя и записи на него, дисковод 151 магнитных дисков для считывания со съемного энергонезависимого магнитного диска 152 и записи на него, и дисковод 155 оптических дисков для считывания со съемного энергонезависимого оптического диска 156 или записи на оптический диск, такой как, например, ПЗУ на компакт-диске (CD-ROM) или иные оптические носители записи. Другие съемные и несъемные, энергозависимые и энергонезависимые компьютерные носители записи, которые могут быть использованы в приведенной для примера операционной среде, включают в себя, не ограничиваясь указанным, кассеты на магнитных лентах, карты флэш-памяти, DVD, цифровые видеомагнитные ленты, твердотельные ОЗУ, твердотельные ПЗУ и т.п. Дисковод 141 жестких дисков в типовом случае соединен с системной шиной 121 посредством интерфейса несъемной памяти, такого как интерфейс 140, и дисковод 151 магнитных дисков и дисковод 155 оптических дисков соединены с системной шиной 23 в типовом случае посредством интерфейса схемной памяти, такого как интерфейс 150.
Дисководы и связанные с ними считываемые компьютером носители, описанные выше и показанные на фиг. 1, обеспечивают хранение считываемых компьютером команд, структур данных, программных модулей и других данных для компьютера 110. На фиг. 1, например, показано, что дисковод 141 жесткого диска хранит операционную систему 144, прикладные программы (приложения) 145, другие программные модули 146 и программные данные 147. Заметим, что эти компоненты могут быть теми же самыми или отличающимися от операционной системы 134, прикладных программ 135, других программных модулей 136 и программных данных 137. Операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147 обозначены отличающимися ссылочными позициями для иллюстрации того, что они, как минимум, являются другими копиями. Пользователь может вводить команды и информацию в компьютер 110 посредством устройств ввода, например, планшета или цифрового преобразователя 164, микрофона 163, клавиатуры 162 или указательного устройства 161, обычно называемого мышью, трекболом или сенсорной панелью. Другие устройства ввода (не показаны) могут включать в себя джойстик, игровую панель, спутниковую параболическую антенну, сканер и т.п. Эти и другие устройства ввода часто соединяются с блоком 120 обработки через интерфейс 160 пользовательского ввода, связанный с системной шиной, но могут быть соединены и посредством других интерфейсов и структур шин, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB) и т.д. Монитор 191 или иное устройство отображения также соединено с системной шиной 121 через интерфейс, например, такой как видеоинтерфейс 190. Монитор и/или панель сенсорного экрана могут быть физически связаны с корпусом, в котором находится вычислительное устройство 110, такое как персональный компьютер планшетного типа. Кроме того, компьютеры, такие как вычислительное устройство 110, также могут включать в себя другие периферийные устройства вывода, например, громкоговорители 197 и принтер 196, которые могут быть соединены через интерфейс 194 устройств вывода или иное подобное средство.
Компьютер 110 может работать в сетевой среде с использованием логических соединений с одним или более удаленными компьютерами, такими как удаленный компьютер 180. Удаленный компьютер 180 может представлять собой ПК, сервер, маршрутизатор, сетевой ПК, одноранговое устройство или другой обычный сетевой узел и в типовом случае включает в себя многие или все из элементов, описанных выше применительно к компьютеру 110, хотя на фиг. 1 показано только устройство 181 памяти. Логические соединения, показанные на фиг. 1, включают в себя локальную сеть (LAN) 171 и глобальную сеть (сеть широкого охвата - WAN) 173, но могут включать в себя и другие сети. Такие сетевые среды являются общеизвестными в офисах, компьютерных сетях предприятий, интранетах и в Интернет. Например, в настоящем изобретении компьютерная система 110 может являться компьютером-источником, из которого осуществляют перемещение данных, а удаленный компьютер 180 может представлять собой компьютер-адресат. Отметим, однако, что компьютеры-источники и адресаты не требуют соединения посредством сети или иных средств, а вместо этого данные могут перемещаться через любую среду, в которую может осуществляться запись с платформы-источника и из которой может осуществляться считывание платформой-адресатом или платформами-адресатами.
При использовании в сетевой среде локальной сети (LAN) компьютер 110 соединяется с локальной сетью 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде глобальной сети (WAN) компьютер 110 в типовом случае включает в себя модем 172 или иное средство для установления связи в глобальной сети 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, соединен с системной шиной 121 через интерфейс 160 пользовательского ввода или иной подходящий механизм. В сетевой среде программные модули, изображенные по отношению к компьютеру 110, или их части могут быть сохранены в удаленном устройстве памяти. В качестве примера, но не ограничения, фиг. 1 иллюстрирует удаленные прикладные программы 185 как хранящиеся в устройстве памяти 181. Следует иметь в виду, что показанные сетевые соединения приведены для примера, и что могут быть использованы и другие средства установления канала связи между компьютерами.В последующем описании изобретение представлено со ссылками на действия и символические представления операций, которые выполняются одним или несколькими компьютерами, если не указано иное. Понятно, что такие действия и операции, которые иногда упоминаются как исполняемые компьютером, включают в себя манипуляции, осуществляемые блоком обработки компьютера над электрическими сигналами, представляющими данные в структурированной форме. Эти манипуляции преобразуют данные или сохраняют их в некоторых ячейках в системе памяти компьютера, что приводит к изменению конфигурации или иному изменению работы компьютера способом, хорошо понятным для специалистов в данной области техники. Структуры данных, в которых данные сохраняются, являются физическими ячейками памяти, которые имеют конкретные свойства, определяемые форматом данных. Однако, хотя изобретение описано в вышеуказанном контексте, не предусматривается, что он является ограничительным, так как специалистам в данной области техники должно быть понятно, что различные действия и операции, описанные ниже, могут быть также реализованы и аппаратными средствами.
На фиг. 2 представлена блок-схема архитектуры для услуги 210 обеспечения информированности о местоположении. Как показано, услуга 210 определения местоположения может представлять собой услугу 212 пользовательского режима и может устанавливаться на компьютере, таком как компьютер 110, или на портативном вычислительном устройстве. Услуга 212 определения местоположения принимает данные от множества приложений 220(1-3) и извне устройства/компьютера, как показано позицией 214. Услуга 210 определения местоположения связана в устройстве с компонентом 215 режима ядра (привилегированного режима), таким как драйверы 222(1-2) и компонентом 224 файловой системы Windows. Драйверы 222(1-2) и компоненты 224 файловой системы Windows показаны как связанные с аппаратными средствами 216. Каждый драйвер 222(1-2) показан связанным с соответствующим ему устройством 226(1-2) аппаратных средств. Компонент 224 файловой системы Windows показан связанным с устройством 230 памяти, которое может представлять собой базу данных для хранения данных файловой системы Windows. Услуга 210 определения местоположения может быть также связана с приложением MapPoint или иным приложением, конфигурированным для запроса информации местоположения и совместимым с вариантами осуществления или устройством 240 для обеспечения данных местоположения. Услуга 210 определения местоположения также связана с активным каталогом 260 через облегченный протокол службы каталогов (LDAP) 250. Услуга 210 определения местоположения также может быть связана с внешним устройством/клиентом 280, которое может быть связано с сервером 270 присутствия через коммуникационный канал 214. Более конкретно, услуга 210 определения местоположения может обеспечить информацию местоположения, которая может быть извлечена, например, клиентом услуги RTC (связи в реальном времени). Клиент услуги RTC может затем передать информацию к серверу 270 присутствия.
На фиг. 3 представлена блок-схема, иллюстрирующая более детально услугу 210 определения местоположения. Как показано, услуга 210 определения местоположения включает в себя один или несколько интерфейсов программирования прикладных программ (API) определения местоположения, процессор 340 объединения и компонент 330 управления определением местоположения. Компонент 330 управления определением местоположения взаимодействует со сменными модулями 310” провайдеров и распознавателями 320. В одном варианте осуществления компонент 330 управления определением местоположения включает в себя пользовательский агент 332, кэш 334, главный распознаватель 336 и управляющую программу 338 сменных модулей. На фиг. 3 также показаны провайдеры 310', которые могут являться провайдерами воспринимаемых данных, которые требуют, по меньшей мере, некоторой интерпретации, таких как специфические для устройств данные. Например, провайдер системы глобального определения местоположения может предоставить данные широты и долготы. В одном варианте осуществления провайдеры 310' передают воспринятые (измеренные) данные на сменные модули 310” провайдеров как специфическую для устройств информацию местоположения или специфические для датчиков данные соответствующих устройств. Сменные модули 310” провайдеров могут осуществлять нормализацию данных, преобразовывать данные в стандартную форму и передавать данные на компонент 330 управления определением местоположения. В других вариантах осуществления провайдеры 310' могут преобразовывать данные перед передачей данных на сменные модули 310” провайдеров. Конкретные возможности провайдеров 310' определяются требованиями и ограничениями при проектировании. Например, компонент 330 управления определением местоположения может получить исходную (необработанную) информацию от одного или нескольких устройств через провайдеров 310' или из иных источников. В одном варианте осуществления компонент 330 управления определением местоположения нормализует данные и преобразует данные в сообщения определения местоположения.
В одном варианте осуществления компонент 330 управления определением местоположения конфигурирован в составе услуги 210 определения местоположения. Сменные модули 310” провайдеров нормализуют данные, однако управляющая программа 338 сменных модулей, которая является частью системы управления определением местоположения, будет дополнительно нормализовать данные перед их приемом и пересылкой в главный распознаватель 336. Каждый из компонентов, таких как главный распознаватель 336, процессор 340 объединения, управляющая программа 338 сменных модулей указывают на готовность к приему информации. После этого в одном варианте осуществления, приложения и компоненты, которые извлекают данные, делают это после того, как компоненты 336, 338, 340 имеют данные готовыми для их извлечения.
Распознаватели 320 принимают измененные и преобразованные, а в некоторых случаях исходные (необработанные) данные, такие как специфическая для устройств информация определения местоположения, и интерпретируют эти данные. Распознаватели 320 могут быть реализованы как сменные модули для услуги 210 определения местоположения и могут включать в себя преобразователи специфической для устройств информации местоположения и источники данных. Распознаватели 320 функционируют для преобразования специфической для устройств информации местоположения в обогащенную (доступную для чтения и интерпретации множественными приложениями) информацию местоположения с использованием источников данных, доступных для логического вывода новых данных из существующих данных. В одном варианте осуществления распознаватель 320 может преобразовывать, по меньшей мере, часть данных, полученных от одного или более устройств. Каждый распознаватель 320 может иметь возможность интерпретировать, по меньшей мере, один тип исходных (необработанных) или частично декодированных данных от провайдера 310. Например, распознаватель 320 может предназначаться для интерпретации только данных типа 802.11. В этом случае распознаватель должен регистрироваться в управляющей программе 330 для управления определением местоположения как интерпретирующий только данные типа 802.11 и будет принимать только данные этого типа. Дополнительно каждый распознаватель 320 может конфигурироваться с возможностью преобразования информации другого распознавателя, причем в этом случае распознаватель может не иметь возможности преобразовывать исходные данные или частично декодированные данные. На фиг. 3 также показан компонент 360 файловой системы Windows, который принимает данные от сервера 210 определения местоположения.
Процессор 340 объединения генерирует текущий объект местоположения. Услуга 210 определения местоположения проверяет текущие данные местоположения посредством сменного модуля или различных сменных модулей, включая сменные модули 310” провайдера и сменные модули 320 распознавателя. В этом контексте сменный модуль может интерпретироваться как одна или несколько динамически загружаемых библиотек, или динамически подключаемых библиотек (DLL), или как динамически загружаемый модуль для расширения функциональных возможностей программного обеспечения, программно-аппаратных средств или системных компонентов.
Обзор системы
На фиг. 4 представлена блок-схема системы 210 определения местоположения и окружающих ее компонентов, в целом иллюстрирующая, что услуга 210 действует как структура, которой не известно о каких-либо приложениях, а также устройствах и источниках данных, от которых может быть получена информация. Услуга 210 определения местоположения представлена как включающая в себя процессор 340 объединения, кэш 334, агент 332 пользователя (пользовательский посредник, прикладной процесс, обеспечивающий доставку сообщений для пользователя), управляющую программу (менеджер) 338 сменных модулей и главный распознаватель 336. Услуга 210 определения местоположения также включает в себя сервер 450 WinFS SQL (файловой системы Windows на языке структурированных запросов), API (интерфейс программирования приложений) 404 провайдера определения местоположения, API 414 распознавателя местоположения, API 416 уведомления о местоположении, API 418 пользователя услуги определения местоположения, и API 420 управления определением местоположения. Сервер 450 WinFS SQL связывает услугу 210 определения местоположения с сервером 460 уведомления и с API 418 пользователя услуги определения местоположения и API 416 уведомления о местоположении. API 416 и 418 могут взаимодействовать с приложением 220.
API 418 пользователя услуги определения местоположения обеспечивает возможность приложению направить запрос о текущем местоположении компьютера, на котором исполняется услуга 210 определения местоположения. API 414 распознавателя местоположения определяет, какие функции необходимо реализовать сменному модулю для регистрации в услуге. Как показано, API 418 пользователя услуги определения местоположения получает данные от сервера 450 WinFS и пересылает данные к одному или нескольким приложениям 220(1-n). API 420 управления определением местоположения получает данные от множества местоположений, таких как процессор 340 объединения, агент 332 пользователя, кэш 334, управляющая программа 338 сменных модулей и главный распознаватель 336, и пересылает данные назад и вперед в одно или несколько приложений 220. API 420 управления определением местоположения обеспечивает возможность конфигурирования параметров услуги и компонентов. API 420 управления определением местоположения также обеспечивает возможность добавления и удаления провайдеров и распознавателей. API 416 уведомления о местоположении получает данные от услуги 460 уведомления и посылает данные в приложения 220. API 416 уведомления о местоположении позволяет приложению регистрироваться для уведомления о том, когда местоположение компьютера, на котором исполняется услуга, изменяется. В одном варианте осуществления отдельный API, являющийся API регистрации приложения, позволяет приложениям регистрироваться для получения уведомлений и определения текущего местоположения. В одном варианте осуществления приложения должны сначала регистрироваться для получения данных местоположения. После регистрации приложение может выбрать режим уведомления в связи с предварительно определенными причинами. API 414 распознавателя местоположения посылает и принимает данные от управляющей программы 412 сменных модулей и задающего распознавателя 336 и передает данные в пользовательскую базу данных Windows 408(1) распознавателя местоположения, активный каталог 408(2) распознавателя местоположения и в MapPoint 408(3) распознавателя местоположения, а также к другим распознавателям местоположения, которым могут быть полезны данные местоположения. Главный распознаватель 336 несет ответственность за управление распознаванием информации местоположения. Когда управляющая программа 412 сменных модулей посылает на главный распознаватель 336 информацию местоположения, зависящую от устройства, главный распознаватель 336 маршрутизирует данные к распознавателям, которые являются свободным и могут распознать информацию.
Более конкретно, согласно фиг. 4, услуга 210 прямого определения местоположения может быть описана на примере, начиная с провайдеров 402. Провайдер, например провайдер 802.11, получает данные сканирования. Если провайдер 402 определяет, что имеются новые точки доступа, то провайдер связывает адрес МАС (управления доступом к среде передачи) и информацию об уровне сигнала в сообщение 802.11. Провайдер 802.11 сигнализирует, что информация готова для управляющей программы 338 сменных модулей. Управляющая программа 338 сменных модулей принимает наборы информации и сигнализирует главному распознавателю, что имеется новое сообщение о местоположении, которое должно быть распознано.
Затем главный распознаватель 336 извлекает сообщение о местоположении от управляющей программы 338 сменных модулей. Затем главный распознаватель 336 пересылает сообщение о местоположении к агенту 332 пользователя.
Агент 332 пользователя проверяет кэш 334 на наличие этого сообщения о местоположении. Кэш 334 может возвратить в ответ промах кэша (сообщение о попытке доступа к той части кэшированного файла, которая отсутствует в кэше). В этом случае кэш 334 кэширует данные и проверяет выходной буфер. Путем проверки выходного буфера кэша местоположение пользователя может быть определено на основе сообщения о местоположении. Если кэш не определяет местоположение пользователя, то агент 332 пользователя генерирует промах.
После того как агент 332 пользователя генерировал промах, главный распознаватель 336 посылает сообщение о местоположении к распознавателю 408, такому как распознаватель 408(2) активного каталога (AD). AD распознаватель 408(2) определяет информацию адреса МАС в сообщении о местоположении, соединяется с активным каталогом и отыскивает местоположение точки доступа. Затем AD распознаватель 408(2) возвращает местоположение точки доступа в главный распознаватель 336 в качестве сообщения о местоположении. Затем главный распознаватель 336 посылает сообщение о местоположении агенту 332 пользователя. Агент 332 пользователя проверяет кэш 334 на наличие совпадения с сообщением о местоположении, возвращенным AD распознавателем 408(2). Если кэш 332 генерирует промах, то агент 332 пользователя кэширует сообщение AD. Затем агент 332 пользователя проверяет WinFS 450 для отыскания каких-либо сохраненных данных местоположения, которые связаны с сообщением о местоположении, генерированным AD распознавателем 408(2). Если ничего не найдено, то агент 332 пользователя информирует главный распознаватель 336, что дополнительные данные отсутствуют. Затем главный распознаватель 336 сигнализирует процессору 340 объединения, что имеются данные, которые должны быть извлечены. Процессор 340 объединения извлекает два сообщения о местоположении, включая сообщение о местоположении 802.11 и сообщение о местоположении AD (активного каталога).
Затем процессор 340 объединения объединяет эти два сообщения и записывает объект местоположения, представляющий объединенные сообщения, и оба сообщения о местоположении в файловую систему Windows (WniFS) 350 в качестве текущего местоположения.
Затем услуга 460 уведомлений, которая может быть конфигурирована для исполнения поверх WinSF, генерирует уведомление. Генерированное уведомление проходит через API уведомлений о местоположении и в приложения, зарегистрированные для получения уведомлений.
API 414 распознавателя местоположения является интерфейсом между услугой 210 определения местоположения и распознавателями. Кроме того, API 414 распознавателя местоположения позволяет каждому распознавателю уведомлять услугу 210 определения местоположения, что распознаватель имеет новую информацию о местоположении. API 414 распознавателя местоположения позволяет распознавателю пересылать эту информацию в услугу 210 определения местоположения.
API 404 провайдера определения местоположения посылает и принимает данные от провайдеров определения местоположения, таких как провайдеры 402(1-n), которые могут включать в себя провайдера протокола 802.11, провайдера протокола Bluetooth, провайдера глобальной системы определения местоположения (GPS) и другие типы провайдеров данных местоположения. API 404 провайдера определения местоположения является интерфейсом между услугой 210 определения местоположения и провайдерами. API 404 провайдера определения местоположения позволяет каждому провайдеру уведомлять услугу, что он имеет новую информацию о местоположении, и пересылать эту информацию в услугу.
В одном варианте осуществления API 404 провайдера определения местоположения и API 414 распознавателя местоположения являются оба частью API управляющей программы сменных модулей. API управляющей программы сменных модулей также включает в себя сменный модуль управляющей программы сменных модулей, который является интерфейсом между управляющей программой 338 сменных модулей и сменным модулем 402 провайдеров. Интерфейс сменного модуля управляющей программы сменных модулей выдает данные на интерфейсы провайдеров и распознавателей. В соответствии с данным вариантом осуществления для реализации провайдера 402 должны быть реализованы как API провайдера определения местоположения, так и сменный модуль управляющей программы сменных модулей.
Процессор 340 объединения обеспечивает объединение данных, полученных от главного распознавателя 336. Процессор 340 объединения обычно разрешает конфликты и объединяет «сообщения», принятые из различных распознаваний уведомлений о местоположении, получаемых от провайдеров определения местоположения. Данные, относящиеся к местоположению, поступают через главный распознаватель 336, который отфильтровывает данные и передает данные в кэш 334 и затем в процессор 340 объединения.
Агент 332 пользователя обеспечивает проверку кэша 334 для определения того, могут ли быть распознаны текущие сообщения о местоположении с дальнейшим использованием кэшированных данных. Агент 332 пользователя дополнительно проверяет WinFS 450, чтобы убедиться, указывают ли текущие сообщения о местоположении сохраненные пользователем данные местоположения.
Кэш 334 обеспечивает сохранение деревьев (древовидных структур) распознавания. Деревья распознавания позволяют услуге 210 определения местоположения уменьшить количество циклов распознавания.
На фиг. 4 показан вариант осуществления архитектуры, которая может использовать услугу 210 определения местоположения, чтобы обеспечить приложениям 220 возможность запрашивать о текущем местоположении и уведомляться о том, когда местоположение пользователя изменяется. На фиг. 4 также показано, что API определения местоположения 350 имеют три уровня. Более конкретно, API обеспечивают уровни, включающие в себя уровень от провайдеров 402 к услуге 210 определения местоположения, уровень от распознавателей 408 к услуге 210 определения местоположения и от приложений 220 к услуге 210 определения местоположения. В возможном варианте осуществления сменные модули 408 распознавателей конфигурированы для регистрации типов информации, которую сменные модули 408 распознавателей могут преобразовывать, а также других возможностей. Данные касательно преобразуемых типов информации и других возможностей позволяют услуге 210 определения местоположения эффективно использовать сменные модули 408 распознавателей для выполнения процессов, которые в ином случае выполнялись бы где-либо и вызывали дублирование обработки. Кроме того, регистрация позволяет процессору 340 объединения эффективно разрешать конфликты в данных с известными типами и обеспечивать механизм событий, который обеспечивает уведомление приложений 220 при изменении местоположения пользователей. Регистрация и другие процессы в услуге 210 определения местоположения также обеспечивают реализацию объекта местоположения, связанного с услугой 210 определения местоположения, для направления всей информации о местоположении в приложение 220 в качестве расширения объекта местоположения. Объект местоположения может быть конфигурирован как обобщенный тип компонента информации местоположения, который позволяет любому приложению вести отличающиеся или новые типы информации местоположения в компонент. Обобщенный тип компонента информации местоположения может быть конфигурирован как расширение базового сообщения о местоположении.
В возможном варианте осуществления услуга 210 определения местоположения является расширяемой, так что разработчики могут создавать дополнительные сменные модули. Как показано, сменные модули 402, 408 могут быть связаны с услугой 210 определения местоположения через уровни API 414, 416, 418, 420, 422, которые позволяют услуге 210 определения местоположения координировать связь между устройствами и источниками данных и новыми типами данных местоположения. Дополнительно, каждый сменный модуль 402, 408 и компонент в услуге 210 определения местоположения может быть модульным, так что один или несколько сменных модулей или компонентов могут быть отключены и удалены, не вызывая при этом возникновения ошибок. В данном варианте осуществления услуга 210 определения местоположения работает, как если бы отключенный и удаленный сменный модуль, процессор 40 объединения или компонент уведомления или иной компонент находились бы на месте, но услуга 210 определения местоположения пропускает соответствующую часть процесса, требующую удаленного сменного модуля или компонента. Например, если процессор 340 объединения был бы удален, в соответствии с данным вариантом осуществления, услуга 210 определения местоположения может маршрутизировать сообщения о местоположении от сменных модулей к API 418 пользователя услуги определения местоположения.
В другом варианте осуществления одно из приложений 220 может являться пользовательской прикладной программой управления, которая может также быть реализована как пользовательский интерфейс, связанный с услугой 210 определения местоположения. Пользовательская прикладная программа управления может дополнительно быть конфигурирована для взаимодействия или включения API, которые позволяют пользователю добавлять и удалять сменные модули, такие как сменные модули 408 и 402, и изменять приоритеты для сменных модулей 402 и распознавателей 498, что может изменить функциональные возможности процессора 340 объединения. Дополнительно, пользовательская прикладная программа управления может быть конфигурирована для изменения количества итераций между главным распознавателем 336 и одним или несколькими из распознавателей 408.
Со ссылкой на фиг. 5 во взаимосвязи с фиг. 4 ниже описано внутреннее функционирование услуги 210 определения местоположения. На этапе 510 провайдеры асинхронно получают исходные данные устройств. На этапе 520 каждый провайдер после приема нормализует полученные данные. Такая нормализация приводит к тому, что, по меньшей мере, некоторые из данных отбрасываются. На этапе 530 нормализованные данные преобразуются в стандартный формат, и на этапе 540 данные передаются к главному распознавателю 336. На этапе 542 главный распознаватель 336 получает стандартизованные и нормализованные данные от одного или нескольких провайдеров через API провайдеров определения местоположения. На этапе 550 главный распознаватель распределяет данные к одному или нескольким распознавателям 408. Распознаватели 408 обрабатывают данные и возвращают новые данные к главному распознавателю 336, как показано на этапе 560. На этапе 561 обеспечивается приращение счета счетчика, так что он становится равным “n+1”. На этапе 562 принятия решения определяется, достигло ли значение “n” предварительно установленного предела. Если нет, то обработка повторяется, как показано линией 564. Если предварительно определенное количество итераций достигнуто, то в соответствии с метрикой или ключом, полученным главным распознавателем 336, данные посылаются, как показано на этапе 570, в процессор 340 объединения.
На этапе 574 процессор 340 принимает данные от главного распознавателя 336. На этапе 580 процессор 340 объединения обрабатывает данные, принятые от главного распознавателя 336, для разрешения конфликтов. На этапе 590 процессор 340 объединения, после разрешения имеющихся конфликтов, создает объект местоположения, инкапсулирует текущее местоположение компьютера, исполняющего услугу 210 определения местоположения. На этапе 591 осуществляется определение, необходимо ли создать новый объект местоположения. Если это необходимо, то на этапе 592 процессор 340 создает новый объект местоположения, и процессор 340 записывает местоположение в WinFS 450. На этапе 593 услуга 460 уведомления проверяет, определено ли какое-либо местоположение в качестве корректного местоположения в процессоре 340 объединения, чтобы убедиться, согласуется ли это местоположение с какими-либо местоположениями, для которых услуга 340 уведомления ассоциируется с соответствующим приложением 220. Затем услуга 460 уведомления уведомляет соответствующие приложения 220 посредством API 416 уведомления о местоположении. Приложения 220 взаимодействуют с услугой 460 уведомления через API 416 уведомления о местоположении, во-первых, путем запроса местоположения, представляющего наилучшую приблизительную оценку услугой 210 определения местоположения текущего местоположения компьютера, использующего услугу 210. Во-вторых, приложение 220 может зарегистрироваться в услуге 460 уведомления, которая выполняется во взаимосвязи с WinFS 450, так что приложение 220 может уведомляться, когда местоположение компьютера, исполняющего услугу 210 определения местоположения, изменяется. Когда приложение 220 принимает данные местоположения от услуги 210 определения местоположения, возвращаемые данные могут включать в себя сообщения от провайдеров 402, а также сообщения от распознавателей 408. Таким образом, приложение 220 может получать обогащенные данные, включающие в себя контекстную информацию, добавленную одним из распознавателей 408.
В процессе работы архитектура, представленная на фиг. 4 и описанная со ссылками на фиг. 4 и 5, обеспечивает возможность пользователю, такому как мобильный специалист в области информационных технологий, быть ориентированным на задачу за счет обеспечения соответствующих ресурсов по мере необходимости. Данная архитектура обеспечивает для приложений 220 способ определения информации о местоположении. На основе информации о местоположении приложения 220 могут осуществлять поиск ресурсов, доступных для пользователя (которые могут быть определены посредством другого средства, такого, например, как активный каталог) для нахождения ресурсов вблизи пользователя.
Что касается мобильного специалиста в области информационных технологий, то примером такого специалиста может быть пользователь, который перемещается между различными подразделениями компании. На месте каждого подразделения данная архитектура позволяет приложениям 220 помочь пользователю в определении местоположения ресурсов, включая принтеры, проекторы, «белые доски» (проекционное оборудование для компьютеризированных презентаций), сканеры и т.п. В одном варианте осуществления мобильный специалист в области информационных технологий может определить местонахождение принтера для документа путем указания (щелчком) на объекте местоположения, таком как объект «рядом со мной». Услуга 210 определения местоположения получает данные от провайдера 402, которые распознаны распознавателями, объединены процессором 340 объединения и выданы через процессор 340 объединения, WinFS 450 и соответствующие API определения местоположения в прикладную программу 220. Таким образом, если одна или несколько сетей принтеров конфигурированы для выдачи списка принтеров и их местонахождения в прикладную программу, то прикладная программа может объединить данные для выдачи списка принтеров, находящихся в непосредственной близости. В одном варианте осуществления объект местоположения имеет связь, позволяя пользователю щелкнуть или иным образом указать один из принтеров в списке для отправки на печать на выбранный принтер.
В другом примерном варианте осуществления мобильный специалист в области информационных технологий может быть дистанционным пользователем или пользователем внешнего компьютера, иного, чем на основной территории офиса, например домашнего офиса. Домашний компьютер-ноутбук может, например, соединяться с домашней беспроводной сетью. В соответствии с возможным вариантом осуществления изобретения услуга 210 определения местоположения получает данные через провайдера 402 и пересылает в приложение, видимое для пользователя, которое указывает, что пользователь подсоединен к домашней сети. Для обеспечения возможности пользователю соединиться с местом работы услуга 210 местоположения может принять от пользователя указание соединиться с местом работы, например, через «мой центр работы в сети» или т.п. Услуга 210 определения местоположения, поскольку она получает данные, которые указывают на то, что пользователь не соединен с рабочей сетью, может запустить приложение для идентификации сети, чтобы приложение могло соединиться с сетью, например, через центр работы в сети, брандмауэр (средство межсетевой защиты) или т.п.
Другим примером мобильного специалиста в области информационных технологий, получающего выгоду от применения настоящего изобретения, может быть группа таких мобильных специалистов. Например, если требуется один из группы мобильных специалистов в области информационных технологий, услуга 210 определения местоположения запускает отслеживание по меньшей мере одного из группы этих мобильных специалистов. Пользователь, которому требуется этот один из группы специалистов, может определить местоположение этого специалиста за счет того, что каждый специалист выдал разрешение пользователю на передачу данных местоположения в услугу 210 определения местоположения, исполняемую на компьютере пользователя. Например, приложение 220, представляющее собой, например, WindowsMessenger, может быть конфигурировано для приема данных присутствия от каждого специалиста, от которого данный пользователь получил на это разрешение. Таким образом, пользователь может использовать данные относительно местоположения для принятия решения о том, какой специалист может находиться ближе всего, дальше всего или соответствующим образом распределить задачи.
Главный распознаватель
Со ссылками на фиг. 6 и 7 во взаимосвязи с фиг. 4 ниже более подробно описан главный распознаватель 336. Главный распознаватель 336 управляет процессом распределения данных от провайдеров 402 к распознавателям 408 и от распознавателей 408 к процессору 340 объединения. В главном распознавателе поддерживается множество структур данных, включая текущий список сообщений о местоположении от каждого устройства и каждого провайдера и каждого распознавателя 408. Главный распознаватель 336, кроме того, отслеживает сообщение местоположения, распознанное распознавателем 402, текущий цикл сообщений определения местоположения и цикл ответов, которые готовы для посылки в процессор 340 объединения.
В одном варианте осуществления главный распознаватель 336 поддерживает, по меньшей мере, четыре параметра, которые могут конфигурироваться пользователем, включая тайм-аут (лимитированное время ожидания) для всех итераций для распознавателя 408, тайм-аут для информации одной итерации распознавателя, и число итераций распознавателя, показанное как NumIter на фиг. 7. Специалистам в данной области техники должно быть ясно, что число поддерживаемых параметров и временные характеристики для них могут изменяться в соответствии с вариантами выбора при проектировании, и все они охватываются объемом настоящего изобретения.
Как показано на фиг. 6, главный распознаватель 336 инициализируется на этапе 602 и ожидает до тех пор, пока он не примет уведомление от управляющей программы 412 сменных модулей на этапе 604. После получения уведомления главный распознаватель 336 извлекает набор сообщений о местоположениях, которые были сохранены управляющей программой 412 сменных модулей и сохраняет их на этапе 605. Затем главный распознаватель 336 на этапе 606 проверяет каждый распознаватель, чтобы отыскать такой распознаватель, который осуществит распознавание сообщения. Если имеется распознаватель для распознавания нового сообщения о местоположении, то главный распознаватель 336 затем проверяет, конфигурирован ли этот распознаватель соответственно одному из типов сообщений о местоположении в сохраненном наборе сообщений о местоположении, т.е. способен ли он распознать сообщение, как указано на этапе 607. Если соответствующие сообщения могут быть распознаны распознавателем, то главный распознаватель определяет на этапе 608, достигнуто ли максимальное количество итераций. Если максимальное количество итераций не достигнуто, то главный распознаватель 336 посылает на этапе 609 сообщение агенту 332 пользователя. Агент 332 пользователя взаимодействует с WinFS и кэшем 334 для добавления данных к сообщению. С использованием кэшированных данных сообщения защищаются от посылки большего объема данных, чем необходимо, к распознавателям. Если агент 332 пользователя и кэш 334 не могут добавить необходимые данные, то главный распознаватель посылает данные на соответствующий распознаватель, запускает связанный с этим таймер и обеспечивает приращение числа итераций, как указано на этапе 610.
Если нет доступных распознавателей или максимальное число итераций достигнуто, то на этапе 611 сообщения определяются как готовые к объединению. В одном варианте осуществления главный распознаватель 336 может передавать сообщения о местоположении в зависимости от распознавателя, интерпретирующего данные.
Перед истечением времени установки таймера, если распознаватель 408 уведомляет главный распознаватель 336, что распознавание конкретного сообщения о местоположении завершено, главный распознаватель 336 перезаписывает любой предыдущий набор сообщений о местоположении, генерированный данным конкретным распознавателем, как указано на этапе 612.
Этап 613 обеспечивает то, что после истечения времени установки таймера главный распознаватель 336 добавляет любое последнее сообщение (сообщения) к набору сообщений о местоположении, которые готовы для посылки процессору 340 объединения. Кроме того, главный распознаватель 336 сбрасывает любые распознаватели, связанные с данным таймером, так что все старые сообщения о местоположении в распознавателях игнорируются, и набор сообщений о местоположении посылается процессору 340 объединения. Главный распознаватель также проверяет доступность каждого из свободных распознавателей для распознавания любых новых сообщений.
Процессор 340 объединения обрабатывает данные, и на этапе 614 главный распознаватель 336 получает обновленные данные с процессора 340 объединения в форме объекта последнего местоположения (LatLoc). После приема LatLoc, процессор 340 объединения на этапе 616 посылает LatLoc в файловую систему FS, которая может затем запустить услугу 460 уведомления, что новый объект определения местоположения требует внимания. В возможном варианте осуществления главный распознаватель 336 поддерживает отсчет счетчика, который обозначает цикл текущего набора сообщений о местоположении, которые готовы для посылки процессору 340 объединения для разрешения конфликтов, последний набор сообщений о местоположении, готовых к разрешению, последний объект расширения определения местоположения для передачи процессору 340 объединения и любое текущее сообщение о местоположении, которое может быть распознано распознавателем 408. В одном варианте осуществления определение того, какие сообщения о местоположении должны быть переданы от главного распознавателя 336 к процессору 340 объединения, осуществляется в соответствии с отсчетом счетчика. В этом варианте осуществления счетчик позволяет избежать посылки устаревших данных к главному распознавателю 336. Устаревшие данные могут быть помечены как относящиеся к более старому циклу.
В одном варианте осуществления обеспечивается то, что «снимок» (отображение статистического состояния набора данных), представляющий интерпретацию главного распознавателя 336 определения местоположения компьютера, доступен в любое время. Такой снимок представляет данные, которые готовы к передаче к процессору 340 объединения в данный момент времени. Каждое сообщение о местоположении идентифицирует набор сообщений о местоположении, которые генерирует соответствующий провайдер 402. Сообщения о местоположении могут также генерироваться косвенным образом из других сообщений о местоположении, и в этом случае может быть конфигурирован указатель для связывания сообщений о местоположении вместе.
Таблица 1
Ключ
Значение
Распознаватель 1
Распознавание:LСообщение2Последнее: LСообщение1
Распознаватель 2
Распознавание: LСообщение2Последнее: LСообщение2
Распознаватель 3
Распознавание: LСообщение1Последнее: LСообщение3
Согласно Таблице 1, примерная структура данных, связанная с главным распознавателем 336, иллюстрирует распознаватели 408 и соответствующие им значения. Как показано, последнее сообщение о местоположении поддерживается, будучи обрабатываемым каждым распознавателем 408. В другом варианте осуществления сообщения о местоположении упорядочены в иерархическую структуру данных.
Фиг. 7 иллюстрирует диаграмму состояний соответственно возможному варианту осуществления главного распознавателя 336. Диаграмма состояний показывает инициирование 702 главного распознавателя. Главный распознаватель 336 ожидает уведомления от кэша 334, как показано линией 704. После приема уведомления в узле 703 главный распознаватель 336 извлекает сообщения о местоположении, как показано линией 706. Главный распознаватель 336 проверяет управляющую программу 412 сменных модулей 412 на наличие данных. При их готовности главный распознаватель 336 извлекает данные и проверяет кэш 334 на наличие согласования данных. В отсутствие согласования данных главный распознаватель 336 проверяет распознаватели и перезаписывает устаревшие сообщения, как показано линией 708.
Узел 709 указывает начало определения того, может ли распознаватель 408 распознать сообщение о местоположении. Если какой-либо распознаватель может распознать сообщение (линия 710), диаграмма состояний переходит к узлу 71. Если ни один распознаватель, кэш 334 или агент 332 пользователя не может распознать сообщение, то главный распознаватель 336 осуществляет запись в процессор 340 объединения (линия 712). Узел 715 представляет запись в процессор 340 объединения. После записи в процессор 340 объединения процесс повторяется, как показано линией 713. В узле 711, если число итераций меньше, чем предельное значение “n”, то сообщения посылаются распознавателям 408 с запуском таймера и приращением отсчета счетчика, как показано линией 716. В узле 719 принимаются уведомления от распознавателей 408, и осуществляются записи местоположений, как показано линией 718.
Распознаватели
Как пояснено выше, распознаватели 408 извлекают информацию о местоположении из главного распознавателя 336. Распознаватели 408 могут быть конфигурированы для включения обогащенной информации в сообщения о местоположении и посылки обновленных сообщений о местоположении назад к главному распознавателю 336. Распознаватели должны иметь возможность оценивать услугу 210 определения местоположения с точки зрения типов данных местоположения, которые распознаватели способны распознать после инсталляции. Распознаватель 408 конфигурируется для распознавания определенного типа данных. Если распознаватель 408 способен отыскать информацию, относящуюся к этому типу данных, то этот распознаватель направляет данные в главный распознаватель 336 в виде одного или нескольких сообщений о местоположении.
В одном варианте осуществления распознаватели 408 осуществляют информационный обмен с одним или более источником или источниками для преобразования информации. Распознаватели 408 также осуществляют информационный обмен с кэшем данных от источников. В одном варианте осуществления распознаватели 408 следуют алгоритму, который определяет, могут ли распознаватели 408 или они должны контактировать с источниками данных. Распознаватели 408 также имеют возможность обеспечивать структуры данных, адресуемые услугой 210 определения местоположения, такие как список сообщений о местоположении, которые могут быть преобразованы, который может быть специфическим для конкретного распознавателя. Другие структуры данных в распознавателе включают в себя идентификацию сообщения, которое в текущий момент преобразуется, и любых преобразованных объектов. Соответствующая структура данных для приведения в списке сообщений о местоположении может быть реализована как
List[LReport]can_translate; (Список[Сообщение о местоположении]может быть преобразован)
В процессе работы распознаватель 408 ожидает уведомления от главного распознавателя 336. После уведомления сообщение о местоположении извлекается для распознавания. Распознавание обеспечивает создание сообщений о местоположении, которые возвращаются к главному распознавателю 336.
Управляющая программа (менеджер) сменных модулей
На фиг. 8А и 8В показаны диаграммы, иллюстрирующие функции управляющей программы 412 (менеджера) сменных модулей. В принципе, управляющая программа 412 сменных модулей обеспечивает взаимодействия и обмены данными между услугой 210 определения местоположения и любым зарегистрированным сменным модулем. Более конкретно, в возможном варианте осуществления управляющая программа 412 сменных модулей реализует две основных функции, включая центральное управление для взаимодействий со сменными модулями и обеспечение центральной функции прослушивания (перехвата) для перехвата уведомлений обновления от провайдеров.
В качестве центральной управляющей программы управляющая программа 412 сменных модулей является центральным компонентом, принимающим управляющие (административные) запросы пользователя от API управления (LocMgmtAPI). Управляющая программа 412 сменных модулей преобразует запросы в действия, выполняемые посредством API сменных модулей определения местоположения, которые могут предназначаться для провайдеров, распознавателей или их обоих. Роль административного управления управляющей программы 412 сменных модулей состоит в сопряжении услуги 210 определения местоположения с распознавателями и провайдерами. В одном варианте осуществления управляющая программа 412 сменных модулей поддерживает набор объектов, представляющих сменные модули провайдеров и распознавателей, которые соответствуют всем сменным модулям, зарегистрированным на данный момент. В качестве менеджера этого набора управляющая программа 412 сменных модулей несет ответственность за обеспечение списка сменных модулей, зарегистрированных в услуге 210 определения местоположения, и за регистрацию или отмену регистрации сменных модулей либо в момент запуска услуги, либо динамически по запросу пользователя/приложения; например, регистрация/отмена регистрации может осуществляться через API управления, которые могут быть реализованы как LocMgmtRegisterPlg/LocMgmtUnregisterPlg; и принятие решения о доступе приложения к конфигурации сменного модуля только для считывания или для считывания и записи; и сопряжения вызовов очереди и установки LocMgmtQuery/SetPlg и передачи данных конфигурации от и к сменным модулям.
В одном варианте осуществления управляющая программа 412 сменных модулей является контролирующим компонентом, реализованным как центральный компонент для прослушивания уведомлений о модернизации устройств, исходящих от сменных модулей провайдеров местоположения.
Внутреннее представление зарегистрированного сменного модуля описано в обобщенном виде через объект, имеющий структуру, показанную ниже в Таблице 3.
Таблица 3
class CPlugin: public CSync
{
…
protected:
//параметры сменного модуля, отображенные в реализации сменного модуля
EPLGJTYPE
m_ePlgType;
//тип сменного модуля;
LPWSTR
m_wszGuid;
//GUID (глобально уникальный идентификатор) сменного модуля
LPWSTR
m_wszBinary;
//двоичный код, реализующий сменный модуль
//параметры сменного модуля, использованные для внутреннего управления
HANDLE mJhModule; //дескриптор для модульной реализации сменного модуля
HANDLE m_hRegNotif; //дескриптор для регистрации уведомления
HANDLE m_hNtfEvent; //событие уведомления, собственное для сменного модуля
LPVOID mlpContext; //специфический контекст сменного модуля
PFNLocPIglnit m_pfnLocPlgInitialize; //обработчик инициализации сменного модуля
PFNLocPlgTerm m_pfnLocPlgTerminate; //обработчик завершения сменного модуля
PFNLocPlgQueryConfig m_pfnLocPlgQueryConfig; //обработчик «конфигурации запроса»
PFNLocPlgSetConfig m_pfnLocPlgSetConfig; //обработчик «конфигурации установки»
…
};
Структуры данных в Таблице 3 включают в себя шесть структур данных. Одной является m_ePlgType, которая обеспечивает тип перечня, идентифицирующий тип сменного модуля, либо сменный модуль провайдера определения местоположения (ePlgProvider), либо сменный модуль распознавателя (ePlgResolver). Вторая структура данных m_wszGuid уникальным образом идентифицирует сменный модуль с помощью глобально уникального идентификатора сменного модуля (GUID). GUID может быть сохранен в поле wszPlgGuid в формате L”a Q1A11' {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}” и может быть постоянно кодированным самим сменным модулем. Услуга 210 определения местоположения извлекает GUID сменного модуля в момент регистрации.
Третья структура данных m_wszBinary обеспечивает имя двоичного кода, реализующего сменный модуль. Один двоичный код может описывать множество сменных модулей, поэтому структура данных в общем случае не обеспечивает уникальную идентификацию конкретного сменного модуля.
Четвертая структура данных m_hModule обеспечивает описатель (дескриптор) для DLL (динамически подключаемой библиотеки), реализующей сменный модуль.
Пятая структура данных m_hNtfEvent обеспечивает событие уведомления, которое должно сигнализироваться сменными модулями провайдера местоположения/распознавателя всякий раз, когда чувствительные для определения местоположения данные для некоторого устройства (сообщение устройства) изменились, или всякий раз, когда логически выводятся сообщения о местоположении. Сменные модули могут создавать событие уведомления при вызове в функцию инициализации и при возврате дескриптора для данного события назад в услугу. Затем, когда сменный модуль имеет обновленное сообщение устройства/сообщение о местоположении, ему необходимо только сигнализировать об этом событии для уведомления услуги 210 определения местоположения об обновлении. Шестая структура данных m_pfnLocPlg* обеспечивает указатели на функции, экспортируемые сменным модулем. Когда создается контекст сменного модуля (либо в момент регистрации, либо в момент запуска услуги), услуга 210 определения местоположения инициализирует их с указателями на предварительно определенные функции, такие как те, которые идентифицированы в качестве API сменных модулей определения местоположения.
Сменные модули также имеют классы идентификации CProvPlugin и CResPlugin, которые идентифицируют их либо как сменный модуль распознавателя, либо как сменный модуль провайдера. Пример определения, приведенный в Таблице 4, получен из CPlugin со следующим определением.
Таблица 4
class CprovPlugin: public CPlugin
{
…
private: //private data members
//параметры сменного модуля, использованные для управления хронированием
time_t m__tmNtfThreshold; //Интервал порога уведомления
…
PFNLocProvRefreshReports m_pfnLocProvRefreshReports; //Обработчик «сообщений уведомления»
PFNLocProvReadReports m_pfnLocProvReadReports; //Обработчик «сообщений считывания»
…
};
and
class CResPlugin: public CPlugin
{
private:
PFNLocResResolveReports m_pfnLocResResolveReports; //Обработчик «сообщений распознавания»
PFNLocResReadReports m_pfnLocResReadReports; //Обработчик «сообщений считывания»
…
};
Управляющая программа 412 внутренне представлена в услуге 210 определения местоположения как объект, как описано ниже в Таблице 5.
Таблица 5
class CPluginMgr: public CSync
{
данные частного характера:
…
//отображение для сменных модулей провайдера
G2P_Map m_mapProv;
//отображение для сменных модулей распознавателя
G2 P_Map m_mapRes;
…
общедоступные данные: // элементы общедоступных данных
HANDLE m_hNtfEvent;
общедоступные данные:
…
//Инициализировать объект PluginMgr
DWORD Initialize ();
//Очистить ресурсы, использованные объектом PluginMgr
DWORD Terminate();
//Загрузить сменный модуль, снабженный GUID, и реализующий его двоичный код
DWORD LoadPlugin(LPWSTR wszGuid, LPWSTR wszBinary, PEPLG_TYPE pPlgType=NULL);
//Отменить регистрацию сменного модуля, снабженного GUID
DWORD UnloadPluginfLPWSTR wszGuid);
//Возвратить таблицу, перечисляющую все сменные модули, зарегистрированные в услуге
DWORD EnumeratePlugins(PLM_PLG_TABLE pPlgTable);
//Открыть пользовательский дескриптор для конкретного сменного модуля
DWORD OpenPlugin(LPWSTR wszGuid, DWORD dwFlags, HANDLE *phPlg);
//Закрыть пользовательский дескриптор для конкретного сменного модуля
DWORD ClosePlugin(HANDLE phPlg);
//Вывести из стека провайдеров накопленные сообщения о местоположении
DWORD PullProvReports(CReportSet & reportSet);
//Записать в стек распознавателей сообщения о местоположении
DWORD PushResReports(HANDLE hCycle, CreportSet & reportSet, BOOL & bWait);
…
общедоступные данные: //управление вызовами в Plugin Manager
//запрос конфигурации PluginMgr
DWORD QueryConfig(DWORD dwInFlags, PLM_PLGMGR pPlgMgrCfg, LPDWORD pdwOutFlags);
//установить вызов в конфигурацию PluginMgr
DWORD SetConfig(DWORD dwInFlags, PLM_PLGMGR pPlgMgrCfg, LPDWORD pdwOutFlags);
общедоступные данные://подмены
DWORD OnPluginNotify(CProvPlugin *pProvPlugin);
};
Элементы управляющей программы 412 сменных модулей включают в себя семь типов структур данных. Первый тип m_mapProv и m_mapRes является наборами всех зарегистрированных сменных модулей провайдеров и распознавателей. Наборы содержат ссылки на объекты CPlugin, каждая из которых представляет внутренним образом характеристики и интерфейсы с соответствующим Plugin (сменным модулем).
Второй тип структуры данных m_hNtfEvent обеспечивает событие уведомления для управляющей программы 412 сменных модулей. Каждый раз, когда управляющая программа 412 сменных модулей обновляет сообщения от сменных модулей провайдеров, эта структура данных посылает данное событие. Главный распознаватель 406 зарегистрирован для данного события, так что он воспринимает уведомления управляющей программы 412 сменных модулей и выводит обновленные данные при их готовности.
Третий тип структуры данных Initialize (инициализировать) Terminate (завершить) обеспечивает инициализацию и завершение обработчиков управляющей программой 412 сменных модулей.
Четвертый тип структуры данных LoadPlugin (загрузка сменного модуля), UnloadPlugin (отмена загрузки сменного модуля), OpenPlugin (открыть сменный модуль) и ClosePlugin (закрыть сменный модуль) обеспечивает административное управление обработчиками из набора зарегистрированных сменных модулей.
Пятый тип структуры данных включает в себя PullProvReports, обеспечивающий вызов разработчика главным распознавателем 416 всякий раз, когда ему необходимо получить обновленные сообщения от управляющей программы 412 сменных модулей.
Шестой тип структуры данных включает в себя PushResReport, обеспечивающий вызов разработчика главным распознавателем 406 всякий раз, когда ему необходимо отправить одно или несколько сообщений к сменным модулям распознавателей. Седьмой тип данных включает в себя QueryConfig и SetConfig, обеспечивающие управление обработчиками для управляющей программы 412 сменных модулей.
При выполнении своей функции прослушивания уведомлений управляющая программа 412 сменных модулей контролирует сигналы обновления, генерируемые сменными модулями. Уведомление обрабатывается различным образом в зависимости от типа сменного модуля, связанного с уведомлением.
В одном варианте осуществления уведомления, посланные от сменных модулей провайдера, поступающие на добровольной основе, обрабатываются управляющей программой 412 сменных модулей особым образом с учетом порогового значения частоты при приеме и/или обработке. Само пороговое значение может конфигурироваться пользователем через вызовы управления, например как LocMgmtQuery/SetPlg.
Уведомления, исходящие от сменных модулей распознавателя, генерируются в ответ на сообщения о местоположении, посланные к распознавателям услугой 210 определения местоположения, так что здесь не требуется пороговое ограничение.
Логика, используемая управляющей программой 412 сменных модулей для восприятия уведомлений провайдера и для извлечения обновленных сообщений, показана на фиг. 8А в виде конечного автомата, работающего по каждому из объектов сменных модулей провайдера для проверки порогового значения частоты.
Работа начинается с начального этапа (узла) 802, где воспринимается уведомление. Узел 804 идентифицирует инициализацию 804, то есть обработчик исходного состояния. Этот обработчик маркирует провайдера как «неинициализированный», устанавливает таймер на предварительно определенное для провайдера пороговое значение Provider.last_ntf_time<-0; и регистрируется у провайдера для получения уведомлений обновления. Уведомления направляются для записи в узел 812.
Спустя время тайм-аута, конечный автомат 800 переходит к узлу 806, который идентифицирует обработчик состояния прослушивания. Обработчик 806 состояния прослушивания устанавливает значение времени для провайдера на предварительно определенное для провайдера пороговое значение и устанавливает неинициализированных провайдеров в инициализированное состояние. Обработчик 806 состояния прослушивания затем устанавливает событие уведомления (операция Set PlgMgr Notification). Если провайдер генерирует уведомление об обновлении, конечный автомат 800 переходит к узлу 808, который идентифицирует обработчик состояния проверки. Обработчик 808 состояния проверки сбрасывает таймер провайдера и определяет, превышает ли время последнего уведомления или оно равно предварительно определенному для провайдера пороговому значению (TimeNow-Provider.last_ntf_time>=Provider.Threshold). Если это так, то есть пороговое значение частоты уведомления было проверено, и проверка прошла, то это означает, что уведомления провайдера были разнесены по времени на интервал, превышающий пороговое значение для провайдера. Если уведомления были разнесены по времени таким образом, то конечный автомат 800 направляет уведомления в узел 812. В противном случае, то есть пороговое значение частоты было проверено, и проверка дала отрицательный результат, это означает, что уведомления более близки по времени, чем пороговое значение, конфигурированное для провайдера.
В случае неуспеха проверки конечный автомат 800 предусматривает паузу 814, соответствующую обработчику состояния, который отменяет регистрацию провайдера в отношении уведомлений провайдера, и устанавливает таймер провайдера на пороговое значение, равное времени последнего уведомления (TimeNow - Provider.last_ntf_time). Спустя время тайм-аута, конечный автомат 800 переходит к узлу 816 возобновления для возобновления регистрации уведомлений провайдера. Затем конечный автомат 800 переходит к узлу 812.
Как описано выше, возобновление (узел 816), проверка (узел 808) и инициализация (узел 804) направлены все к узлу 812 извлечения данных, который идентифицирует обработчик состояния извлечения данных. Обработчик состояния извлечения данных извлекает обновленные сообщения от провайдера в соответствии с временем последнего уведомления: Provider.last_ntf_time<- TimeNow. Таким образом, если провайдер не инициализирован, то он маркируется как неинициализированный, и если нет других неинициализированных провайдеров, то устанавливается событие уведомления управляющей программы сменных модулей.
Действия, описанные со ссылкой на конечный автомат 900, защищают услугу 210 определения местоположения от ведущей к перегрузке частоты уведомления в двух специальных случаях. Более конкретно, в первом случае, в момент запуска, каждый провайдер должен генерировать уведомление обновления как часть его первоначального сбора данных от подчиненных устройств. Если эти уведомления обрабатываются безусловным образом, то это привело бы к блокировке услуги 210 определения местоположения по мере нарастающего построения ею контекста определения местоположения из каждых данных устройств. Лучшим решением, которое реализует данный конечный автомат, является ожидание того, когда время инициализации для всех зарегистрированных провайдеров достигнет их первоначального состояния, и только после этого сбор данных и сигнализация всем другим подсистемам услуги 210 определения местоположения, например распознавателям, что имеются обновленные данные. В качестве вытекающего из этого специального случая, основываясь на доверительном предположении, что провайдеры (как и любой другой сменный модуль) функционируют надлежащим образом, существует вероятность, что провайдер задержит первоначальное уведомление на такой длительный интервал, который приведет к недопустимой задержке для услуги 210 определения местоположения. Для преодоления неприемлемой задержки услуга 210 определения местоположения устанавливает тайм-аут равным пороговому значению, определенному для провайдера, при ожидании первоначального уведомления. Если этот тайм-аут (время ожидания) будет достигнут, провайдер рассматривается как инициализированный даже в отсутствие его данных, и услуга 210 определения местоположения разблокируется.
Во втором специальном случае услуга определения местоположения защищена от избыточной частоты уведомлений посредством порогового значения, специфического для каждого провайдера. Когда управляющая программа 412 сменных модулей обрабатывает уведомление провайдера, она снабжает контекст провайдера временной меткой. Если следующее уведомление будет воспринято во временном интервале, более коротком, чем допустимое пороговое значение, то управляющая программа 412 сменных модулей отменяет регистрацию от момента события уведомления провайдера и запускает таймер на время, оставшееся от порогового значения периода. Управляющая программа 412 сменных модулей извлекает самые последние сообщения от провайдера и осуществляет повторную регистрацию только для уведомлений, поступивших по истечении времени таймера. До этого момента услуга 210 определения местоположения изолирована и защищена от некорректных действий провайдера.
Несмотря на логику конечного автомата 800, разрешается любая административная операция в отношении провайдера, включая выгрузку сменного модуля и отмену регистрации.
В одном варианте осуществления управляющая программа 412 сменных модулей реализована с возможностью сохранения последнего цикла принятых сообщений провайдера. Последние сообщения провайдера включают в себя сообщения от каждого провайдера 402, ассоциированные с устройством. Управляющая программа 412 сменных модулей ответственна за передачу последних сообщений провайдеров на главный распознаватель 406. В одном варианте управляющая программа 412 сменных модулей, как описано выше со ссылкой на фиг.8А, имеет по меньшей мере один конфигурируемый параметр, связанный с временем тайм-аута для приема сообщений от провайдеров. Услуга 210 определения местоположения получает выгоду от такого тайм-аута вследствие предотвращения перегрузки услуги определения местоположения слишком большим количеством сообщений от работающих с высокой скоростью или некорректно действующих провайдеров, как описано выше. В приведенной ниже Таблице 6 показан пример организации структуры данных для сохранения последнего набора сообщений провайдера таким образом, что каждый набор сообщений индексируется провайдером и устройством.
Таблица 6
Ключ
Значение
(Провайдер 1, Устройство 1)
Установить PСообщение1
(Провайдер 1, Устройство 2)
Установить PСообщение2
(Провайдер 2, Устройство 2)
Установить PСообщение3
Согласно фиг. 8В, на этапе 810 после приема уведомления от провайдера 402, управляющая программа 412 сменных модулей запускает таймер, устанавливает приращение для цикла и записывает имеющиеся сообщения от провайдеров 402. На этапе 820 управляющая программа 412 сменных модулей сохраняет только самый последний набор сообщений о местоположении для каждой пары (провайдер, устройство). Например, со ссылкой на Таблицу 1, избыточности избегают за счет взятия только самых последних данных из конкретной пары и отбрасывания более старых данных. На этапе 830, перед истечением времени тайм-аута, если провайдер уведомляет управляющую программу 412 сменных модулей, осуществляется запись сообщений от этого провайдера. На этапе 840, после истечения времени тайм-аута, управляющая программа 412 сменных модулей выделяет записанные сообщения из кэша управляющей программы сменных модулей и записывает их в структуру данных “PLUGIN MANAGER” (управляющая программа сменных модулей).
На фиг. 9 представлена диаграмма перехода состояний, соответствующая каждому провайдеру, с которым оперирует управляющая программа 412 сменных модулей. Диаграмма 900 состояний начинается с инициализации 910. Если от провайдера принято уведомление, как показано линией 920, то управляющая программа сменных модулей в узле 912 инициирует код в управляющей программе 412 сменных модулей для записи сообщения о местоположении и начинает отсчет таймера. Линия 930 идентифицирует повторяющийся цикл уведомлений сообщений о местоположении и записи сообщений в узле 922. Линия 940 идентифицирует, что когда время установки таймера истекает, то данные записываются в узле 932 в структуру данных “PLUGIN MANAGER”. Если время установки таймера не истекло, линия 950 идентифицирует, что процесс возвращается назад в узел 912. В одном из вариантов осуществления код для записи сообщения о местоположении обеспечивает создание нового набора сообщений о местоположении для каждого устройства, для которого управляющая программа 412 сменных модулей обеспечивает хранение сообщений. Дополнительно код может быть конфигурирован для группирования всех наборов сообщений о местоположении, снабжения сообщений идентификатором, связанным с циклом, и маркировки флагом сообщений, готовых для передачи из управляющей программы 412 сменных модулей.
Средство объединения
На фиг. 10 представлена блок-схема, иллюстрирующая основные функции процессора 340 объединения. Процессор 340 объединения генерирует непротиворечивый объект местоположения, представляющий его наилучшую предварительную оценку местоположения компьютера на основе полученных сообщений о местоположении, и таких сообщений, считанных из кэша 334. Процессор 340 объединения осуществляет эту функцию с помощью процесса обработки, определяемого здесь как объединение (слияние). Объединение предусматривает разрешение конфликтов, унификацию и согласование конфликтующих сообщений.
Согласно фиг. 10, на этапе 1010 процессор 340 объединения принимает набор сообщений о местоположении и набор сообщений о местоположении, ассоциированных с упомянутым набором сообщений о местоположении. Сообщения могут быть посланы индивидуально от различных провайдеров и распознавателей, или сообщения могут быть приняты группой, например, от главного распознавателя 336. Некоторые сообщения могут вступать в конфликт друг с другом. Например, сообщения о местоположении могут дать различающиеся номера помещений, где может находиться компьютер. На этапе 1020 процессор 340 объединения разрешает эти конфликты путем применения одного или более статистических процессов обработки, например процесса голосования с взвешиванием для конфликтующих сообщений. Веса могут быть получены из предварительно определенного набора ресурсов и могут включать в себя весовой коэффициент для провайдера, весовой коэффициент для распознавателя, оценку по двойному рейтингу распознавателя, пространственную неопределенность и возраст сообщения. На этапе 1030 процессор 340 объединения объединяет сообщения путем заполнения различных полей объекта окончательно сообщенного местоположения имеющимися сообщениями о местоположении. Например, сообщения, определяющие номер помещения, используются для заполнения поля помещения, а сообщения, определяющие номер здания, используются для заполнения поля здания.
В одном варианте осуществления сообщения о местоположении принимаются процессором 340 объединения как дерево сообщений распознавателей, которые процессор 340 объединения преобразует в единое сообщение о местоположении или объект местоположения для использования прикладными программами и иными средствами вне услуги 210 определения местоположения. Единое сообщение о местоположении может быть скомпоновано в предварительно определенный формат, например Microsoft Location Format, определяемый MapPoint или иной соответствующей прикладной программой.
В одном варианте осуществления услуга 210 определения местоположения пропускает два типа сообщений на процессор 340 объединения. Один из них может представлять собой сообщение метрики, включающее в себя широту, долготу и высоту. Сообщение метрики может также включать в себя х-составляющую и у-составляющую, как в случае определения местоположения в координатах Х,Y. Сообщение другого типа, которое услуга 210 определения местоположения может направлять в процессор 340 объединения, представляет собой иерархическое сообщение, указывающее, например, этаж здания, помещение; адрес, состоящий из улицы, города, штата, страны или вселенная, галактика, солнечная система, планета и т.д. Элементы иерархического сообщения могут также быть представлены как отдельные сообщения о местоположении, которые связываются таким образом, чтобы создать или скомпоновать иерархическое сообщение в процессоре 340 объединения. Типы сообщений, передаваемых в процессор 340 объединения, принимаются посредством соответствующего направляющего прохода («воронки»), идентифицирующего тип информации, которая должна пропускаться на процессор 340 объединения, чтобы он мог объединять информацию.
В одном варианте осуществления перед передачей сообщений в процессор 340 объединения другой элемент услуги 210 определения местоположения маркирует каждый элемент в каждом сообщении или само сообщение с весами, чтобы обеспечить возможность объединения. Веса, например весовой коэффициент для провайдера, весовой коэффициент для распознавателя, оценку по разделенному рейтингу распознавателя, пространственную неопределенность и возраст сообщения, могут быть представлены как целые числа или как действительные числа в интервале от 0 до 1.
Что касается весов, весовой коэффициент провайдера, в одном варианте осуществления, представляет собой достоверность (надежность) провайдера. Более конкретно, достоверность провайдера может быть определена услугой 210 определения местоположения как вероятность того, что данный провайдер, ассоциированный с некоторым сообщением, обеспечивает корректные данные. В одном варианте осуществления достоверность провайдера определяется пользователем через пользовательский интерфейс, позволяющему пользователю понизить вес провайдеров, которые ненадежны. Например, пользователь может понизить весовой коэффициент провайдера сотового телефона, данные местоположения которого неточны.
Весовой коэффициент распознавателя может определяться достоверностью распознавателя, устанавливаемой услугой 210 определения местоположения, как то обстоятельство, что данный распознаватель, ассоциированный с некоторым сообщением, обеспечивает корректные данные. В случае множества распознавателей, связанных с сообщением, один параметр вероятности может учитывать параметры достоверности множества распознавателей.
Весовой коэффициент пространственной неопределенности может быть связан с точностью конкретного сообщения. Например, если сообщение указывает номер помещения или местоположение на основе точки доступа типа 802.11, то точка доступа охватывает примерно 100 помещений, тогда параметр пространственной неопределенности будет равен 2/100.
Весовой коэффициент, связанный с возрастом (временем существования), может отражать возрастную (временную) достоверность, которая является функцией времени. Сообщениям может придаваться меньший вес по мере старения сообщений. По мере того как сообщение устаревает, вес этого сообщения снижается. В одном варианте осуществления связанный с возрастом вес определяется применением отрицательной экспоненциальной функции времени, которая может включать в себя минимальный вес и тайм-аут, после которого сообщение не имеет весового коэффициента.
Весовой коэффициент согласно оценке по разделенному рейтингу также может быть применен к сообщениям, чтобы учитывать разделения одиночного сообщения провайдера на множество распознавателей. Например, провайдер протокола 802.11 может послать свое сообщение двум различным распознавателям, каждый из которых даст метрику (широта, долгота). Весовой коэффициент распознавателя по разделенному рейтингу в этом случае будет равен 0,5, отражая тот факт, что одно сообщение провайдера было разделено на два распознавателя. Это препятствует возможности придания одиночному сообщению избыточного весового коэффициента за счет разделения его на более чем один распознаватель.
В одном варианте осуществления для некоторых типов сообщений, таких как сообщения метрического типа, веса объединяются в единый вес путем применения перемножения весов.
1i
2i
3i
4i
i
1i
2i
3i
4i
i
i
Как показано уравнением (1), набор метрических сообщений может быть представлен применением взвешенного усреднения. Более конкретно, уравнение (1) показывает, что если для сообщения i имеются четыре веса: w, w, w, w, то процессор объединения объединяет их в один вес путем перемножения: w= w w w w. Для набора метрических сообщений, таких как (x,y), i=1K N, объединенное сообщение может представлять собой взвешенное среднее:
(1)
Для сообщений иерархических типов вместо взвешенного среднего процессор 340 объединения применяет взвешенный иерархический процесс голосования. Например, в Таблице 7 ниже приведен пример четырех иерархических сообщений. Каждое сообщение содержит элемент, обозначающий здание, помещение и этаж. Вес ассоциирован с каждым элементом каждого сообщения. Процессор 340 объединения компонует элементы из дерева сообщений. В одном варианте дерево сообщений создается в главном распознавателе 336.
Таблица 7
Сообщение
1
2
3
4
Местоположение
Здание
40(0,9)
40(0,8)
41(0,3)
40(0,9)
40
Этаж
3(0,5)
4(0,4)
1(0,7)
3(0,3)
3
Помещение
3141(0,3)
4212(0,1)
1021(0,2)
3142(0,2)
3141
Согласно Таблице 7 рассматриваются 4 сообщения, обозначенные 1-4. Взвешенное иерархическое голосование инициируется с физически наибольшего уровня иерархии. В таблице 7 наибольшим элементом является здание. Суммируются веса для каждого кандидата. Например, согласно Таблице 7, здание 40 имеет объединенный вес 0,9+0,8+0,9=2,6, что является более высоким объединенным весом, чем вес 0,3, связанный со зданием 41.
В возможном варианте осуществления, после того как наибольший уровень иерархического элемента исключен из рассмотрения, любые подуровни данного наибольшего уровня также автоматически исключаются. Так, например, после исключения здания 41, подуровни, относящиеся к зданию 41, также исключаются. Таким образом, любые этажи в здании 41 исключаются из рассмотрения при определении местоположения. Из оставшихся этажей остальные взвешенные средние значения указывают, что этаж 3 имеет наибольшую вероятность для выбора в качестве верного значения. После идентификации этажа 3 этажи 4 и 1 и любые помещения на этажах 4 и 1 исключаются из рассмотрения. Из оставшихся помещений помещение 3141 имеет более высокий рейтинг. Соответственно, местоположение, идентифицированное процессором 340 объединения, может быть указано как здание 40, этаж 3 и помещение 3141.
Процессор 340 объединения может создать таблицу, подобную Таблице 7, для каждого типа иерархии, определенной услугой 210 определения местоположения. Иерархия может иметь один или более уровней. В случае одноуровневых иерархических структур процессор 340 объединения применяет принцип голосования для определения наиболее вероятного местоположения непосредственно последнего уровня.
Услуга уведомлений
Приложение (приложения) уведомлений работает (работают) во взаимосвязи с платформой уведомлений WinFS. Приложение уведомлений определяет типы уведомлений, предписанные для некоторого приложения, когда и каким образом приложение должно уведомляться. Приложение уведомлений содержит схемы подписки, схемы уведомлений, источник событий, схему событий, правила генерации уведомлений и форматирование уведомлений.
Схема подписки определяет события, которые могут возникнуть, и в отношении которых приложению, например, такому как Outlook, желательно зарегистрироваться. Например, схема подписки на услуги определения местоположения позволит приложению Outlook зарегистрироваться на получение уведомления, когда текущее местоположение соответствует состоянию «дома». Схема уведомления определяет, какая информация направляется в приложение Outlook, когда оно получает уведомление. Например, схема уведомления может предусматривать получение приложением Outlook данных времени, даты и текущего местоположения. Источник события определяет источник произошедшего события. Событие есть нечто, что произошло, и что может представлять интерес для приложения, зарегистрировавшегося для получения уведомлений. Например, запись процессором 340 объединения нового местоположения в WinFS является событием. Источником события является WinFS.
Схема события определяет, какая информация необходима для события. Например, для события требуется время, дата и местоположение. Правила генерации уведомлений сопоставляют события со схемами подписки, чтобы убедиться в том, требуют ли приложения уведомления. Например, предположим, что текущее местоположение соответствует состоянию «дома», и приложение зарегистрировано для получения уведомления, когда местоположение соответствует состоянию «дома», тогда именно правило генерации уведомления проверяет наличие этого соответствия и формирует уведомление. Формат уведомления определяет способ, которым уведомление направляется к приложению, что является полезным для абстрагирования приложения по отношению к языку SQL (язык структурированных запросов).
Услуга 460 уведомлений может поддерживать отображение идентификаторов приложений, ассоциированных со списком местоположений. Такое отображение позволяет приложению, зарегистрированному в услуге 460 уведомлений, получать уведомления, когда объект местоположения идентифицирует местоположение, совпадающее с идентификатором приложения.
Пример структуры данных, подходящей для диспетчера (организующей программы) уведомлений, может включать в себя следующее:
Map[Application,List[Location]]registered; (Отобразить [Приложение, Список[Местоположение]]зарегистрировано
На фиг.11 представлена блок-схема, иллюстрирующая способ функционирования услуги 460 уведомления. На этапе 1102 услуга уведомления ожидает уведомления из кэша 334. В других вариантах осуществления уведомление может поступить от других компонентов услуги 210 определения местоположения, например из процессора 340 объединения или иного подобного средства. На этапе 1110 услуга 460 уведомлений получает уведомление из кэша 334. На этапе 1120 услуга 460 уведомлений извлекает объект местоположения из WinFS. На этапе 1130 принятия решения услуга 460 уведомлений проверяет структуры данных на совпадение местоположения с приложениями. Если имеются местоположения, которые совпадают с объектом местоположения, то идентифицированные приложения уведомляются на этапе 1140. Если никакие приложения не идентифицированы, то услуга 460 уведомлений переходит в состояние ожидания до момента приема другого уведомления из кэша 334 на этапе 1150.
Провайдер
Провайдеры получают специфическую для устройств информацию местоположения от датчиков, нормализуют информацию, преобразуют информацию в стандартную форму и посылают информацию в управляющую программу 412 сменных модулей. Провайдеры 402, подходящие для использования с услугой 210 определения местоположения, имеют таймер Т и последнее сообщение, полученное от каждого устройства, за которые они несут ответственность. Таймер Т может быть установлен на время, которое действует как «дроссель» (вентиль, заслонка), препятствуя перегрузке сменных модулей провайдеров и услуги 210 определения местоположения сообщениями от устройств.
В одном варианте осуществления датчики и/или провайдеры публикуют номер версии, указывающий на версию услуги 210 определения местоположения, с которой работают провайдеры/датчики. Например, GUID может идентифицировать уникальным образом датчик/провайдера. В одном варианте осуществления провайдер может быть реализован в узле со строгим именем, так что провайдер может быть надежно идентифицирован услугой 2190 определения местоположения.
Провайдеры 402 также сохраняют последнее сообщение, полученное от каждого устройства, для проверки того, не произошло ли значительное изменение в воспринимаемом местоположении. Если это так, то провайдер уведомляет управляющую программу 412 сменных модулей. Пример структуры данных для поддержки данных у провайдера показан ниже:
Map[Device,Device Report] LastReport (Отображние[Устройство, Сообщение Устройства] ПоследнееСообщение
Согласно фиг. 12 процесс, выполняемый провайдером 402, описан ниже более детально. Более конкретно, на этапе 1210 обеспечивается, что когда уведомление от датчика поступает в первый раз, провайдер извлекает это сообщение. Провайдер сохраняет это сообщение в соответствующей структуре данных. На этапе 1220 провайдер затем преобразует это сообщение в сообщение (сообщения) о местоположении. Затем на этапе 1230 провайдер посылает сообщение (сообщения) о местоположении в управляющую программу 412 сменных модулей и запускает таймер Т.
На этапе 1240 принятия решения определяется, истекло ли время отсчета таймера Т. Если нет, и поступает уведомление от датчика, то провайдер игнорирует это сообщение на этапе 1250. Если да, то есть время отсчета таймера истекло, то если поступает уведомление от датчика, то провайдер извлекает это сообщение на этапе 1260. На этапе 1270 провайдер сравнивает сообщение с последним сообщением, полученным от данного датчика. На этапе 1272 принятия решения обеспечивается определение того, произошло ли значительное изменение. На этапе 1280 обеспечивается то, что если имело место значительное изменение, то значение “NeedToSend” («необходимо послать») устанавливается на «истинно», в противном случае, на этапе 1290, значение “NeedToSend” устанавливается на «ложно». Если значение “NeedToSend” установлено на «истинно», то на этапе 1292 обеспечивается посылка сообщения и сброс таймера. Если значение “NeedToSend” установлено на «ложно», то на этапе 1294 осуществляется ожидание следующего уведомления от датчика.
Структуры данных
Как очевидно для специалистов в данной области техники на основе приведенного раскрытия, имеется множество структур данных для получения выгод от использования услуги 210 определения местоположения. Многие дополнительные или комбинированные структуры данных входят в объем представленных в настоящем описании вариантов осуществления изобретения. Приведенные для примера форматы данных и структуры данных могут включать в себя следующие: Сообщение о местоположении (LReport); Сбор сообщений о местоположении (ColLReport); Объект местоположения (Location); Расширенный объект местоположения (LocationEX).
Сообщение о местоположении может представлять собой сообщение, генерируемое сменными модулями 310” провайдеров. Сообщение о местоположении может представлять автономный фрагмент информации, так что если провайдер имеет информацию о более чем одном датчике, провайдер может генерировать более одного сообщения о местоположении. В одном варианте осуществления сообщения о местоположении включают в себя структуру данных с данными относительно конфиденциальности (доверительности), идентификатор сообщения и тип сообщения. В одном варианте осуществления услуга 210 определения местоположения требует от провайдера представить внутреннее сообщение о местоположении, унаследованное из сообщения о местоположении. Внутреннее сообщение о местоположении может включать в себя идентификатор, NDMediaType (необнаруженный тип носителя), FunnelType (тип направляющего прохода («воронки»)) и один или несколько весовых коэффициентов процессора объединения.
Соответственно сообщению о местоположении, другая структура данных является набором сообщений о местоположениях. Совокупность сообщений о местоположении пригодна для использования распознавателями 408, которые генерируют одно или более сообщений для каждого принятого сообщения о местоположении. Структура данных SetLReport используется для представления того, что вырабатывают распознаватели. Примерная структура данных может быть структурирована следующим образом:
typedefSetLReport=Set{LReport}
Структура данных, описанная выше, связанная с различными компонентами услуги 210 определения местоположения, является объектом местоположения. Объект местоположения, как описано выше, генерируется процессором 430 объединения как часть процесса объединения. Приложения, конфигурированные для соответствия услуге 210 определения местоположения, должны использовать объект местоположения, который является совокупностью сообщений о местоположении, для определения местоположения компьютера, исполняющего услугу. В одном варианте осуществления эта совокупность включает в себя положение, адрес, иерархическое положение и метаданные.
В одном варианте осуществления сообщения о местоположении включают в себя два типа сообщений, сообщения приложения о местоположении и внутренние сообщения о местоположении. Внутренние сообщения о местоположении унаследованы из сообщений о местоположении. Различие между внутренними сообщениями о местоположении и сообщениями приложения о местоположении состоит в том, что внутренние сообщения о местоположении конфигурируются для использования процессором объединения. Внутренние сообщения о местоположении могут быть сформированы процессором 340 объединения, провайдерами 402 и распознавателями 408. Сообщения приложения о местоположении конфигурированы для использования приложением. Как таковые, сообщения приложения о местоположении являются независимыми от данных, требующихся процессору объединения, таких как веса объединения и тип направляющего прохода. Объект местоположения для приложения включает в себя совокупность сообщений приложения о местоположении. В одном варианте осуществления расширенный объект может представлять собой совокупность внутренних сообщений о местоположении; и объект местоположения может быть хорошо определенной совокупностью сообщений приложений о местоположении, как описано выше. Расширенный объект местоположения может содержать любую совокупность внутренних сообщений о местоположении, касающихся текущего местоположения пользователя.
Согласно фиг. 4, множество API позволяют услуге 210 определения местоположения взаимодействовать с приложениями сменными модулями и внутренними компонентами в услуге 210 определения местоположения. Один API, описанный выше, представляет собой API 420 управления определением местоположения (LocMgmt). API 420 управления определением местоположения позволяет приложениям конфигурировать сменные модули, такие как сменные модули 408 распознавателей, кэш 334, главный распознаватель 336 и процессор 340 объединения. LocMgmt 420 обеспечивает функции, приведенные ниже, позволяющие конфигурировать сменные модули. В одном варианте осуществления LocMgmt 420 следует модели обработки файлов. Поэтому в данном варианте осуществления открытие сменного модуля вызывает создание описателя (дескриптора) создаваемого сменного модуля. Только один дескриптор для записи-считывания может быть открыт на сменном модуле в любой момент времени, но множество дескрипторов могут быть открыты для считывания одновременно. Сменный модуль должен быть открыт, прежде чем будет выполняться считывание и запись. Закрытие сменного модуля закрывает дескриптор для сменного модуля.
Зарегистрировать сменный модуль в услуге определения местоположения
Входные параметры: GUID сменного модуля, Имя сменного модуля
Перечислить все имеющиеся сменные модули
Выходные параметры: список всех сменных модулей с их GUID, именем и типом
Открыть дескриптор для сменного модуля для считывания и записи информации конфигурации
Входные параметры: GUID сменного модуля, считывание или запись
Выходные параметры: дескриптор для сменного модуля
Считать параметры из открытого сменного модуля
Входные параметры: дескриптор для сменного модуля
Выходные параметры: параметры сменного модуля, успех или неуспех
Записать параметры в открытый сменный модуль
Входные параметры: дескриптор для сменного модуля, параметры сменного модуля
Выходные параметры: успех или неуспех
Закрыть дескриптор для сменного модуля
Входные параметры: дескриптор для сменного модуля
Отменить регистрацию сменного модуля в услуге
Входные параметры: дескриптор для сменного модуля
Другая функция API 420 LocMgmt заключается в обеспечении функций, приведенных ниже, для конфигурирования кэша 334. Как для модели, использованной со сменными модулями, API может следовать модели типа обработки файла:
Открыть дескриптор в кэш местоположения для считывания и записи информации конфигурации
Входные параметры: считывание или запись
Выходные параметры: дескриптор для кэша
Считать параметры из кэша
Входные параметры: дескриптор для кэша
Выходные параметры: параметры кэша, успех или неуспех
Записать параметры в кэш
Входные параметры: дескриптор для кэша, параметры кэша
Выходные параметры: успех или неуспех
Закрыть дескриптор для кэша
Входные параметры: дескриптор для кэша
API 420 LocMgmt также обеспечивает функции, приведенные ниже, для конфигурирования главного распознавателя 336. API может конфигурироваться, чтобы следовать модели обработки файла:
Открыть дескриптор для главного распознавателя для считывания и записи информации конфигурации
Входные параметры: считывание или запись
Выходные параметры: дескриптор для главного распознавателя
Считать параметры из главного распознавателя
Входные параметры: дескриптор для главного распознавателя
Выходные параметры: параметры главного распознавателя, успех или неуспех
Записать параметры в главный распознаватель
Входные параметры: дескриптор для главного распознавателя, параметры главного распознавателя
Выходные параметры: успех или неуспех
Закрыть дескриптор для главного распознавателя
Входные параметры: дескриптор для главного распознавателя
Определяемые пользователем параметры
В одном варианте осуществления услуга 210 определения местоположения размещена на пользовательском компьютере, который может представлять собой мобильное устройство или стационарное устройство. Если услуга 210 определения местоположения связана с пользователем, то услуга 210 определения местоположения может быть конфигурирована для кэширования местоположений, которые представляют интерес для пользователя. Например, пользователь может быть соединен с сетью и может иметь доступ к базе данных информации местоположений, такой как активный каталог. Также пользователь может быть локальной базой данных. В одном варианте услуга 210 определения местоположения использует параметры, установленные по умолчанию, и пользователь может выбрать вариант изменить параметры услуги.
Более конкретно, пользователь может выбрать вариант изменить параметры услуги 210 определения местоположения, такие как достоверность (надежность) для сменных модулей 408 провайдеров или сменных модулей 402 распознавателей. Альтернативно, услуга 210 определения местоположения может быть выполнена с возможностью использования обучающего алгоритма, такого как система управления с обратной связью, которая использует статистический анализ для определения точности по времени различных провайдеров 310 и распознавателей 408. В зависимости от конфигурации услуги 210 определения местоположения для различных сменных модулей может быть установлено присущее им смещение или услуга 210 определения местоположения может приоритизировать информацию со сменных модулей на основе точности, пользовательских привилегий и времени отклика.
В одном варианте осуществления услуга 210 определения местоположения может быть конфигурирована для формирования различной информации для различных приложений. Например, приложение может быть конфигурировано для приема только специфической для датчиков информации.
Защищенность
Другой вариант осуществления направлен на обеспечение защищенности услуги информированности о местоположении, такой как услуга 210 определения местоположения. Более конкретно, услуга 210 определения местоположения может включать в себя конфигурирование и связанное с этим программирование, чтобы исключить или иным образом решить проблемы защищенности.
Для сведения, термином «спуфинг» здесь называется действие получения доступа путем обмана приемника данных, что передатчиком данных является не та сторона, которой он действительно является. В одном варианте осуществления источник, из которого был получен сам сменный модуль, может быть обманут, и отдельные пакеты данных, которые принимает сменный модуль, могут быть ложными. Термин «фальсификация» здесь обозначает действие, направленное на изменение данных, принимаемых приемником. Данные, принимаемые сменными модулями, потенциально могут быть фальсифицированы хакером как в проводном, так и в беспроводном соединении. Термином «аннулирование» (отказ) здесь обозначаются случаи, в которых передатчик позже отказывается от того, что данные были переданы. Таким образом, источник может снабдить сменные модули данными, которые позже аннулируются, как связанные с таким источником. Раскрытие информации здесь относится к действию раскрытия информации непредусмотренным сторонам. Таким образом, источник может отслеживать местоположение пользователя на основе запросов, сделанных сменными модулями. Источник может послать информацию о местоположении пользователя или запросы от соответствующих сменных модулей к другим источникам. Местоположения, сохраненные пользователем, могут стать доступными для других пользователей.
Отрицание (отказ, отклонение, недопущение) предоставления услуги здесь относится к воспрепятствованию легитимным сторонам использовать услугу такую, как услуга 210 определения местоположения. Например, приложения могут перегрузить услугу 210 определения местоположения запросами информации. Приложения 220 могут перегрузить услугу 210 определения местоположения регистрациями для уведомлений при изменении местоположения; пользователь может сохранить более соответствующего количества данных местоположения; сменные модули могут перегрузить услугу 210 определения местоположения данными; хакер может скопировать данные, посланные в сменный модуль, и непрерывно посылать данные в сменный модуль, тем самым приводя к перегрузке сменного модуля и услуги 210 определения местоположения.
Повышение привилегии относится здесь к исполнению лицом, пытающимся проникнуть в защищенную систему, команды с привилегией другого пользователя. Переполнения буфера обуславливают данные, получаемые сменными модулями, которые забрасываются исполняемыми командами, подлежащими исполнению с той же привилегией, что и услуга. Новый сменный модуль может предумышленно или непреднамеренно перезаписать старые сменные модули.
Услуга 210 определения местоположения конфигурируется для защиты доступа к информации о местоположении пользователя. Информация о местоположении рассматривается как персональная информация, и ряд вариантов осуществления обеспечивают защиту информации от раскрытия недоверительным сторонам.
Варианты осуществления изобретения направлены на защиту пяти точек от несанкционированного проникновения, включая источники информации местоположения, услуги поиска, пользовательский ввод, API приложений и интерфейсы со сменными модулями.
Относительно защиты источников информации о местоположении, источник информации о местоположении является органом, который обеспечивает провайдеров информацией о местоположении. Такие источники могут включать в себя, например, GPS, 802.11, GPRS и NLA.
Услуга 210 определения местоположения является расширяемой для привлечения множества источников информации о местоположении и для обеспечения возможности пользователю регулировать степень доверия к источникам. Кроме того, услуга 210 определения местоположения может представлять собой защищенную услугу на платформе Windows.Net, тем самым обеспечивая стабильность.
Услуга 210 определения местоположения позволяет провайдеру шифровать свои данные для решения вопросов защиты, а также передавать полномочия областям приложений, например, чтобы разрешить сменным модулям третьей стороны исполняться в области приложения, которая не имеет сетевого доступа. Такие области приложений могут быть созданы с использованием программы Common Language Runtime (рабочий цикл на универсальном языке)(CLR) платформы Windows.Net, что обеспечивает систему совместно используемого типа, среду промежуточного языка и динамического исполнения для реализации языков множества источников.
Услуга поиска представляет собой услугу, которую распознаватель использует для получения большей информации о местоположении на основе предварительной информации провайдера или распознавателя. Основными услугами поиска информации о местоположении могут являться MapPoint, Active Directory (Активный каталог) и WinFS.
Услуга 210 определения местоположения имеет распознаватель обобщенных web-услуг, который поддерживает любую вычислительную машину базы данных. Более конкретно, в одном варианте осуществления услуга 210 определения местоположения конфигурирована для взаимодействия с платформой конфиденциальной информации Windows (WPP). WPP представляет собой технологическую структуру, которая позволяет разработчикам снабжать извещениями и вариантами выбора пользовательскую информацию, которая затрагивает некоторое приложение, web-страницу или услугу. Структура WPP может быть реализована как базовый компонент распределенной системы принудительного применения на операционной системе, обеспечивающей механизм надзора для таких компонентов системы, как Watson, SQM (Управление качеством услуги), Fusion (Слияние) и уровень использования сети, для проверки привилегий пользователя перед продолжением операций, потенциально влияющих на конфиденциальность. Базовая структура управления стратегией/соглашением поддерживается дополнительной компонентной моделью для удаления архивной информации пользователя из различных аспектов операционной системы. На этом базовом уровне программирования WPP обеспечивает согласованный набор конструкций пользовательского интерфейса для уведомлений о конфиденциальности, получения согласия пользователя, визуализации уведомлений о конфиденциальности в машиночитаемых структурах конфиденциальной информации. Таким образом, в одном варианте осуществления структура WPP может быть реализована для обеспечения возможности получения информации о стратегии конфиденциальности вычислительных машин баз данных и сравнения с привилегиями пользователя. Конфликт приводит к выводу пользовательского интерфейса для получения согласия в целях предупреждения пользователя. Если имеет место конфликт, то пользовательский интерфейс для получения согласия может быть конфигурирован с возможностью его высвечивания на экране для предупреждения пользователя. После этого пользователь может выбрать вариант установить исключение для web-услуги.
В одном варианте осуществления услуга 210 определения местоположения использует WPP для получения стратегии конфиденциальности распознавателей и сравнения с пользовательскими привилегиями. В случае конфликта может быть предусмотрено высвечивание пользовательского интерфейса для получения согласия в целях предупреждения пользователя. Пользователь может сделать выбор для установки исключения для распознавателя.
Услуга 210 определения местоположения имеет централизованный кэш 332, управляемый услугой 210 определения местоположения, который защищает услугу от некоторых попыток взлома защиты. Кроме того, услуга 210 определения местоположения может быть конфигурирована для запрета распознавателям на получение полного контекста текущего местоположения пользователя.
Услуга 210 определения местоположения может быть конфигурирована для записи, когда объекты местоположения изменились, и кем обусловлено изменение; и когда и кем использовались интерфейсы прикладного программирования API 418 местоположения пользователя, API 416 уведомления о местоположении и другие API, используемые приложением; и когда провайдеры и распознаватели выдавали информацию о местоположении. Эти меры позволяют защитить услугу определения местоположения от некоторых попыток взлома защиты.
Услуга 210 определения местоположения может быть конфигурирована для работы с WPP для получения стратегий конфиденциальности приложений и сравнения их с пользовательскими привилегиями. Любой конфликт может привести к отображению пользовательского интерфейса для получения согласия в целях предупреждения пользователя. После этого пользователь может сделать выбор установить исключение. Программа CLR может быть использована для идентификации защищенным образом приложения. В одном варианте осуществления только администраторам машин разрешено регистрировать или отменять регистрацию приложений в услуге 210 определения местоположения. Кроме того, услуга 210 определения местоположения может быть конфигурирована для облегчения выявления того, какие приложения используют информацию о местоположении.
В одном варианте осуществления любой сменный модуль, связанный с услугой 210 определения местоположения, конфигурируется для подсчета принимаемых сообщений. Если число сообщений, принятых в течение некоторого временного интервала, слишком велико, то сменный модуль может конфигурироваться для остановки перехвата сообщений. Спустя некоторый интервал времени сменный модуль может перезапуститься для продолжения перехвата сообщений. Если число сообщений по-прежнему велико, то сменный модуль может выполнить экспоненциальный откат (возврат к предыдущему состоянию). Более конкретно, как описано выше для управляющей программы 412 сменных модулей, каждый сменный модуль может быть конфигурирован, чтобы иметь возможность подобных проверок и уравновешивания. Сменные модули также могут быть конфигурированы для проверки информации, которую они принимают, для выявления наличия в информации специальных символов, которые могут быть использованы для формирования исполняемого кода.
Средства защиты услуги 210 определения местоположения также могут включать в себя средства, адаптированные для приложений 220. Например, услуга 210 определения местоположения может быть конфигурирована для включения в себя «заслонок» по ряду запросов, которые прикладная программа может сделать в отношении текущего местоположения и регистрации для уведомлений. Кроме того, может поддерживаться список управления доступом пользователя в качестве дополнительной структуры данных для предотвращения возможности неправомочным пользователям изменять параметры услуги, считывать или перезаписывать информацию, или использовать информацию профиля других пользователей, а также считывать, перезаписывать или использовать данные местоположений, сохраненные другими пользователями.
Ввиду многих возможных вариантов осуществления, к которым могут быть применены принципы настоящего изобретения, следует иметь в виду, что варианты осуществления, представленные в настоящем описании со ссылками на чертежи, носят только иллюстративный характер и не должны трактоваться как ограничивающие объем изобретения. Например, специалистам в данной области техники должно быть понятно, что элементы в проиллюстрированных вариантах осуществления, реализованные программным обеспечением, также могут быть реализованы аппаратными средствами и наоборот, или что проиллюстрированный вариант осуществления может быть модифицирован по форме и в деталях без отклонения от сущности изобретения. Поэтому изобретение, как оно описано во всех приведенных вариантах осуществления, включает в себя все такие варианты, которые могут охватываться объемом пунктов формулы изобретения и их эквивалентов.