Уровень техники
[0001] Пользователи имеют доступ к широкому диапазону приложений из широкого множества различных источников. Например, пользователи традиционно получали приложение из "существующего в реальности" магазина на машиночитаемом носителе информации (таком как оптический диск) и затем устанавливали приложение на пользовательском домашнем вычислительном устройстве. Эти приложения были, как правило, предоставлены уважаемыми разработчиками и, таким образом, рассматривались как заслуживающие доверия.
[0002] Затем были разработаны последующие технологии, в которых пользователь осуществлял доступ к сети, чтобы находить и устанавливать приложение. Например, магазин приложений может быть сделан доступным для доступа через Интернет, чтобы находить и покупать приложения. В некоторых случаях магазин приложений может включать в себя множество приложений, которые могут происходить от множества различных разработчиков. Вследствие большого количества приложений, которые могут быть сделаны доступными, и расхождений между разработчиками, которые могут предоставлять их, функциональность приложений может иметь различающиеся степени доверия. Например, приложения могут иметь неполноценную функциональность, могут быть написаны злоумышленниками и т.п.
Сущность изобретения
[0003] Это краткое изложение сущности изобретения предусмотрено для того, чтобы в упрощенной форме представить подборку идей, которые дополнительно описываются ниже в подробном описании. Это краткое изложение сущности изобретения не имеет намерением ни идентифицировать ключевые признаки или важнейшие признаки заявляемого изобретения, ни использоваться так, чтобы ограничивать объем заявляемого изобретения.
[0004] В соответствии с одним или более аспектами, запрос принимается в модуле-посреднике (брокере) вычислительного устройства. Принятый запрос является запросом от изолированного приложения в вычислительном устройстве на доступ к одному или более элементам данных источника элементов данных. Выполняется проверка относительно того, к какому (при наличии таковых) из одного или более элементов данных источника элементов данных изолированное приложение авторизовано осуществлять доступ. Формируются один или более объектов элементов хранилища данных, которые представляют эти один или более элементов данных, к которым изолированное приложение авторизовано осуществлять доступ, и сформированные объекты элементов хранилища данных возвращаются изолированному приложению. Однако, если изолированное приложение не авторизовано, чтобы осуществлять доступ к одному из одного или более элементов, тогда принятый запрос отклоняется.
[0005] В соответствии с одним или более аспектами, приложение вызывает интерфейс прикладного программирования (API) модуля-посредника, чтобы запрашивать доступ к одному или более элементам данных источника элементов данных. Приложение является изолированным приложением, которому ограничен любой доступ к источнику элементов данных, кроме доступа через модуль-посредник. По меньшей мере, один объект элемента хранилища данных принимается от модуля-посредника, каждый объект элемента хранилища данных содержит те из одного или более элементов данных, к которым изолированное приложение авторизовано осуществлять доступ.
Краткое описание чертежей
[0006] Подробное описание описывается со ссылкой на сопровождающие чертежи. На чертежах крайняя левая цифра(ы) ссылочного номера идентифицирует чертеж, на котором ссылочный номер появляется впервые. Использование одинаковых ссылочных номеров в различных примерах в описании и на чертежах может указывать аналогичные или идентичные элементы.
[0007] Фиг. 1 иллюстрирует примерную систему, реализующую технологии опосредованного доступа к элементам данных для изолированных приложений, обсуждаемые в данном документе.
[0008] Фиг. 2 иллюстрирует другую примерную систему, реализующую технологии опосредованного доступа к элементам данных для изолированных приложений, обсуждаемые в данном документе.
[0009] Фиг. 3 иллюстрирует поток данных опосредованного доступа к элементам данных для изолированных приложений в дополнительных подробностях в соответствии с одним или более вариантами осуществления.
[0010] Фиг. 4 иллюстрирует процедуру для реализации опосредованного доступа к элементам данных для изолированных приложений в соответствии с одним или более вариантами осуществления.
[0011] Фиг. 5 иллюстрирует процедуру для реализации опосредованного доступа к элементам данных для изолированных приложений в соответствии с одним или более вариантами осуществления.
Подробное описание изобретения
Обзор
[0012] Опосредованный доступ к элементам данных для изолированных приложений обсуждается в данном документе. Модуль-посредник расположен между изолированным приложением и одним или более источниками элементов данных (например, файловой системой, устройством, другим приложением). Чтобы осуществлять доступ к элементам данных из источника элементов данных, изолированное приложение запрашивает доступ к элементу данных, вызывая интерфейс прикладного программирования (API) модуля-посредника. Если изолированному приложению разрешен доступ к запрошенному элементу данных, тогда модуль-посредник осуществляет доступ к запрошенному элементу данных и возвращает изолированному приложению объект, который является представлением запрошенного элемента данных. Если изолированному приложению не разрешен доступ к запрошенному элементу данных, тогда посредник запрещает доступ к запрошенному элементу данных и не возвращает изолированному приложению объект, который является представлением запрошенного элемента данных. Модуль-посредник и API обсуждаются в дополнительных деталях ниже.
[0013] В последующем обсуждении сначала описывается примерная система, которая функционирует, чтобы выполнять технологии, описанные в данном документе. Затем описываются примерные процедуры, которые функционируют в примерной системе, а также в других системах. Аналогично, примерная система не ограничена выполнением примерных процедур.
Примерная система
[0014] Фиг. 1 иллюстрирует примерную систему 100, реализующую технологии опосредованного доступа к элементам данных для изолированных приложений, обсуждаемые в данном документе. Иллюстрированная система 100 включает в себя вычислительное устройство 102, которое может быть сконфигурировано множеством способов. Например, вычислительное устройство 102 может быть сконфигурировано как компьютер, который способен передавать данные по сети 104, такой как настольный компьютер, планшет или электронная записная книжка, мобильная станция, развлекательное оборудование, телевизионная приставка, соединенная с возможностью связи с устройством отображения, телевизор или другое устройство отображения, сотовый или другой беспроводной телефон, игровая консоль и т.д.
[0015] Вычислительное устройство 102 может варьироваться в диапазоне от мощных устройств с большими объемами памяти и мощными процессорами (например, персональные компьютеры, игровые консоли) до маломощных устройств с ограниченными ресурсами памяти и/или обработки (например, традиционные телевизионные приставки, карманные игровые консоли). Дополнительно, хотя показано одно вычислительное устройство 102, вычислительное устройство 102 может представлять множество различных устройств, таких как множество серверов, используемых организацией для выполнения операций, сочетание пульта дистанционного управления и телевизионной приставки, устройство захвата изображения (например, камера) и игровая консоль, сконфигурированная, чтобы захватывать жесты, и т.д.
[0016] Вычислительное устройство 102 может также включать в себя средство (например, программное обеспечение), которое инструктирует аппаратуре вычислительного устройства 102 выполнять операции, например, конфигурирует процессоры, функциональные блоки и т.д. Например, вычислительное устройство 102 может включать в себя машиночитаемый носитель, который может быть сконфигурирован, чтобы хранить инструкции, которые инструктируют вычислительному устройству, а более конкретно, аппаратным средствам вычислительного устройства 102, выполнять операции. Таким образом, инструкции функционируют, чтобы конфигурировать аппаратные средства для выполнения операций и, таким образом, приводят в результате к преобразованию аппаратных средств для выполнения операций. Инструкции могут быть предоставлены посредством машиночитаемого носителя вычислительному устройству 102 через множество различных конфигураций.
[0017] Одна такая конфигурация машиночитаемого носителя является несущей средой сигнала и, таким образом, сконфигурирована, чтобы передавать инструкции (например, как несущую волну) аппаратным средствам вычислительного устройства 102, как например, через сеть 104. Машиночитаемый носитель может также быть сконфигурирован как машиночитаемый носитель информации, и, таким образом, не является несущей средой сигнала. Примеры машиночитаемого носителя информации включают в себя оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), оптические диски (например, DVD или CD), флэш-память, запоминающее устройство на жестком диске и другие запоминающие устройства, которые могут использовать, магнитные, оптические и другие технологии для хранения инструкций и других данных.
[0018] Сеть 104 может предполагать множество различных конфигураций. Например, сеть 104 может включать в себя Интернет, глобальную вычислительную сеть (WAN), локальную вычислительную сеть (LAN), персональную вычислительную сеть (PAN), беспроводную сеть, телефонную сеть общего пользования, интрасеть, их комбинации и т.д. Дополнительно, хотя показана одна сеть 104, сеть 104 может быть сконфигурирована, чтобы включать в себя несколько сетей.
[0019] Вычислительное устройство 102 проиллюстрировано как включающее в себя модуль 106 управления элементами данных. Модуль 106 управления элементами данных представляет функциональность, чтобы управлять доступом к одному или более источникам 108 и/или 110 элементов данных. Модуль 106 управления элементами данных может быть реализован множеством способов, таким как автономное приложение, как часть операционной системы вычислительного устройства 102 и т.д.
[0020] Источник 108 элементов данных применяет технологии для организации и хранения множества различных типов элементов 112 данных. Элемент данных ссылается на данные или контент, которые могут быть запрошены приложением. Например, элемент данных может быть файлом, папкой или каталогом, унифицированным идентификатором ресурса (URI), унифицированным указателем ресурса (URL) или другой ссылкой, сжатыми файлами или коллекциями файлов (например, zip-файлами или cab-файлами), файлом, поддерживаемым (или контентом, поддерживаемым другим образом) другим приложением, и т.д. Источник 108 элементов данных может быть реализован множеством различных способов, применяющих различные технологии для организации и хранения элементов данных. Например, источник 108 элементов данных может быть файловой системой на вычислительном устройстве 102, системой хранения на вычислительном устройстве 102, другим приложением, работающем на вычислительном устройстве 102 (например, которое само управляет организацией и хранением элементов данных), базами данных и т.д. Аналогично, источник 110 элементов данных может быть реализован множеством различных способов, применяющих различные технологии для организации и хранения элементов 114 данных, к которым вычислительное устройство 102 может осуществлять доступ по сети 104. Источник 110 элементов данных может быть, например, поставщиком услуг (например, реализованным с помощью одного или более вычислительных устройств, сконфигурированных тем же и/или другими способами, что и вычислительное устройство 102), файловой системой поставщика услуг, системой хранения поставщика услуг, другим приложением, работающим у поставщика услуг, сервером мультимедиа и т.д.
[0021] Приложение 116 является одной или более программами, скриптами или другими наборами инструкций, которые работают на вычислительном устройстве 102. Приложение 116 может предполагать множество различных конфигураций, таких как развлекательное приложение (например, игра или аудио/видео проигрыватель), утилитарное приложение (например, текстовый редактор или веб-браузер), справочное приложение (например, словарь или энциклопедия) и т.п. Приложение 116 называется изолированным приложением вследствие того, что приложение 116 выполняется способом, в котором способность приложения 116 осуществлять доступ к ресурсам (например, подключенному к сети компьютеру, Интернету, модулям, устройствам, памяти, другим приложениям) вычислительного устройства 102 ограничена. Операционная система (и/или другое программное обеспечение, микропрограммное обеспечение и/или аппаратные средства) вычислительного устройства 102 предоставляют возможность приложению 116 осуществлять доступ к памяти и другим ресурсам вычислительного устройства 102, которые были назначены или иначе сделаны доступными приложению 116, но предотвращает доступ приложения 116 к другой памяти, ресурсам, и/или приложениям, работающим на вычислительном устройстве 102. Это защищает другие приложения, работающие на вычислительном устройстве от влияния приложения 116, а также защищает приложение 116 от влияния других приложений, работающих на вычислительном устройстве 102, таким образом, изолируя приложение 116 от приложений на вычислительном устройстве 102. Как часть изоляции, операционная система (и/или другое программное обеспечение, микропрограммное обеспечение и/или аппаратные средства) вычислительного устройства 102 также предотвращает доступ приложения 116 к источнику 108 элементов данных и/или источнику 110 элементов данных, кроме как через модуль 106 управления элементами данных, как обсуждается более подробно ниже.
[0022] В одном или более вариантах осуществления приложение 116 выполняется ограниченным образом посредством выполнения приложения 116 в изолированной программной среде. Хотя одно приложение 116 иллюстрировано в вычислительном устройстве 102, следует отметить, что несколько приложений могут выполняться в вычислительном устройстве 102 одновременно (каждое приложение выполняется в своей собственной изолированной программной среде).
[0023] Модуль 106 управления элементами данных дополнительно иллюстрирован как включающий в себя модуль-посредник 120 и модуль-сортировщик 122. Модуль-посредник 120 представляет функциональность модуля 106 управления элементами данных, чтобы управлять доступом приложения 116 к источнику 108 и/или 110 элементов данных. Модуль-посредник 120, например, может действовать как промежуточное звено, чтобы находить элементы 112 и/или 114 данных, запрошенные приложением 116, и предоставлять найденные элементы 112 и/или 114 данных обратно приложению 116. Приложение 116 может осуществлять доступ к элементам 112 и/или 114 данных через модуль-посредник 120, но вследствие того, что оно является изолированным приложением, в ином случае ему ограничен доступ к источнику 108 и/или 110 элементов данных (а также к элементам 112 и/или 114 в этих источниках элементов данных). Дополнительно, элементы 112 и/или 114 данных могут быть предоставлены приложению 116, и приложение 116 не должно знать о том, откуда элементы 112 и/или 114 данных были получены, например, приложение 116 может не знать пространства имен, используемого источником 108 и/или 110 элементов данных. Это позволяет приложению обрабатывать элементы данных из различных источников данных одинаковым образом, а не специальным для каждого вида источника элементов данных.
[0024] Дополнительно, модуль-посредник 120 может в необязательном порядке применять модуль-сортировщик 122, чтобы предоставлять альтернативный способ улучшения доступа к источнику 108 и/или 110 элементов данных. Модуль-сортировщик 122 предоставляет надежный способ, чтобы предоставлять возможность приложению (например, которое не имеет программного доступа к источнику 108 и/или 110 элементов данных через модуль-посредник 120) осуществлять доступ к источнику 108 и/или 110 элементов данных (а также к элементам 112 и/или 114 данных в этих источниках элементов данных).
[0025] В целом, любые из функций, описанных в данном документе, могут быть реализованы с помощью программного обеспечения, микропрограммного обеспечения (firmware), аппаратных средств (например, схемы с фиксированной логикой), ручной обработки или комбинации этих реализаций. Термины "модуль" и "функциональность", когда используются в данном документе, как правило, представляют аппаратные средства, программное обеспечение, микропрограммное обеспечение, или их комбинации. В случае программной реализации, модуль, функциональность или логика представляют инструкции и аппаратные средства, которые выполняют указанные операции посредством аппаратных средств, например, одного или более процессоров и/или функциональных блоков.
[0026] Фиг. 2 иллюстрирует примерную систему 200, реализующую технологии опосредованного доступа к элементам данных для изолированных приложений, обсуждаемые в данном документе. Система 200, как иллюстрировано, может быть реализована частично посредством модуля 106 управления элементами данных вычислительного устройства 102 на фиг. 1, чтобы выполнять технологии управления элементами данных. Например, модуль 106 управления элементами данных может быть встроен как часть операционной системы, приложение, которое выполняется вместе с операционной системой, автономное приложение и т.д. Независимо от того, куда встроен, модуль 106 управления элементами данных может применять технологии, чтобы управлять элементами данных, доступными вычислительному устройству локально и/или удаленно (например, через сеть 104 на фиг. 1).
[0027] Система 200, которая иллюстрируется, включает в себя приложение 202 (которое может быть, например, приложением 116 на фиг. 1), источником 204 элементов данных (который может быть, например, источником 108 или 110 элементов данных на фиг. 1) и элементом 206 данных (который может быть, например, элементом 112 или 114 данных на фиг. 1). В этом примере приложение 202 связывается с модулем-посредником 120 через один или более интерфейсов прикладного программирования (API) 210, предоставленных приложению 202 модулем-посредником 120, для доступа к источнику 204 элемента данных. Хотя одно приложение 202 и один источник 204 элемента данных иллюстрированы на фиг. 2, следует отметить, что система 200 может включать в себя любое число приложений 202, осуществляющих доступ к любому числу источников 204 элементов данных.
[0028] Приложение 202 может быть авторизовано осуществлять доступ к конкретным источникам элементов данных и/или конкретным местоположениям элементов данных. Эта авторизация может быть выполнена в различные моменты времени и различными способами, хотя типично выполняется прежде, чем приложение 202 запрашивает доступ к элементу 206 данных. В одном или более вариантах осуществления эта авторизация выполняется, когда приложение 202 загружается или устанавливается на вычислительном устройстве, реализующем систему 200. Например, как часть процесса загрузки или установки, пользователь может быть уведомлен о конкретных источниках элементов данных и/или конкретных местоположениях элементов данных, к которым приложение 202 желает получить доступ, и пользователь может обеспечивать ввод (например, выбор конкретной кнопки или другой части пользовательского интерфейса (UI)) относительно того, авторизовано ли приложение 202 осуществлять доступ к этим конкретным источникам элементов данных и/или конкретным местоположениям элементов данных. Альтернативно, эта авторизация может быть выполнена в другие моменты времени, например, когда приложение 202 модифицируется или обновляется, во время последующей конфигурации приложения 202 пользователем системы 200 и т.д. Независимо от того, как выполняется, система 200 поддерживает хранилище 208 авторизации, которое включает в себя запись о том, к каким источникам элементов данных и/или местоположениям элементов данных приложение 202 авторизовано осуществлять доступ. Хранилище 208 авторизации доступно модулю-посреднику 120, предоставляя возможность получать и использовать посредством модуля-посредника 120 запись о том, к каким источникам элементов данных и/или местоположениям элементов данных приложение 202 авторизовано получать доступ.
[0029] Приложение 202 может быть авторизовано осуществлять доступ к какому-либо из множества различных источников 204 элементов данных, поддерживаемых модулем-посредником 120. Например, источники элементов данных, к которым приложение 202 может быть авторизовано осуществлять доступ, могут быть файловой системой, одним или более конкретными приложениями, работающими на вычислительном устройстве, одной или более конкретными системами хранения, реализованными поставщиком услуг, и т.д.
[0030] Приложение 202 может также быть авторизовано осуществлять доступ к какому-либо из множества различных местоположений элементов данных. Различные типы местоположений элементов данных могут быть определены для различных источников элементов данных. Например, для источника элементов данных, которым является файловая система, местоположения элементов данных могут быть определены как папки или библиотеки (например, библиотека документов, библиотека музыки, библиотека видео, библиотека изображений). Библиотека ссылается на совокупность одного или более местоположений (например, папок или каталогов на одном или более устройствах), и местоположения, включенные в библиотеку, могут необязательно быть модифицированы пользователем системы 200. В качестве другого примера, для источника элементов данных, которым является приложение, местоположениями элементов данных могут быть группировки или другие совокупности элементов данных, которые определены приложением.
[0031] Модуль-посредник 120 включает в себя модуль 212 доступа к элементам данных, который представляет функциональность модуля-посредника 120, чтобы отвечать на запросы от приложения 202 для осуществления доступа к элементам данных. Множество API 210 поддерживают различные интерфейсы, которые могут быть вызваны приложением 202 для всевозможных различных типов доступа к элементам данных. Например, множество API 210 включают в себя интерфейсы, предоставляющие возможность чтения элементов данных, записи элементов данных, создания элементов данных, удаления элементов данных, модификации элементов данных, копирования элементов данных, перемещения элементов данных, переименования элементов данных, извлечения свойств элементов данных и т.д. Одни и те же интерфейсы могут быть использованы для различных источников элементов данных, абстрагируя источники элементов данных от приложения 202. Например, API, задействованные для извлечения или нумерования элементов данных, могут быть применены к нескольким источникам элементов данных, поддерживаемым модулем-посредником 120, к источникам элементов данных, поддерживаемым модулем-посредником 120, к которым приложение 202 авторизовано осуществлять доступ, и т.д. В качестве другого примера, приложение 202 не должно указывать источник элементов данных, когда вызывает API для записи или переименования элемента данных (например, источник элементов данных может быть идентифицирован в или характерен для объекта элемента хранилища данных, как обсуждается более подробно ниже).
[0032] Альтернативно, может быть включен параметр интерфейса, идентифицирующий конкретный источник элементов данных для запроса. Например, множество API 210 могут включать в себя интерфейс чтения элемента данных, используемый как для источника файловой системы, так и для источника системы хранения поставщика услуг, с параметром интерфейса считывания элемента данных, указывающим, для какого из двух источников приложение 202 запрашивает считывание элементов данных. В других альтернативах различные интерфейсы могут быть использованы для различных источников элементов данных. Например, множество API 210 могут включать в себя интерфейс чтения элемента данных файловой системы, чтобы читать элементы данных из источника файловой системы, и интерфейс чтения элемента данных поставщика услуг, чтобы читать элементы данных из источника системы хранения поставщика услуг.
[0033] Приложение 202 вызывает один или более API 210, запрашивая доступ к одному или более элементам данных (например, сохраненных посредством) источника элементов данных. При приеме запроса модуль 212 доступа к элементам данных проверяет запись об источниках элементов данных и/или местоположениях элементов данных, к которым приложение 202 авторизовано осуществлять доступ, и определяет на основе этой записи, авторизовано ли приложение 202 осуществлять доступ к запрошенному элементу или элементам данных. Если приложение 202 не авторизовано осуществлять доступ к какому-либо из запрошенных одного или более элементов данных (приложение не авторизовано осуществлять доступ ни к одному из одного или более элементов данных), тогда модуль 212 доступа к элементам данных не предоставляет запрошенный доступ. Например, если приложение 202 запрашивает доступ к файлу в библиотеке изображений, но авторизовано осуществлять доступ только к файлам в библиотеке музыки, тогда модуль 212 доступа к элементам данных не предоставляет запрошенный доступ. Модуль 212 доступа к элементам данных может необязательно возвращать указание (например, как результирующее значение, ассоциированное с API 210, вызванным приложением 202, чтобы запрашивать доступ к одному или более элементам данных), что запрошенный доступ запрещен.
[0034] Однако, если приложение 202 авторизовано, чтобы осуществлять доступ к некоторым из запрошенного одного или более элементов данных, тогда модуль 212 доступа к элементам данных получает и разрешает доступ к тем из одного или более элементов данных, к которым приложение 202 авторизовано осуществлять доступ. Способ, которым запрошенный один или более элементов данных получаются модулем-посредником 120, может изменяться на основе конкретного источника 108 элемента данных, и модуль-посредник 120 конфигурируется с помощью (или может получать) указания о том, как осуществлять доступ к источнику 108 элементов данных. Модуль 212 доступа к элементам данных формирует объект элемента хранилища данных, представляющий каждый элемент данных, к которому приложение 202 авторизовано осуществлять доступ. Этот объект элемента хранилища данных включает в себя различную информацию, ассоциированную с элементом данных, и в необязательном порядке включает в себя данные и/или содержимое элемента данных. Модуль 212 доступа к элементам данных возвращает этот сформированный объект элемента хранилища данных приложению 202.
[0035] Альтернативно, вместо использования ранее полученной авторизации для доступа к элементу или элементам данных, модуль-посредник 120 может применять модуль-сортировщик 122, чтобы получать доступ к одному или более элементам данных, которые запрошены приложением 202. При приеме запроса доступа к одному или более элементам данных модуль-посредник 120 может реализовывать модуль-сортировщик 122, чтобы формировать пользовательский интерфейс, который запускает модуль 220 UI сортировщика. Модуль 220 UI сортировщика представляет UI, спрашивающий пользователя о том, авторизует ли пользователь доступ к одному или более элементам данных, позволяя пользователю осуществлять навигацию или иначе находить один или более элементов данных, и т.д. Могут быть приняты пользовательские входные данные, указывающие, авторизует ли пользователь приложение 202 для доступа к одному или более элементам данных. Если пользователь авторизует приложение 202, чтобы осуществлять доступ к одному или более элементам данных, тогда модуль-сортировщик 122 получает один или более элементов данных и возвращает полученный один или более элементов данных модулю 212 доступа к элементам данных для формирования представления 112 объекта элемента хранилища данных. Альтернативно, вместо получения модулем-сортировщиком 122 одного или более элементов данных модуль-сортировщик 122 может возвращать указание модулю 212 доступа к элементам данных, чтобы модуль 212 получил один или более элементов данных, как обсуждалось выше.
[0036] Модуль 212 доступа к элементам данных возвращает объекты элементов хранилища данных приложению 202. Объект элемента хранилища данных представляет элемент данных. Объект элемента хранилища данных является абстракцией или представлением элемента данных. Доступ посредством приложения 202 (например, чтение, запись, изменение и т.д.) к элементу данных, представленному посредством объекта элемента хранилища данных, выполняется через модуль-посредник 120 и/или сам объект элемента хранилища данных. Объект элемента хранилища данных может принимать всевозможные различные формы. В одном или более вариантах осуществления объект элемента хранилища данных является объектом, сформированным модулем-посредником 120 и предоставленным приложению 202. Модуль-посредник 120 возвращает такой объект элемента хранилища данных приложению 202, предоставляя идентификатор или другое указание объекта элемента хранилища данных приложению 202. Различные способы или операции объекта элемента хранилища данных могут быть задействованы приложением 202, чтобы получать информацию, касающуюся элемента данных, предоставленного посредством объекта элемента хранилища данных, и/или выполнять различные операции над элементом данных, представленным посредством объекта элемента хранилища данных. Альтернативно, объект элемента хранилища данных может быть структурой данных, которая может включать в себя различную информацию, относящуюся к элементу данных, представленному посредством объекта элемента хранилища данных, и/или различные способы или операции, которые могут быть задействованы приложением 202, чтобы выполнять различные операции над объектом элемента хранилища данных. Модуль-посредник 120 возвращает такой объект элемента хранилища данных, предоставляя структуру данных приложению 202.
[0037] В одном или более вариантах осуществления объект элемента хранилища данных включает в себя часть свойств, часть эскиза, часть содержимого и часть операций. Часть свойств объекта элемента хранилища данных включает в себя различные свойства или атрибуты элемента данных. Любое множество различных свойств или атрибутов, поддерживаемых источником 204 элементов данных для элементов данных, может быть включено в часть свойств объекта элемента хранилища данных. Например, часть свойств объекта элемента хранилища данных может включать в себя наименование элемента данных, размер (например, в байтах) элемента данных, тип элемента данных (например, тип изображения, музыкальный тип и т.д.) и т.д.
[0038] Часть эскиза объекта элемента хранилища данных включает в себя визуальное представление элемента данных. Этот эскиз может быть изображением или последовательностью изображений (например, видео). Эскиз может быть, например, частью элемента данных (например, одной страницей документа или частью изображения), уменьшенной по масштабу версией элемента данных (например, меньшей по масштабу версией изображения), значком, представляющим тип элемента данных и т.д.
[0039] Часть содержимого объекта элемента хранилища данных включает в себя содержимое элемента данных или указание того, как получить содержимое элемента данных. Например, если элемент данных является изображением, тогда часть содержимого может включать в себя данные самого изображения, или ссылку (например, унифицированный указатель ресурса (URL) или путь) туда, где данные изображения сохранены. Элемент данных может быть данными, которые передаются потоком приложению 202 (например, музыкальный файл или видеофайл), и указанием о том, как получить содержимое элемента данных, может включать в себя указание (например, ссылку) данных, которые должны быть переданы в потоке. Часть содержимого может также включать в себя некоторые операции над элементами данных, такие как операции чтения и записи в элемент данных.
[0040] Часть операций объекта элемента хранилища данных включает в себя один или более методов или операций, которые могут быть выполнены над элементом данных. Различные другие операции могут быть выполнены над элементом данных, предоставляющие всевозможный различный доступ к элементу данных. Конкретные операции могут изменяться на основе, по меньшей мере, частично, типа элемента данных. Например, операции могут включат в себя операции переименования элемента данных, удаления элемента данных и т.д. Для элемента данных, которым является папка файловой системы, операции могут также включать в себя подсчет файлов в папке, сортировку файлов в папке, удаление файлов в папке, добавление новых файлов в папку, переименование папки или файла в папке и т.д.
[0041] Независимо от формы объекта элемента хранилища данных, различные операции могут быть выполнены над объектом элемента хранилища данных, и объект элемента хранилища данных включает в себя содержимое элемента данных или указание на то, как получить содержимое элемента данных. Таким образом, объект элемента хранилища данных может также рассматриваться как содержащий один или более элементов данных. Например, объект элемента хранилища данных для папки может содержать один или более элементов данных, представляющих файлы в этой папке.
[0042] Хотя объект элемента хранилища данных обсуждается в данном документе, следует отметить, что могут поддерживаться различные типы объектов элементов хранилища данных. Различные типы объектов элементов хранилища данных могут включать в себя различные свойства, операции и т.д., относящиеся к этому типу элемента хранилища данных. Например, могут быть использованы объекты файлов хранилища и объекты папок хранилища. Объекты файлов хранилища включают в себя свойства и операции, специфичные для файлов (например, операция переименования файла), а объекты папок хранилища включают в себя свойства и операции, специфичные для папок (например, операция подсчета, чтобы подсчитывать файлы в папке). В качестве другого примера, могут быть использованы объекты устройств и объекты сетевых узлов, где объекты устройств включают в себя свойства и операции, специфичные для устройств, а объекты сетевых узлов включают в себя свойства и операции, специфичные для сетевых узлов.
[0043] Один или более объектов элементов хранилища данных, возвращенных приложению 202, может сохраняться приложением 202. Например, приложение 202 может использовать список недавно использованных элементов данных (MRU), предоставляя возможность легко идентифицировать один или более элементов данных, недавно использованных приложением 202. В одном или более вариантах осуществления модуль-посредник 120 управляет сохраненным хранилищем объектов элементов хранилища данных. Модуль-посредник 120 типично поддерживает сохраненный список доступа для каждого изолированного приложения, хотя множество изолированных приложений могут необязательно совместно использовать сохраненный список доступа. Сохраненный список доступа - это список сохраненных объектов элементов хранилища данных, и приложение 202 может вызывать API 210, чтобы извлекать и использовать сохраненные объекты элементов хранилища данных в сохраненном списке доступа. Модуль-посредник 120 может предоставлять маркеры или другие идентификаторы сохраненных объектов элементов хранилища данных приложению 202, когда сохраненный элемент хранилища данных добавляется в сохраненный список доступа, и приложение 202 может использовать такие маркеры или другие идентификаторы, чтобы впоследствии извлекать сохраненный объект элемента хранилища данных из сохраненного списка доступа. Модуль-посредник 120 может также поддерживать множество списков сохраненных объектов элементов хранилища данных для приложения 202, таких как MRU-список и отдельный сохраненный список доступа (например, предоставляя возможность приложению 202 сохранять объекты элементов хранилища данных, когда оно желает, независимо от того, насколько давно элементы данных были использованы). Модуль-посредник 120 может необязательно реализовывать различные правила "времени жизни" для различных списков, отражая различные продолжительности (и/или различные способы, которыми продолжительности определяются) для сохранения объектов элементов хранилища данных в списке.
[0044] Сохраненные объекты элементов хранилища данных могут быть идентифицированы множеством различных способов, как например, посредством идентификатора устройства, идентификатора объекта операционной системы (например, NTFS), совпадений имени/отметки времени, их комбинаций и т.д. Таким образом, сохраненные объекты элементов хранилища данных могут быть идентифицированы, даже если элемент данных был переименован или перемещен. Дополнительно, объекты элементов хранилища данных могут быть сохранены в течение множественных выполнений приложения 202, предоставляя возможность приложению 202 извлекать и использовать сохраненный объект элемента хранилища данных, когда приложение опять выполняется после завершения (например, отключения или деактивации).
[0045] Альтернативно, приложение 202 может управлять сохраненным хранилищем объектов элементов хранилища данных вместо модуля-посредника 120. Приложение 202 может сохранять объекты элементов хранилища данных предпочтительно в различных местоположениях, как например, сохранять в памяти или другом месте хранения, назначенном или иначе сделанным доступным приложению 202. Таким образом, если приложение 202 требует элемент данных снова в более позднее время, приложение 202 может использовать сохраненный объект элемента хранилища данных, представляющий элемент данных, вместо повторного запроса элемента данных от модуля-посредника 120.
[0046] Модуль-посредник 120 в необязательном порядке включает в себя модуль 214 фильтрации, который представляет функциональность модуля-посредника 120, чтобы фильтровать элементы данных, к которым может быть осуществлен доступ посредством приложения 202. Приложение 202 авторизовано осуществлять доступ к конкретным источникам элементов данных и/или конкретным местоположениям элементов данных, как обсуждалось выше. Модуль 214 фильтрации предоставляет возможность дополнительной фильтрации запросов доступа, предотвращая доступ к конкретным местоположениям элементов данных посредством приложения 202, даже если доступ иначе авторизован. Модуль 214 фильтрации фильтрует элементы данных из источника 204 элементов данных, прежде чем модуль 212 доступа к элементам данных возвращает сформированные элементы хранилища данных, представляющие эти элементы данных. Таким образом, элементы хранилища данных, представляющие отфильтрованные элементы данных, не возвращаются приложению 202, независимо от конкретных источников элементов данных и/или конкретных местоположений элементов данных, к которым приложение 202 авторизовано осуществлять доступ.
[0047] Модуль 214 фильтрации может быть сконфигурирован, чтобы фильтровать конкретные местоположения элементов данных на основе, например, пожеланий разработчика модуля-посредника 120 и/или администратора системы 200. Например, модуль 214 фильтрации может фильтровать конкретные папки или каталоги, хранящие системные файлы, предотвращая доступ приложения 202 к этим конкретным папкам или каталогам. В качестве другого примера, модуль 214 фильтрации может фильтровать конкретные типы файлов, такие как системные файлы, скрытые файлы и т.д.
[0048] Модуль-посредник 120 также в необязательном порядке включает в себя модуль 216 компоновки, который представляет функциональность модуля-посредника 120, чтобы размещать элементы данных в конкретном порядке и/или конкретной группировке. Приложение 202 может запрашивать, чтобы эти элементы данных были возвращены модулем-посредником 120 размещенными в конкретном порядке и/или группировке. Модуль 216 компоновки размещает элементы данных в запрошенном порядке в различные моменты времени, как например, сортирует и/или группирует элементы данных, к которым осуществляется доступ, прежде чем модуль 212 доступа к элементам данных формирует объекты элементов хранилища данных, представляющие запрошенные элементы данных, сортирует и/или группирует объекты элементов хранилища данных, представляющие запрошенные элементы данных, которые сформированы посредством модуля 212 доступа к элементам данных и т.д.
[0049] Множество различных упорядочиваний могут поддерживаться модулем 216 компоновки, и различные упорядочивания, основанные на различных критериях сортировки, могут поддерживаться для различных типов элементов данных или местоположений элементов данных. Например, элементы данных могут быть упорядочены (например, хронологически увеличиваясь или уменьшаясь) на основе ассоциированной даты (например, даты, когда изображение было захвачено, для элементов данных изображений, даты, когда элемент данных был сохранен в источнике 204 элементов данных, даты, когда песня была записана, для музыкальных элементов данных). В качестве другого примера, элементы данных могут быть упорядочены (например, по алфавиту) на основе исполнителя записи (например, для элементов музыкальных данных или элементов видеоданных), на основе названия альбома (например, для элементов музыкальных данных или элементов видеоданных), на основе жанра (например, для элементов музыкальных данных или элементов видеоданных) и т.д. Модуль 216 компоновки может поддерживать набор конкретных упорядочиваний, из которых приложение 202 может выбирать. Альтернативно, модуль 216 компоновки может поддерживать критерии сортировки на основе любых метаданных для элементов данных, поддерживаемых источником 204 элементов данных. Таким образом, любые свойства, атрибуты или другие метаданные, ассоциированные с элементами данных, могут быть идентифицированы приложением 202 в качестве критериев сортировки, которые должны быть использованы для упорядочивания.
[0050] Аналогично, множество различных группировок могут поддерживаться модулем 216 компоновки, и различные группировки, основанные на различных критериях группировки, могут поддерживаться для различных типов элементов данных или местоположений элементов данных. Например, элементы данных могут быть сгруппированы по типу элемента данных (например, элементы музыкальных данных сгруппированы вместе, и элементы данных документов сгруппированы вместе). В качестве другого примера, элементы данных могут быть сгруппированы на основе исполнителя записи (например, для элементов музыкальных данных или элементов видеоданных), на основе названия альбома (например, для элементов музыкальных данных или элементов видеоданных), на основе жанра (например, для элементов музыкальных данных или элементов видеоданных) и т.д. Группировка может быть набором контейнерных объектов элементов хранилища данных, каждый из которых содержит один или более объектов элементов хранилища данных и которые могут быть пронумерованы, чтобы предоставлять объекты элементов хранилища данных, соответствующие конкретному условию. Модуль 216 компоновки может поддерживать набор конкретных группировок, из которых приложение 202 может выбирать. Альтернативно, модуль 216 компоновки может поддерживать критерии группировки на основе любых метаданных для элементов данных, поддерживаемых источником 204 элементов данных. Таким образом, любые свойства, атрибуты или другие метаданные, ассоциированные с элементами данных, могут быть идентифицированы приложением 202 в качестве критериев группировки, которые должны быть использованы для группировки.
[0051] В конкретной группировке элементы данных могут быть отсортированы с помощью различных критериев сортировки, как обсуждалось выше, или альтернативно не должны быть отсортированы. Кроме того, приложение 202 может запрашивать поиск объектов элементов хранилища данных конкретной группировки, предоставляя множество различных критериев поиска, аналогичных обсуждению ниже, касающегося модуля 218 поиска.
[0052] Модуль-посредник 120 также в необязательном порядке включает в себя модуль 218 поиска, который представляет функциональность модуля-посредника 120, чтобы отыскивать конкретные элементы данных. Приложение 202 может запрашивать, чтобы элементы данных, удовлетворяющие конкретным критериям поиска, были возвращены модулем-посредником 120. Модуль 218 поиска отыскивает источник 204 элементов данных для элементов данных, удовлетворяющих (или соответствующих) критериям поиска, и эти элементы данных, удовлетворяющие критериям поиска, возвращаются приложению 202. Модуль 218 поиска типично отыскивает элементы данных в источнике 204 элементов данных, чтобы идентифицировать элементы данных, которые удовлетворяют критериям поиска, прежде чем модуль 212 доступа к элементам данных сформирует объекты элементов хранилища данных, представляющие запрошенные элементы данных, которые удовлетворяют критериям поиска. Альтернативно, модуль 218 поиска может отыскивать сформированные объекты элементов хранилища данных, чтобы идентифицировать объекты элементов хранилища данных, которые удовлетворяют критериям поиска, и только сформированные объекты элементов хранилища данных, которые удовлетворяют критериям поиска, возвращаются приложению 202.
[0053] Множество различных критериев поиска могут поддерживаться модулем 218 поиска. Например, критерии поиска могут быть конкретным типом элемента данных (например, музыкальным файлом), и критерии поиска удовлетворяются любым элементом данных этого конкретного типа элемента данных, или критерии поиска могут быть именем, и критерии поиска удовлетворяются любым элементом данных, имеющим это конкретное имя (например, имя файла). Дополнительно, более сложные критерии поиска могут поддерживаться модулем 218 поиска, например, использование диапазонов дат, значений групповых символов (например, вопросительный знак, чтобы указывать любой одиночный символ, или звездочка, чтобы указывать любые ноль или более символов), AQS или синтаксиса расширенного запроса (дополнительная информация, относящаяся к синтаксису расширенного запроса, доступна от корпорации Microsoft® из Рэдмонда, штат Вашингтон) и т.д. Следует отметить, что, хотя приложение 202 может предоставлять критерии поиска, приложение 202 все еще может осуществлять доступ только к тем элементам данных, к которым приложение 202 авторизовано осуществлять доступ (например, на основе записи, хранящейся в хранилище 208 авторизации, как обсуждалось выше).
[0054] Дополнительно, модуль-посредник 120 обсуждается как предоставляющий приложению 202 возможность доступа к элементу или элементам данных, если приложение 202 авторизовано осуществлять доступ к элементу или элементам данных. Модуль-посредник 120 может в необязательном порядке рассматривать приложение 202 как автоматически авторизованное осуществлять доступ к одному или более местоположениям элементов данных без каких-либо специальных пользовательских входных данных, указывающих такую авторизацию. Примером такого местоположения является папка загрузок, в которую всем изолированным приложениям разрешено записывать данные. Модуль-посредник 120 может необязательно ограничивать приложение 202 специальными типами доступа, пока приложение 202 не будет авторизовано (как обсуждалось выше) осуществлять доступ к этим одному или более местоположениям элементов данных. Например, приложение 202 может быть автоматически авторизовано записывать файлы в папку загрузок, но ему разрешается считывать файлы из папки загрузок, только если пользователь вычислительного устройства авторизовал приложение 202 считывать файлы из папки загрузок.
[0055] Технологии опосредованного доступа к элементам данных для изолированных приложений, обсуждаемые в данном документе, поддерживают различные сценарии использования. Например, может быть запущено приложение редактирования фотографий, осуществляющее доступ к файлам через модуль-посредник. Когда приложение редактирования фотографий установлено на вычислительном устройстве, пользователь может давать приложению редактирования фотографий полномочие на доступ к файлам в библиотеке изображений, но не к файлам в других местоположениях. Во время работы приложение редактирования фотографий может запрашивать различные файлы от модуля-посредника, но модуль-посредник отклоняет запросы для любых файлов, отличных от файлов из библиотеки изображений. Приложению редактирования фотографий, таким образом, запрещается доступ к любым файлам, сохраненным в любом местоположении, отличном от библиотеки изображений.
[0056] Фиг. 3 иллюстрирует поток 300 данных опосредованного доступа к элементам данных для изолированных приложений в дополнительных подробностях в соответствии с одним или более вариантами осуществления. Поток 300 данных обсуждается со ссылкой на элементы системы 200 на фиг. 2. Приложение 202 предоставляет запрос 302 доступа модулю-посреднику 120, вызывая один или более API модуля-посредника 120. Запрос 302 доступа - это запрос определенного типа доступа к источнику 204 элементов данных.
[0057] Модуль-посредник 120 предоставляет один или более запросов 304 доступа источнику 204 элементов данных, чтобы получать элементы данных, запрошенные посредством запроса 302 доступа. Модуль-посредник 120 может предоставлять один или более запросов 304 доступа различными способами в зависимости от способа, которым реализован источник 204 элементов данных, как например, вызывая API источника 204 элементов данных, отправляя сообщение или другую структуру данных источнику 204 элементов данных и т.д.
[0058] Информация 306 элемента данных для одного или более элементов данных возвращается из источника 204 элементов данных модулю-посреднику 120. Информация 306 элемента данных описывает один или более элементов данных на основе запроса 302 доступа. Как обсуждалось выше, элементы данных, для которых информация 306 элемента данных возвращена, могут включать в себя информацию для элементов данных в определенных источниках элементов данных, могут быть отфильтрованными элементами данных, и т.д. Информация 306 элемента данных включает в себя информацию, описывающую один или более элементов данных из источника 204 элементов данных. Любая информация, которая может быть включена в объект элемента хранилища данных, представляющий элемент данных, может быть включена в информацию 306 элемента данных.
[0059] Модуль-посредник 120 формирует один или более объектов 308 элементов хранилища данных на основе информации 306 элемента данных. Модуль-посредник 120 формирует объект 308 элемента хранилища данных, по меньшей мере, для одного элемента данных, идентифицированного в информации 306 элемента данных. Модуль-посредник 120 может в необязательном порядке фильтровать один или более элементов данных, идентифицированных из информации 306 элемента данных, и не формировать объект 308 элемента хранилища данных для отфильтрованных одного или более элементов данных, как обсуждалось выше. Модуль-посредник 120 может также в необязательном порядке размещать объекты 308 элементов хранилища данных, или информацию, включенную в объекты 308 элементов хранилища данных, в определенном порядке или определенной группе, как обсуждалось выше.
Примерные API
[0060] Модуль-посредник предоставляет один или более API изолированным приложениям, где эти один или более API поддерживают различные интерфейсы, которые могут быть вызваны изолированными приложениями для всевозможных различных типов доступа к элементам данных. Например, модуль-посредник 120 предоставляет множество API 210, как обсуждалось выше. Таблицы I-XI ниже иллюстрируют примерные API, которые могут быть предоставлены модулем-посредником. Следует отметить, что эти API являются примерами, и что один или более API могут не быть предоставлены модулем-посредником, дополнительные API могут быть предоставлены модулем-посредником, и/или изменения могут быть сделаны в этих API, предоставленных модулем-посредником.
[0061] API сгруппированы или собраны вместе в конкретные пространства имен, и каждая из таблиц I-XI включает в себя множество API для конкретного пространства имен. Способ, которым такая группировка выполнена, может изменяться, например, на основе пожеланий разработчика модуля-посредника. Названия API имеют преамбулу, которая идентифицирует определенное пространство имен, и названия API, перечисленных в таблицах I-XI, включают в себя эту общую преамбулу (хотя она не перечисляется в таблицах). Например, для пространства имен известных папок общей преамбулой может быть "Windows.Storage.KnownFolders". Соответственно, название для "musicLibrary" API включает в себя эту общую преамбулу, и, таким образом, хотя перечислено как "musicLibrary" в Таблице IV ниже, является "Windows.Storage.KnownFolders.musicLibrary".
[0062] Таблица 1 иллюстрирует множество API для объекта элемента хранилища данных, которые могут также упоминаться как пространство имен элемента хранилища данных. Общей преамбулой для пространства имен элемента хранилища данных является "Windows.Storage.StorageItem". Множество API для пространства имен элементов хранилища данных предоставляют изолированным приложениям возможность получать информацию, касающуюся элемента данных, представленного объектом элемента хранилища данных, и/или выполнять различные операции над элементом данных, представленным объектом элемента хранилища данных.
[0063] Таблица II иллюстрирует множество API для объекта элемента хранилища данных папки хранилища (или StorageFolder), который также называется пространством имен папки хранилища. Общей преамбулой для пространства имен папки хранилища является "Windows.Storage.StorageFolder". Множество API для пространства имен папки хранилища предоставляют изолированным приложениям возможность получать информацию, касающуюся папки, представленной объектом папки хранилища, и/или выполнять различные операции над папкой, представленной объектом папки хранилища. Объект папки хранилища наследует или включает в себя все API объекта элемента хранилища данных, обсужденные выше со ссылкой на Таблицу I.
[0064] Таблица III иллюстрирует множество API для объекта элемента хранилища данных файла хранилища (или StorageFile), который может также называться пространством имен файла хранилища. Общей преамбулой для пространства имен файла хранилища является "Windows.Storage.StorageFile". Множество API для пространства имен файла хранилища предоставляют изолированным приложениям возможность получать информацию, касающуюся файла, представленного объектом файла хранилища, и/или выполнять различные операции над файлом, представленным объектом файла хранилища. Объект файла хранилища наследует или включает в себя все API объекта элемента хранилища данных, обсужденные выше со ссылкой на Таблицу I.
(fileToReplace)
(destinationFolder, newFileName, nameCollisionOption)
[0065] Таблица IV иллюстрирует множество API для пространства имен известных папок, которое ссылается на набор папок или библиотек источника элементов данных файловой системы, которые могут быть доступны посредством изолированных приложений. Общей преамбулой для пространства имен известных папок является "Windows.Storage.KnownFolders". Множество API для пространства имен известных папок предоставляют возможность доступа к конкретному набору предварительно определенных папок или каталогов посредством изолированных приложений.
[0066] Таблица V иллюстрирует множество API для пространства имен хранилища, которое является набором интерфейсов, предоставляющих возможность изолированным приложениям сохранять или извлекать конкретные файлы или папки. Общей преамбулой для пространства имен хранилища является "Windows.Storage".
Async()
[0067] Таблица VI иллюстрирует множество API для вариантов запроса, которые могут также называться пространством имен вариантов запроса. Общей преамбулой для пространства имен вариантов запроса является "Windows.Storage.QueryOptions". Множество API для пространства имен вариантов запроса предоставляют возможность изолированным приложениям указывать различные варианты запроса для поисковых запросов, предоставляемых изолированными приложениями.
(string)
[0068] Таблица VII иллюстрирует множество API для пространства имен запроса, которое является набором интерфейсов, предоставляющих возможность изолированным приложениям инициализировать выполнение запросов или поисков элементов данных. Общей преамбулой для пространства имен запроса является "Windows.Storage".
Options()
(queryOptions)
Result.getFoldersAsync()
Result.getFoldersAsync
(start, count)
Result.getItemsAsync()
[0069] Таблица VIII иллюстрирует множество API для пространства имен средств быстрого доступа, которое является набором интерфейсов, предоставляющих возможность извлечения элементов данных (например, быстро, без указания AQS-запроса). Множество API могут поддерживать извлечение элементов данных различными способами, такими как поверхностный режим (например, возвращающий результаты из конкретной папки или каталога), глубокий режим (например, возвращающий результаты из конкретной папки или каталога, а также всех подпапок или подкаталогов), и т.д. Общей преамбулой для пространства имен средств быстрого доступа является "Windows.Storage.StorageFolder".
Query)
Query, start, count)
[0070] Таблица IX иллюстрирует множество API для пространства имен создания запроса, которое является набором интерфейсов, предоставляющих возможность создания запросов изолированными приложениями. После создания эти запросы могут быть сохранены модулем-посредником, и впоследствии к ним осуществляет доступ изолированное приложение, создающее запрос. Общей преамбулой для пространства имен создания запроса является "Windows.Storage.StorageFolder".
Options(QueryOptions)
CommonFolderQuery)
Options(QueryOptions)
[0071] Таблица X иллюстрирует множество API для пространства имен хранения элемента хранилища данных, которое является набором интерфейсов, предоставляющих возможность изолированным приложениям хранить объекты элементов хранилища данных. Объекты элементов хранилища данных могут сохраняться на протяжении множества выполнений изолированного приложения, как обсуждалось выше. Общей преамбулой для пространства имен хранения элемента хранилища данных является "StorageApplicationPermissions.futureAccessList".
storageItem)
(storageItem)
[0072] Таблица XI иллюстрирует множество API для списка недавно использованных элементов (MRU), которое является набором интерфейсов, предоставляющих возможность изолированным приложениям формировать и поддерживать список недавно использованных элементов данных. MRU-список является примером сохраненных объектов элементов хранилища данных с сохраненным списком доступа, являющимся MRU-списком. Общей преамбулой для пространства имен MRU-списка является "StorageApplicationPermissions.mostRecentlyUsedList".
Примерные процедуры
[0073] Последующее обсуждение описывает технологии опосредованного доступа к элементам данных для изолированных приложений, которые могут быть реализованы с помощью ранее описанных систем и устройств. Аспекты каждой из процедур могут быть реализованы в аппаратном обеспечении, микропрограммном обеспечении или программном обеспечении, или в их сочетании. Процедуры показаны как набор действий, которые указывают операции, выполняемые одним или более устройствами, и необязательно ограничены показанными последовательностями для выполнения операций посредством соответствующих действий. В частях последующего обсуждения ссылка будет сделана на элементы на фиг. 1, 2 и 3.
[0074] Фиг. 4 иллюстрирует процедуру 400 для реализации опосредованного доступа к элементам данных для изолированных приложений в соответствии с одним или более вариантами осуществления. Процедура 400 реализуется посредством модуля-посредника, такого как модуль-посредник 120. В процедуре 400 принимается запрос на доступ к одному или более элементам данных источника элементов данных (действие 402). Запрос принимается от изолированного приложения в вычислительном устройстве и типично является запросом конкретного типа доступа для конкретного источника элементов данных. Запрос может быть принят изолированным приложением, вызывающим API, предоставленный модулем-посредником, как обсуждалось выше. Всевозможные различные типы запросов могут быть приняты, как обсуждалось выше, например, запросы на чтение элемента данных, запись элемента данных, модификацию элемента данных, поиск элементов данных и т.д.
[0075] Выполняется проверка относительно того, к какому из одного или более элементов данных, при наличии таковых, изолированное приложение авторизовано осуществлять доступ (действие 404). То, к какому из одного или более элементов данных изолированное приложение авторизовано осуществлять доступ, может быть основано на конкретных источниках элементов данных и/или конкретных местоположениях элементов данных, как обсуждалось выше. Проверка может быть выполнена в различные моменты времени, как например, когда осуществляется доступ к корневому узлу источника элементов данных (например, папки, библиотеки, структуры хранилища).
[0076] Процедура 400 продолжается на основе того, авторизовано или нет изолированное приложение осуществлять доступ к одному или более элементов данных (действие 406). Если изолированное приложение не авторизовано осуществлять доступ к какому-либо из одного или более элементов данных (приложение не авторизовано осуществлять доступ к какому-либо из элементов данных, для которых запрашивается доступ), тогда запрос отклоняется (действие 408). Указание о том, что запрос отклонен, может необязательно быть возвращено изолированному приложению, как обсуждалось выше.
[0077] Однако, если изолированное приложение авторизовано осуществлять доступ, по меньшей мере, к одному из одного или более элементов данных, формируются один или более объектов элементов хранилища данных, которые представляют эти один или более элементов данных, к которым изолированное приложение авторизовано осуществлять доступ (действие 410). Каждый объект элемента хранилища данных включает в себя различную информацию, ассоциированную с одним или более элементами хранилища данных, как обсуждалось выше. Те из одного или более элементов данных, к которым изолированное приложение авторизовано осуществлять доступ, могут исключать конкретные элементы из источника элементов данных, которые отфильтрованы, как обсуждалось выше.
[0078] Один или более сформированных объектов элементов хранилища данных возвращаются изолированному приложению (действие 412). Объекты элемента хранилища данных могут быть структурами данных, предоставленными изолированному приложению, или объектами, раскрытыми изолированному приложению, как обсуждалось выше. Объекты элементов хранилища данных могут необязательно быть размещены в определенном порядке или определенной группировке, как обсуждалось выше.
[0079] Фиг. 5 иллюстрирует процедуру 500 для реализации опосредованного доступа к элементам данных для изолированных приложений в соответствии с одним или более вариантами осуществления. Процедура 500 реализуется изолированным приложением, таким как приложение 116 или приложение 202. В процедуре 500 API модуля-посредника вызывается, чтобы запрашивать доступ к одному или более элементам данных источника элементов данных (действие 502). Запрос является типично запросом конкретного типа доступа для конкретного источника элементов данных. Всевозможные различные типы запросов могут быть приняты, как обсуждалось выше, например, запросы на чтение элемента данных, запись элемента данных, модификацию элемента данных, поиск элементов данных и т.д.
[0080] По меньшей мере, один объект элемента хранилища данных, содержащий те из одного или более элементов данных, к которым изолированное приложение авторизовано осуществлять доступ, возвращается от модуля-посредника (действие 504). Проверка относительно того, к какому из одного или более элементов данных изолированное приложение авторизовано осуществлять доступ, может быть выполнена в различные моменты времени, как например, когда осуществляется доступ к корневому узлу источника элементов данных (например, папки, библиотеки, структуры хранения). Каждый объект элементов хранилища данных включает в себя различную информацию, ассоциированную с элементом данных, как обсуждалось выше. Те из одного или более элементов данных, для которых приняты объекты элементов хранилища данных, могут исключать конкретные элементы данных из источника элементов данных, которые отфильтрованы, как обсуждалось выше. Объекты элементов хранилища данных могут быть структурами данных, возвращенными изолированному приложению, или объектами, раскрытыми изолированному приложению, как обсуждалось выше. Дополнительно, объекты элементов хранилища данных могут необязательно быть размещены в определенном порядке, как обсуждалось выше.
Заключение
[0081] Различные действия, такие как передача, прием, отправка, сохранение, формирование, получение и т.д., выполняемые различными модулями, обсуждены в данном документе. Следует отметить, что различные модули могут инструктировать выполнение таких действий. Конкретный модуль, инструктирующий выполнение действия, включает в себя сам этот конкретный модуль, выполняющий действие, или альтернативно этот конкретный модуль, вызывающий или иначе осуществляющий доступ к другому компоненту или модулю, который выполняет действие (или выполняет действие вместе с конкретным модулем).
[0082] Хотя изобретение описано на языке, характерном для структурных признаков и/или технологических этапов, следует понимать, что объем изобретения, определяемый прилагаемой формулой изобретения, не обязательно ограничен характерными признаками или действиями, описанными выше. Вместо этого, характерные признаки и этапы, описанные выше, раскрываются как примерные формы реализации формулы изобретения.
название | год | авторы | номер документа |
---|---|---|---|
СИСТЕМЫ И СПОСОБЫ СОПРЯЖЕНИЯ ПРИКЛАДНЫХ ПРОГРАММ С ПЛАТФОРМОЙ ХРАНЕНИЯ НА ОСНОВЕ СТАТЕЙ | 2003 |
|
RU2412461C2 |
СИСТЕМЫ И СПОСОБЫ МОДЕЛИРОВАНИЯ ДАННЫХ В ОСНОВАННОЙ НА ПРЕДМЕТАХ ПЛАТФОРМЕ ХРАНЕНИЯ | 2003 |
|
RU2371757C2 |
СИСТЕМЫ И СПОСОБЫ РАСШИРЕНИЙ И НАСЛЕДОВАНИЯ ДЛЯ БЛОКОВ ИНФОРМАЦИИ, УПРАВЛЯЕМЫХ СИСТЕМОЙ АППАРАТНО-ПРОГРАММНОГО ИНТЕРФЕЙСА | 2004 |
|
RU2412475C2 |
СИСТЕМА И СПОСОБ ДЛЯ ПРЕДСТАВЛЕНИЯ ЭЛЕМЕНТОВ ПОЛЬЗОВАТЕЛЮ С ИСПОЛЬЗОВАНИЕМ КОНТЕКСТНОГО ПРЕДСТАВЛЕНИЯ | 2004 |
|
RU2369896C2 |
БЕЗОПАСНОСТЬ В ПРИЛОЖЕНИЯХ СИНХРОНИЗАЦИИ РАВНОПРАВНЫХ УЗЛОВ | 2006 |
|
RU2421799C2 |
СИСТЕМЫ И СПОСОБЫ ДЛЯ ОБЕСПЕЧЕНИЯ УСЛУГ СИНХРОНИЗАЦИИ ДЛЯ БЛОКОВ ИНФОРМАЦИИ, УПРАВЛЯЕМЫХ АППАРАТНОЙ/ПРОГРАММНОЙ ИНТЕРФЕЙСНОЙ СИСТЕМОЙ | 2004 |
|
RU2377646C2 |
СИСТЕМА И СПОСОБ ДЛЯ ПРЕДСТАВЛЕНИЯ ЭЛЕМЕНТОВ, СОХРАНЕННЫХ НА КОМПЬЮТЕРЕ | 2004 |
|
RU2377647C2 |
ПРОГРАММНЫЙ ИНТЕРФЕЙС ПРИЛОЖЕНИЙ ДЛЯ АДМИНИСТРИРОВАНИЯ РАСПРЕДЕЛЕНИЕМ ОБНОВЛЕНИЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ В СИСТЕМЕ РАСПРЕДЕЛЕНИЯ ОБНОВЛЕНИЙ | 2005 |
|
RU2386218C2 |
ИНТЕРФЕЙС ПРОГРАММИРОВАНИЯ ДЛЯ КОМПЬЮТЕРНОЙ ПЛАТФОРМЫ | 2004 |
|
RU2365972C2 |
Способ (варианты) и система (варианты) анонимной авторизации на сервисе пользователя | 2014 |
|
RU2610258C2 |
Изобретение относится к области доступа к данным в Интернет. Технический результат - обеспечение авторизованного доступа к данным хранилища данных изолированным приложением. Способ для опосредованного доступа к элементам данных для изолированных приложений, содержит этапы, на которых: предоставляют, в модуле-посреднике вычислительного устройства, интерфейсы прикладного программирования (API) изолированному приложению вычислительного устройства; принимают, в модуле-посреднике через один из упомянутых API, запрос от изолированного приложения в вычислительном устройстве на доступ к одному или более элементам данных источника элементов данных; проверяют, в вычислительном устройстве, к какому из этих одного или более элементов данных изолированное приложение авторизовано осуществлять доступ; и если изолированное приложение не авторизовано осуществлять доступ ни к одному из упомянутых одного или более элементов данных, тогда отклоняют запрос, иначе: формируют один или более объектов элементов хранилища данных, которые представляют те из упомянутых одного или более элементов данных, к которым изолированное приложение авторизовано осуществлять доступ; фильтруют сформированные один или более объектов элементов хранилища данных, которые представляют те из упомянутых одного или более элементов данных, к которым изолированное приложение авторизовано осуществлять доступ, причем данная фильтрация содержит удаление одного или более объектов элементов хранилища данных, которые соответствуют конкретному типу файлов, с тем, чтобы один или более отфильтрованных объектов элементов хранилища данных не включали в себя объекты элементов хранилища данных, которые соответствуют этому конкретному типу файлов; и возвращают эти один или более отфильтрованных объектов элементов хранилища данных изолированному приложению. 3 н. и 17 з.п. ф-лы, 5 ил., 11 табл.
1. Способ, реализуемый в вычислительном устройстве и предназначенный для опосредованного доступа к элементам данных для изолированных приложений, при этом способ содержит этапы, на которых:
предоставляют, в модуле-посреднике вычислительного устройства, интерфейсы прикладного программирования (API) изолированному приложению вычислительного устройства, причем эти API поддерживают интерфейсы, которые могут вызываться изолированным приложением для различных типов доступа к элементам данных;
принимают, в модуле-посреднике через один из упомянутых API, запрос от изолированного приложения в вычислительном устройстве на доступ к одному или более элементам данных источника элементов данных;
проверяют, в вычислительном устройстве, к какому из этих одного или более элементов данных изолированное приложение авторизовано осуществлять доступ; и
если изолированное приложение не авторизовано осуществлять доступ ни к одному из упомянутых одного или более элементов данных, тогда отклоняют запрос, иначе:
формируют один или более объектов элементов хранилища данных, которые представляют те из упомянутых одного или более элементов данных, к которым изолированное приложение авторизовано осуществлять доступ;
фильтруют сформированные один или более объектов элементов хранилища данных, которые представляют те из упомянутых одного или более элементов данных, к которым изолированное приложение авторизовано осуществлять доступ, причем данная фильтрация содержит удаление одного или более объектов элементов хранилища данных, которые соответствуют конкретному типу файлов, с тем чтобы один или более отфильтрованных объектов элементов хранилища данных не включали в себя объекты элементов хранилища данных, которые соответствуют этому конкретному типу файлов; и
возвращают эти один или более отфильтрованных объектов элементов хранилища данных изолированному приложению.
2. Способ по п. 1, в котором изолированному приложению ограничивается доступ к источнику элементов данных, кроме как через модуль-посредник.
3. Способ по п. 1, в котором при упомянутом возвращении одного или более объектов элементов хранилища данных изолированному приложению предоставляют интерфейс одного из упомянутых API изолированному приложению, причем данный интерфейс предоставляет возможность извлечения одного или более свойств элемента данных, представляемого объектом элемента хранилища данных, и поддерживают одну или более операций над элементом данных, представляемым объектом элемента хранилища данных.
4. Способ по п. 1, в котором источник элементов данных представляет собой файловую систему вычислительного устройства.
5. Способ по п. 1, дополнительно содержащий этап, на котором сохраняют, в ответ на запрос от изолированного приложения, конкретный один из упомянутых одного или более объектов элементов хранилища данных.
6. Способ по п. 1, в котором при упомянутой проверке проверяют, авторизовано ли изолированное приложение осуществлять доступ к элементам данных из местоположения источника элементов данных.
7. Способ по п. 6, в котором источник элементов данных представляет собой файловую систему, а упомянутое местоположение содержит библиотеку файловой системы.
8. Способ по п. 1, дополнительно содержащий этап, на котором размещают те из упомянутых одного или более элементов данных, к которым изолированное приложение авторизовано осуществлять доступ, в конкретном порядке, причем этот конкретный порядок определяется по упомянутому запросу.
9. Способ по п. 1, дополнительно содержащий этап, на котором размещают те из упомянутых одного или более элементов данных, к которым изолированное приложение авторизовано осуществлять доступ, в конкретной группировке, причем эта конкретная группировка определяется по упомянутому запросу.
10. Способ по п. 1, дополнительно содержащий этап, на котором принимают указание пользователя, когда изолированное приложение установлено на вычислительном устройстве, касаемо того, к каким элементам данных изолированное приложение авторизовано осуществлять доступ.
11. Способ по п. 1, в котором упомянутый запрос включает в себя критерии поиска, при этом упомянутые один или более элементов данных содержат один или более элементов данных, которые удовлетворяют этим критериям поиска.
12. Способ по п. 1, в котором упомянутый конкретный тип файла представляет собой одно из системного файла и скрытого файла.
13. Машиночитаемое запоминающее устройство, на котором сохранено множество инструкций приложения, которые при их исполнении одним или более процессорами вычислительного устройства предписывают одному или более процессорам:
вызывать интерфейс прикладного программирования (API) модуля-посредника, чтобы запрашивать доступ к одному или более элементам данных источника элементов данных, при этом приложение представляет собой изолированное приложение, которое исполняется одним или более процессорами и которому ограничен доступ к источнику элементов данных, кроме как через модуль-посредник, причем API модуля-посредника поддерживает один или более интерфейсов, которые могут вызываться изолированным приложением для различных типов доступа к элементам данных, при этом API модуля-посредника ассоциирован с, по меньшей мере, пространством имен хранения, пространством имен запроса и пространством имен создания запроса, при этом пространство имен запроса приспособлено обеспечивать изолированному приложению возможность осуществлять запросы или поиски элементов данных, пространство имен создания запроса приспособлено обеспечивать возможность создания запросов изолированным приложением, причем созданные запросы сохраняются модулем-посредником для обеспечения возможности последующего доступа со стороны изолированного приложения к созданным запросам;
принимать от модуля-посредника по меньшей мере один объект элемента хранилища данных, содержащий те из упомянутых одного или более элементов данных, к которым изолированное приложение авторизовано осуществлять доступ; и
сохранять этот по меньшей мере один объект элемента хранилища данных по множеству исполнений упомянутого приложения.
14. Машиночитаемое запоминающее устройство по п. 13, в котором множество инструкций, предписывающих одному или более процессорам сохранять по меньшей мере один объект элемента хранилища данных, содержат инструкции, вызывающие упомянутый API модуля-посредника, чтобы сохранить этот по меньшей мере один объект элемента хранилища данных.
15. Машиночитаемое запоминающее устройство по п. 13, в котором множество инструкций, предписывающих одному или более процессорам вызывать API модуля-посредника, содержат инструкции, предписывающие одному или более процессорам вызвать этот API модуля-посредника для поиска элементов данных источника элементов данных на основе критериев поиска, предоставляемых модулю-посреднику упомянутым приложением.
16. Машиночитаемое запоминающее устройство по п. 13, при этом источник элементов данных представляет собой файловую систему вычислительного устройства.
17. Машиночитаемое запоминающее устройство по п. 13, при этом источник элементов данных представляет собой систему хранения поставщика услуг с доступом через сеть.
18. Машиночитаемое запоминающее устройство по п. 13, при этом источник элементов данных представляет собой другое приложение, исполняющееся на вычислительном устройстве.
19. Способ, реализуемый в вычислительном устройстве и предназначенный для опосредованного доступа к элементам данных для изолированных приложений, при этом способ содержит этапы, на которых:
предоставляют, в модуле-посреднике вычислительного устройства, один или более интерфейсов прикладного программирования (API) изолированному приложению вычислительного устройства, причем эти один или более API поддерживают интерфейсы, которые могут вызываться изолированным приложением для различных типов доступа к элементам данных, при этом упомянутые один или более API сгруппированы в соответствии с одним или более пространствами имен, причем эти одно или более пространств имен включают в себя, по меньшей мере, пространство имен хранения, пространство имен запроса и пространство имен создания запроса, при этом пространство имен запроса приспособлено обеспечивать изолированному приложению возможность осуществлять запросы или поиски элементов данных, пространство имен создания запроса приспособлено обеспечивать возможность создания запросов изолированным приложением, причем созданные запросы сохраняются модулем-посредником для обеспечения возможности последующего доступа со стороны изолированного приложения к созданным запросам;
принимают, в модуле-посреднике через один из упомянутых API, запрос от изолированного приложения в вычислительном устройстве на доступ к одному или более файлам, хранящимся в конкретной библиотеке файловой системы вычислительного устройства, причем изолированному приложению ограничен доступ к файловой системе, кроме как через модуль-посредник;
проверяют, в вычислительном устройстве на основе пользовательского ввода, принятого, когда изолированное приложение было загружено или установлено на вычислительное устройство, то, к какому из этих одного или более файлов изолированное приложение авторизовано осуществлять доступ; и
если изолированное приложение не авторизовано осуществлять доступ ни к одному из упомянутых одного или более файлов, тогда отклоняют запрос, иначе:
формируют один или более объектов элементов хранилища данных, которые представляют те из упомянутых одного или более файлов, к которым изолированное приложение авторизовано осуществлять доступ; и
возвращают эти один или более объектов элементов хранилища данных изолированному приложению; и
сохраняют в модуле-посреднике упомянутые один или более объектов элементов хранилища данных по множеству исполнений изолированного приложения.
20. Способ по п. 19, дополнительно содержащий этап, на котором фильтруют те из упомянутых одного или более файлов, к которым изолированное приложение авторизовано осуществлять доступ, чтобы исключить конкретные типы файлов.
Пресс для выдавливания из деревянных дисков заготовок для ниточных катушек | 1923 |
|
SU2007A1 |
Пресс для выдавливания из деревянных дисков заготовок для ниточных катушек | 1923 |
|
SU2007A1 |
Приспособление для суммирования отрезков прямых линий | 1923 |
|
SU2010A1 |
Авторы
Даты
2016-11-20—Публикация
2011-10-09—Подача