×
20.06.2018
218.016.64ab

УПРАВЛЕНИЕ ДОСТУПОМ ВО ВРЕМЯ ВЫПОЛНЕНИЯ К ИНТЕРФЕЙСАМ ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ

Вид РИД

Изобретение

Юридическая информация Свернуть Развернуть
Краткое описание РИД Свернуть Развернуть
Аннотация: Изобретение относится к области интерфейсов прикладного программирования. Техническим результатом является управление доступом во время исполнения к интерфейсам прикладного программирования (API). Варианты осуществления изобретения дают возможность разработчикам библиотек более точно и легко управлять тем, какой из API их библиотек может вызываться динамически. Таким образом, их нагрузка по обслуживанию и управлению версиями может более надлежащим образом управляться. Дополнительно, разработчики приложений могут управлять тем, какие из таких API следует в дальнейшем исключать из сценариев динамических вызовов, с тем, чтобы минимизировать объем служебной информации для поддержки во время выполнения (например, запрещать формирование метаданных). 3 н. и 5 з.п. ф-лы, 6 ил.
Реферат Свернуть Развернуть

Уровень техники

[0001] Описание предшествующего уровня техники

[0002] Вычислительные системы и связанная технология затрагивают множество аспектов общества. На самом деле, способность вычислительной системы обрабатывать информацию преобразовала способ, которым мы живем и работаем. Вычислительные системы сегодня, как правило, выполняют множество задач (к примеру, обработку текста, планирование, учет и т.д.), которые до появления компьютерной системы выполнялись вручную. Позднее, компьютерные системы соединены между собой и с другими электронными устройствами, с тем, чтобы формировать как проводные, так и беспроводные компьютерные сети, по которым компьютерные системы и другие электронные устройства могут передавать электронные данные. Соответственно, выполнение многих вычислительных задач распределяется по определенному числу различных компьютерных систем и/или по определенному числу различных вычислительных окружений.

[0003] В ходе разработки кода, разработчики программного обеспечения зачастую используют интерфейсы прикладного программирования (API) для того, чтобы упрощать связь между программными компонентами. API может включать в себя спецификации для процедур, структур данных, классов объектов и переменных, ассоциированных с API. В связи с этим, один разработчик может использовать спецификацию API для того, чтобы определять то, как вызывать API, написанный другим разработчиком.

[0004] Зачастую, один разработчик программного обеспечения (разработчик библиотек) разрабатывает код, имеющий определенное число связанных API, которые группируются в библиотеку, предлагающую указываемую функциональность. Разработчик программного обеспечения может делать части функциональности доступными для других программ посредством раскрытия соответствующих API в библиотеке в качестве общедоступных API. Таким образом, другой разработчик (разработчик приложений) может осуществлять доступ к доступным частям функциональности из их кода через вызовы в общедоступные API. Разработчик программного обеспечения также может поддерживать другие части функциональности в качестве частных. Частная функциональность может использоваться внутренне между API в библиотеке либо для того, чтобы осуществлять доступ к другим частным API в других библиотеках. API, предоставляющие частную функциональность, не раскрываются непосредственно для других программ.

[0005] Тем не менее, многие среды выполнения разрешают коду динамически вызывать любой API в сторонней библиотеке (например, с использованием отражения, чтобы осуществлять доступ к метаданным). В связи с этим, прикладная программа или библиотека может идентифицировать и вызывать частные API в другой библиотеке. Когда разработчик программного обеспечения поддерживает API, который является частным, разработчик программного обеспечения не ожидает, что API вызывается внешне. К сожалению, изменения обслуживания или управления версиями внутренних сведений по реализации таких библиотек, такие как, например, переименования или удаления частных способов, имеют потенциал вызывания прерывающих изменений в приложениях, использующих эти библиотеки.

[0006] Помимо этого, поддержка во время выполнения динамических вызовов переносит служебную информацию по размеру и рабочим наборам (например, метаданные). Объем служебной информации по размеру и рабочим наборам поддерживается для API (частных или общедоступных) независимо от того, вызываются или нет API фактически динамически. Поддержание объема служебной информации по размеру и рабочим наборам для невостребованных API излишне использует вычислительные ресурсы.

Сущность изобретения

[0007] Настоящее изобретение распространяется на способы, системы и компьютерные программные продукты для управления доступом во время выполнения к интерфейсам прикладного программирования. Варианты осуществления изобретения включают в себя управление доступом во время выполнения к интерфейсам прикладного программирования (API). Среда выполнения предоставляет запросы на динамический доступ (например, посредством отражения или других технологий динамических вызовов) с видимостью по умолчанию в API на основе API-типа. Например, видимость по умолчанию в не общедоступные API может запрещать динамический доступ.

[0008] К набору API, комбинированных в библиотеку, осуществляется доступ. Набор API включает в себя один или более общедоступных API и один или более не общедоступных API. Из набора API идентифицируется API, для которого должна быть изменена видимость по умолчанию, предоставленная для запросов на динамический доступ.

[0009] Видимость по умолчанию в API изменена посредством применения атрибута к API. Атрибут указывает среде выполнения во время выполнения то, что запросы на динамический доступ должны предоставляться для измененной видимости в API. Изменение видимости может включать в себя разрешение динамического доступа к не общедоступному API, для которого по умолчанию динамический доступ не разрешается.

[0010] Другие варианты осуществления включают в себя уменьшение видимости по умолчанию в доступный API. К коду приложения для приложения осуществляется доступ. Код приложения ссылается на один или более доступных API, комбинированных в библиотеку. Доступный API, на который ссылаются в коде приложения, идентифицирован. Доступный API выбирается из числа одного или более доступных API.

[0011] Определяется то, что к доступному API не должен динамически осуществляться доступ во время выполнения. Атрибут применяется к доступному API, чтобы уменьшать видимость по умолчанию в доступный API. Атрибут указывает среде выполнения во время выполнения то, что запросы на динамический доступ (например, посредством отражения или других технологий динамических вызовов) должны предоставляться с уменьшенной видимостью в доступный API. Уменьшение видимости в API может, соответственно, уменьшать формирование метаданных. В некоторых вариантах осуществления, уменьшение видимости в API включает в себя запрещение динамического доступа в API.

[0012] Дополнительные варианты осуществления включают в себя предоставление потребителю указанной видимости в API. Исполняемый код выполняется в среде выполнения. Исполняемый код извлекается из кода приложения. В ходе выполнения исполняемого кода, динамический вызов принимается от потребителя, чтобы выполнять часть исполняемого кода. Часть исполняемого кода извлекается из части кода приложения, которая ссылается на API в библиотеке. К видимости по умолчанию во время выполнения в API осуществляется доступ на основе типа API.

[0013] К атрибутам, применяемым к API, осуществляется доступ. Атрибуты, применяемые к API, могут служить признаком желания, автором API, изменять видимость по умолчанию во время выполнения в API. К атрибутам, применяемым к части кода приложения, осуществляется доступ. Атрибуты, применяемые к части кода приложения, могут служить признаком желания, автором кода приложения, предоставлять меньшую видимость в API, чем указывается посредством видимости по умолчанию во время выполнения, измененной посредством атрибутов, применяемых к API.

[0014] Вычисленная видимость в API определяется на основе одного или более из следующего: видимость по умолчанию во время выполнения в API, атрибуты, применяемые к API, и атрибуты, применяемые к части кода приложения, которая ссылается на API. Динамический вызов содержит вычисленную видимость в API.

[0015] Это краткое изложение сущности изобретения предоставлено для представления в упрощенной форме подборки концепций, которые дополнительно описаны ниже в подробном описании. Данное краткое изложение сущности изобретения не имеет намерение идентифицировать ключевые или важнейшие признаки заявленного изобретения, а также не имеет намерение использоваться в качестве помощи при определении объема заявленного изобретения.

[0016] Дополнительные признаки и преимущества изобретения частично излагаются в нижеприведенном описании и частично должны становиться очевидными из описания либо могут быть изучены при практическом использовании изобретения. Признаки и преимущества изобретения могут быть реализованы и получены посредством инструментов и комбинаций, конкретно указанных в прилагаемой формуле. Эти и другие признаки настоящего изобретения должны становиться более очевидными из нижеприведенного описания и формулы изобретения или могут быть изучены при практическом использовании изобретения, как изложено далее.

Краткое описание чертежей

[0017] Чтобы описывать способ, которым могут быть получены вышеуказанные и другие преимущества и признаки изобретения, более подробное описание изобретения, вкратце описанного выше, должно быть представлено посредством ссылки на его конкретные варианты осуществления, которые проиллюстрированы на прилагаемых чертежах. При условии того, что эти чертежи изображают только типичные варианты осуществления изобретения и, следовательно, не должны рассматриваться как ограничивающие его объем, изобретение описывается и поясняется с дополнительной спецификой и подробностью посредством использования прилагаемых чертежей, на которых:

[0018] Фиг.1 иллюстрирует примерную компьютерную архитектуру, которая упрощает управление доступом во время выполнения к интерфейсу прикладного программирования.

[0019] Фиг.2 иллюстрирует блок-схему последовательности операций примерного способа для управления доступом во время выполнения к интерфейсу прикладного программирования.

[0020] Фиг.3 иллюстрирует примерную компьютерную архитектуру, которая упрощает уменьшение видимости по умолчанию в доступный интерфейс прикладного программирования.

[0021] Фиг.4 иллюстрирует блок-схему последовательности операций примерного способа для уменьшения видимости по умолчанию в доступный интерфейс прикладного программирования.

[0022] Фиг.5 иллюстрирует примерную компьютерную архитектуру, которая упрощает предоставление потребителю указанной видимости в интерфейс прикладного программирования.

[0023] Фиг.6 иллюстрирует блок-схему последовательности операций примерного способа для предоставления потребителю указанной видимости в интерфейс прикладного программирования.

Подробное описание изобретения

[0024] Настоящее изобретение распространяется на способы, системы и компьютерные программные продукты для управления доступом во время выполнения к интерфейсам прикладного программирования. Варианты осуществления изобретения включают в себя управление доступом во время выполнения к интерфейсам прикладного программирования (API). Среда выполнения предоставляет запросы на динамический доступ (например, посредством отражения или других технологий динамических вызовов) с видимостью по умолчанию в API на основе API-типа. Например, видимость по умолчанию в не общедоступные API может запрещать динамический доступ.

[0025] К набору API, комбинированных в библиотеку, осуществляется доступ. Набор API включает в себя один или более общедоступных API и один или более не общедоступных API. Из набора API идентифицируется API, для которого должна быть изменена видимость по умолчанию, предоставленная для запросов на динамический доступ.

[0026] Видимость по умолчанию в API изменена посредством применения атрибута к API. Атрибут указывает среде выполнения во время выполнения то, что запросы на динамический доступ должны предоставляться для измененной видимости в API. Изменение видимости может включать в себя разрешение динамического доступа к не общедоступному API, для которого по умолчанию динамический доступ не разрешается.

[0027] Другие варианты осуществления включают в себя уменьшение видимости по умолчанию в доступный API. К коду приложения для приложения осуществляется доступ. Код приложения ссылается на один или более доступных API, комбинированных в библиотеку. Доступный API, на который ссылаются в коде приложения, идентифицирован. Доступный API выбирается из множества доступных API.

[0028] Определяется то, что к доступному API не должен динамически осуществляться доступ во время выполнения. Атрибут применяется к доступному API, чтобы уменьшать видимость по умолчанию в доступный API. Атрибут указывает среде выполнения во время выполнения то, что запросы на динамический доступ (например, посредством отражения или других технологий динамических вызовов) должны предоставляться с уменьшенной видимостью в доступный API. Уменьшение видимости в API может, соответственно, уменьшать формирование метаданных. В некоторых вариантах осуществления, уменьшение видимости в API включает в себя запрещение динамического доступа в API.

[0029] Дополнительные варианты осуществления включают в себя предоставление потребителю указанной видимости в API. Исполняемый код выполняется в среде выполнения. Исполняемый код извлекается из кода приложения. В ходе выполнения исполняемого кода, динамический вызов принимается от потребителя, чтобы выполнять часть исполняемого кода. Часть исполняемого кода извлекается из части кода приложения, которая ссылается на API в библиотеке. К видимости по умолчанию во время выполнения в API осуществляется доступ на основе типа API.

[0030] К атрибутам, применяемым к API, осуществляется доступ. Атрибуты, применяемые к API, могут служить признаком желания, автором API, изменять видимость по умолчанию во время выполнения в API. К атрибутам, применяемым к части кода приложения, осуществляется доступ. Атрибуты, применяемые к части кода приложения, могут служить признаком желания, автором кода приложения, предоставлять меньшую видимость в API, чем указывается посредством видимости по умолчанию во время выполнения, измененной посредством атрибутов, применяемых к API.

[0031] Вычисленная видимость в API определяется на основе одного или более из следующего: видимость по умолчанию во время выполнения в API, атрибуты, применяемые к API, и атрибуты, применяемые к части кода приложения, которая ссылается на API. Динамический вызов содержит вычисленную видимость в API.

[0032] Варианты осуществления настоящего изобретения могут содержать или использовать компьютер специального назначения или общего назначения, включающий в себя компьютерные аппаратные средства, такие как, например, один или более процессоров и системное запоминающее устройство, как подробнее поясняется ниже. Варианты осуществления в пределах объема настоящего изобретения также включают в себя физические и другие машиночитаемые носители для переноса или сохранения машиноисполняемых инструкций и/или структур данных. Эти машиночитаемые носители могу представлять собой любые доступные носители, к которым можно осуществлять доступ посредством компьютерной системы общего назначения или специального назначения. Машиночитаемые носители, которые сохраняют машиноисполняемые инструкции, представляют собой компьютерные носители (устройства) хранения данных. Машиночитаемые носители, которые переносят машиноисполняемые инструкции, представляют собой среды передачи. Таким образом, в качестве примера, а не ограничения, варианты осуществления изобретения могут содержать, по меньшей мере, два совершенно различных типа машиночитаемых носителей: компьютерные носители (устройства) хранения данных и среды передачи.

[0033] Компьютерные носители (устройства) хранения данных включают в себя RAM, ROM, EEPROM, CD-ROM, полупроводниковые накопители (SSD) (к примеру, на основе RAM), флэш-память, запоминающее устройство на фазовых переходах (PCM) или другие типы запоминающего устройства, другие устройства хранения на оптических дисках, устройства хранения данных на магнитных дисках или другие магнитные устройства хранения данных либо любой другой носитель, который может быть использован для того, чтобы сохранять требуемое средство программного кода в форме машиноисполняемых инструкций или структур данных и к которому может осуществляться доступ посредством компьютера общего назначения или специального назначения.

[0034] "Сеть" задается одна или более линий связи для передачи данных, которые обеспечивают транспортировку электронных данных между компьютерными системами и/или модулями и/или другими электронными устройствами. Когда информация передается или предоставляется по сети или другим соединениям связи (проводным, беспроводным либо комбинации проводных и беспроводных) в компьютер, компьютер надлежащим образом рассматривает соединение в качестве среды передачи. Среды передачи могут включать в себя сеть и/или линии связи для передачи данных, которые могут использоваться для того, чтобы переносить требуемое средство программного кода в форме машиноисполняемых инструкций или структур данных, и к которым может осуществляться доступ посредством компьютера общего назначения или специального назначения. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей.

[0035] Дополнительно, после достижения различных компонентов компьютерной системы, средство программного кода в форме машиноисполняемых инструкций или структур данных передаваться автоматически из сред передачи в компьютерные носители (устройства) хранения данных (или наоборот). Например, машиноисполняемые инструкции или структуры данных, принятые по сети или линии связи для передачи данных, могут быть буферизованы в RAM внутри сетевого интерфейсного модуля (например, NIC) и затем в конечном счете переданы в RAM компьютерной системы и/или в менее энергозависимые компьютерные носители (устройства) хранения данных в компьютерной системе. Таким образом, следует понимать, что компьютерные носители (устройства) хранения данных могут быть включены в компоненты компьютерной системы, которые также (или даже главным образом) используют среды передачи.

[0036] Машиночитаемые инструкции содержат, например, инструкции и данные, которые при выполнении в процессоре инструктируют компьютеру общего назначения, компьютеру специального назначения или устройству обработки специального назначения выполнять определенную функцию или группу функций. Машиноисполняемые инструкции, например, могут представлять собой двоичные файлы, инструкции в промежуточном формате, к примеру, на языке ассемблера или даже в исходном коде. Хотя изобретение описано на языке, характерном для структурных признаков и/или технологических этапов, следует понимать, что объем изобретения, определяемый прилагаемой формулой изобретения, не обязательно ограничен описанными признаками или этапами, описанными выше. Наоборот, описанные признаки и этапы раскрываются как примерные формы реализации формулы изобретения.

[0037] Специалисты в данной области техники должны принимать во внимание, что изобретение может осуществляться на практике в сетевых вычислительных окружениях с множеством типов конфигураций компьютерных систем, включающих в себя персональные компьютеры, настольные компьютеры, переносные компьютеры, процессоры сообщений, карманные устройства, многопроцессорные системы, микропроцессорные или программируемые бытовые электронные приборы, сетевые PC, миникомпьютеры, мэйнфреймы, мобильные телефоны, PDA, планшетные компьютеры, устройства поискового вызова, маршрутизаторы, коммутаторы и т.п. Изобретение также может осуществляться на практике в распределенных системных окружениях, в которых локальные и удаленные компьютерные системы, которые соединены (посредством проводных линий связи для передачи данных, беспроводных линий связи для передачи данных или посредством комбинации проводных и беспроводных линий связи для передачи данных) через сеть, выполняют задачи. В распределенном системном окружении, программные модули могут размещаться как в локальных, так и в удаленных запоминающих устройствах.

[0038] Варианты осуществления изобретения также могут реализовываться в облачных вычислительных окружениях. В этом описании и прилагаемой формуле изобретения, "облачные вычисления" задаются как модель для обеспечения сетевого доступа по запросу к совместно используемому пулу конфигурируемых вычислительных ресурсов. Например, облачные вычисления могут использоваться на рынке для того, чтобы предлагать повсеместный и удобный доступ по запросу к совместно используемому пулу конфигурируемых вычислительных ресурсов. Совместно используемый пул конфигурируемых вычислительных ресурсов может быстро инициализироваться через виртуализацию и высвобождаться при небольших затратах на управление или взаимодействие с поставщиком услуг, а затем масштабироваться соответствующим образом.

[0039] Модель облачных вычислений может состоять из различных характеристик, таких как, например, самообслуживание по запросу, широкополосный доступ к сети, объединение ресурсов в пул, быстрая эластичность, обслуживание на основе измеряемых показателей и т.д. Модель облачных вычислений также может раскрывать различные модели предоставления услуг, такие как, например, программное обеспечение как услуга (SaaS), платформа как услуга (PaaS) и инфраструктура как услуга (IaaS). Модель облачных вычислений также может быть развернута с использованием различных моделей развертывания, таких как частное облако, коллективное облако, общедоступное облако, гибридное облако и т.д. В этом описании и в формуле изобретения, "облачное вычислительное окружение" представляет собой окружение, в котором используются облачные вычисления.

[0040] Варианты осуществления изобретения дают возможность разработчикам библиотек более точно и легко управлять тем, какой из API их библиотек может вызываться динамически. Таким образом, их нагрузка по обслуживанию и управлению версиями может более надлежащим образом управляться. Дополнительно, разработчики приложений могут управлять тем, какие из таких API следует в дальнейшем исключать из сценариев динамических вызовов, с тем, чтобы минимизировать объем служебной информации для поддержки во время выполнения.

[0041] Фиг.1 иллюстрируют примерную компьютерную архитектуру 100, которая упрощает управление доступом к интерфейсу прикладного программирования (API). Ссылаясь на фиг.1, компьютерная архитектура 100 включает в себя среду 101 разработки и среду 102 выполнения. Среда 101 разработки и среда 102 выполнения могут соединяться между собой (или быть частью) по сети, такой как, например, системная шина, локальная вычислительная сеть (LAN), глобальная вычислительная сеть (WAN) и даже Интернет. Соответственно, среда 101 разработки и среда 102 выполнения, а также все остальные соединенные компьютерные системы и их компоненты могут создавать связанные с сообщениями данные и обмениваться связанными с сообщениями данными (например, через датаграммы по Интернет-протоколу (IP) и другие протоколы верхнего уровня, которые используют IP-датаграммы, такие как протокол управления передачей (TCP), протокол передачи гипертекста (HTTP), простой протокол передачи почты (SMTP) и т.д. или с использованием других протоколов не на основе датаграмм), по сети.

[0042] Среда 101 разработки может представлять собой приложение, которое предоставляет средства для разработки программного обеспечения, включающие в себя, но не только: редактор исходного кода, автоматизацию сборки, отладчик, систему управления версиями, средство просмотра классов, инспектор объектов, схему иерархии классов и т.д. В некоторых вариантах осуществления, среда 101 разработки включает в себя или включена в интегрированную среду разработки (IDE). Разработчик библиотек может использовать среду 101 разработки для того, чтобы применять атрибут к API, чтобы изменять видимость API для запросов на динамический доступ.

[0043] Среда 102 выполнения может представлять собой приложение, которое предоставляет средства для выполнения программного обеспечения. Среда 102 выполнения может включать в себя компилятор (например, оперативный (JIT) компилятор) и/или интерпретатор для выполнения кода, разработанного в среде разработки программного обеспечения 101. В некоторых вариантах осуществления, среда 102 выполнения включает в себя или включена в интегрированную среду разработки (IDE). Среда 102 выполнения может включать в себя механизмы (например, отражение) для динамического запроса доступа к API.

[0044] Среда 101 разработки и среда 102 выполнения могут быть интегрированы в идентичную среду или могут постоянно размещаться в отдельных средах.

[0045] Среда 102 выполнения включает в себя модуль 109 вычисления видимости. Модуль вычисления видимости выполнен с возможностью вычислять видимость в API на основе API-типа (например, внутренний, частный, общедоступный и т.д.) и применяемых атрибутов. Правила 108 видимости по умолчанию могут задавать видимость по умолчанию (например, разрешать динамический доступ или удалять динамический доступ) для каждого API-типа. Применяемые атрибуты могут использоваться для того, чтобы изменять или переопределять видимость по умолчанию. В связи с этим, применяемые атрибуты предоставляют разработчику библиотек более точный управлением тем, как к отдельным API может динамически осуществляться доступ.

[0046] В некоторых вариантах осуществления, правила 108 видимости по умолчанию задают то, что динамический доступ удаляется для API, указываемых в качестве частных или внутренних. Разработчик библиотек может использовать среду 101 разработки для того, чтобы применять атрибут к частному или внутреннему API. Применяемый атрибут может указывать то, что динамический доступ должен разрешаться для частного или внутреннего API. После приема динамического вызова в частный или внутренний API модуль 109 вычисления видимости может определять то, что применяемый атрибут переопределяет видимость по умолчанию (удаленного динамического доступа) для частного или внутреннего API. В связи с этим, для динамического вызова разрешается доступ к частному или внутреннему API.

[0047] Фиг.2 иллюстрирует блок-схему последовательности операций примерного способа 200 для управления доступом к интерфейсу прикладного программирования (API). Ниже описывается способ 200 относительно компонентов и данных компьютерной архитектуры 100.

[0048] Способ 200 включает в себя осуществление доступа к набору интерфейсов прикладного программирования (API), комбинированных в библиотеку, причем набор интерфейсов прикладного программирования (API) включает в себя один или более общедоступных интерфейсов прикладного программирования (API) и один или более не общедоступных интерфейсов прикладного программирования (API) (201). Например, среда 101 разработки может осуществлять доступ к библиотеке 103. Библиотека 103 включает в себя один или более общедоступных API, включающих в себя общедоступный API 104. Библиотека 103 включает в себя один или более не общедоступных (например, частных или внутренних) API, включающих в себя не общедоступный API 106.

[0049] Способ 200 включает в себя идентификацию интерфейса прикладного программирования (API) из набора интерфейсов прикладного программирования (API), для которого должна быть изменена видимость по умолчанию, предоставленная для запросов на динамический доступ (202). Например, среда 101 разработки (возможно в ответ на ввод автора) может идентифицировать то, что должна быть изменена видимость по умолчанию для запросов на динамический доступ (например, с использованием отражения или других технологий динамических вызовов) в не общедоступный API 106.

[0050] Способ 200 включает в себя изменение видимости по умолчанию в интерфейс прикладного программирования (API) на измененную видимость посредством применения атрибута к интерфейсу прикладного программирования (API), причем атрибут указывает для среды выполнения во время выполнения то, что запросы на динамический доступ должны предоставляться для измененной видимости в интерфейс прикладного программирования (API) (203). Например, автор 113 может вводить ввод 112 видимости в среду 101 разработки. В ответ на ввод 112 видимости, среда 101 разработки может применять атрибут 107 к необщедоступному API 106. Атрибут 107 может указывать среде 102 выполнения то, что видимость по умолчанию для необщедоступных API, заданных в правилах 108 видимости по умолчанию, должна быть изменена для необщедоступного API 106.

[0051] Затем, библиотека 103 может быть компилирована вместе с другим исходным кодом в исполняемый код 111. В ходе выполнения исполняемого кода 111, модуль 109 вычисления видимости может рассматривать как правила 108 видимости по умолчанию, так и атрибут 107 при вычислении видимости в не общедоступный API 106. В некоторых вариантах осуществления, атрибут 107 указывает то, что динамический доступ к не общедоступному API 106 разрешается, даже если правила 108 видимости по умолчанию указывают то, что динамический доступ к не общедоступным API должен запрещаться.

[0052] Фиг.3 иллюстрирует примерную компьютерную архитектуру 100, которая упрощает уменьшение видимости по умолчанию в доступный интерфейс прикладного программирования (API). Ссылаясь на фиг.3, компьютерная архитектура 300 включает в себя среду 301 разработки и среду 302 выполнения. Среда 301 разработки и среда 302 выполнения могут соединяться между собой (или быть частью) по сети, такой как, например, системная шина, локальная вычислительная сеть (LAN), глобальная вычислительная сеть (WAN) и даже Интернет. Соответственно, среда 301 разработки и среда 302 выполнения, а также все остальные соединенные компьютерные системы и их компоненты могут создавать связанные с сообщениями данные и обмениваться связанными с сообщениями данными (например, через датаграммы по Интернет-протоколу (IP) и другие протоколы верхнего уровня, которые используют IP-датаграммы, такие как протокол управления передачей (TCP), протокол передачи гипертекста (HTTP), простой протокол передачи почты (SMTP) и т.д. или с использованием других протоколов не на основе датаграмм), по сети.

[0053] Среда 301 разработки может представлять собой приложение, которое предоставляет средства для разработки программного обеспечения, включающие в себя, но не только: редактор исходного кода, автоматизацию сборки, отладчик, систему управления версиями, средство просмотра классов, инспектор объектов, схему иерархии классов и т.д. В некоторых вариантах осуществления, среда 301 разработки включает в себя или включена в интегрированную среду разработки (IDE). Разработчик приложений может использовать среду 301 разработки для того, чтобы применять атрибут к коду, ссылающемуся на доступный API (например, включенный в стороннюю библиотеку). Атрибуты, применяемые к коду, ссылающемуся на доступный API, могут использоваться для того, чтобы уменьшать видимость по умолчанию в доступный API.

[0054] Среда 302 выполнения может представлять собой приложение, которое предоставляет средства для выполнения программного обеспечения. Среда выполнения может включать в себя компилятор (например, оперативный (JIT) компилятор) и/или интерпретатор для выполнения кода, разработанного в среде 301 разработки программного обеспечения. В некоторых вариантах осуществления, среда 302 выполнения включает в себя или включена в интегрированную среду разработки (IDE). Среда 302 выполнения может включать в себя механизмы (например, отражение) для динамического запроса доступа к API.

[0055] Среда 301 разработки и среда 302 выполнения могут быть интегрированы в идентичную среду или могут постоянно размещаться в отдельных средах.

[0056] Среда 302 выполнения включает в себя модуль 309 вычисления видимости. Модуль 309 вычисления видимости выполнен с возможностью вычислять видимость в доступный API (например, общедоступный API или не общедоступный API с атрибутами для того, чтобы разрешать динамический доступ) на основе атрибутов, применяемых к коду, ссылающемуся на доступный API. Правила 308 видимости по умолчанию могут разрешать динамический доступ к доступным API. В связи с этим, применяемые атрибуты предоставляют разработчику приложений механизм для того, чтобы исключать иным способом доступные API (например, включенные в стороннюю библиотеку) из динамического доступа. Исключение иным способом доступного API из динамического доступа минимизирует объем служебной информации для поддержки во время выполнения (например, формирование метаданных) и за счет этого экономит ресурсы.

[0057] Фиг.4 иллюстрирует блок-схему последовательности операций примерного способа 400 для уменьшения видимости по умолчанию в доступный интерфейс прикладного программирования (API). Ниже описывается способ 400 относительно компонентов и данных компьютерной архитектуры 300.

[0058] Способ 400 включает в себя осуществление доступа к коду приложения для приложения, причем код приложения ссылается на один или более доступных интерфейсов прикладного программирования (API), комбинированных в библиотеку (401). Например, среда 301 разработки может осуществлять доступ к коду 314 приложения. Среда 310 разработки также может осуществлять доступ к библиотеке 30. Код 314 приложения может ссылаться на один или более API, таких как, например, API 304 и 306, включенные в библиотеку 303.

[0059] Способ 400 включает в себя идентификацию доступного интерфейса прикладного программирования (API), на который ссылаются в коде приложения, причем доступный интерфейс прикладного программирования (API) выбирается из числа одного или более доступных интерфейсов прикладного программирования (API) (402). Например, среда 301 разработки может идентифицировать API 306, на который ссылаются посредством ссылки 316 на API.

[0060] Способ 400 включает в себя определение того, что к доступному интерфейсу прикладного программирования (API) не должен динамически осуществляться доступ во время выполнения (403). Например, среда 301 разработки (возможно в ответ на ввод автора) может определять то, что динамический доступ к API 306 должен запрещаться.

[0061] Способ 400 включает в себя уменьшение видимости по умолчанию в доступный интерфейс прикладного программирования (API) до уменьшенной видимости посредством применения атрибута к части кода приложения, ссылающейся на доступный интерфейс прикладного программирования (API), причем атрибут указывает для среды выполнения во время выполнения то, что запросы на динамический доступ должны предоставляться для уменьшенной видимости в доступный интерфейс прикладного программирования (API) (404). Например, автор 313 может вводить ввод видимости 312 в среду 301 разработки. В ответ на ввод видимости 312, среда 301 разработки может применять атрибут 317 к ссылке 316 на API (ссылке на API 306). Атрибут 317 может указывать среде 302 выполнения то, что видимость по умолчанию для API 306 должна уменьшаться.

[0062] Затем, код 314 приложения и библиотека 303 могут быть компилированы (возможно с другим исходным кодом) в исполняемый код 311. В ходе выполнения исполняемого кода 311, модуль 309 вычисления видимости может рассматривать как правила 308 видимости по умолчанию, так и атрибут 317 при вычислении видимости в API 306. В некоторых вариантах осуществления, атрибут 317 указывает то, что динамический доступ к API 306 запрещается, даже если правила 308 видимости по умолчанию указывают то, что динамический доступ к доступным API должен разрешаться.

[0063] Ограниченная видимость в API может включать в себя неформирование метаданных для API. Например, как проиллюстрировано в компьютерной архитектуре 300, метаданные не формируются для API 306. С другой стороны, метаданные 319 могут формироваться для API 304 (другого доступного API, на который ссылаются из кода 314 приложения).

[0064] Фиг.5 иллюстрирует примерную среду 500 выполнения, которая упрощает предоставление потребителю указанной видимости в интерфейс прикладного программирования (API). Ссылаясь на фиг.5, среда 500 выполнения включает в себя модуль 501 вычисления видимости и потребитель 531. Модуль 501 вычисления видимости и потребитель 531 могут соединяться между (или быть частью) по сети, такой как, например, системная шина, локальная вычислительная сеть (LAN), глобальная вычислительная сеть (WAN) и даже Интернет. Соответственно, модуль 501 вычисления видимости и потребитель 531, а также все остальные соединенные компьютерные системы и их компоненты могут создавать связанные с сообщениями данные и обмениваться связанными с сообщениями данными (например, через датаграммы по Интернет-протоколу (IP) и другие протоколы верхнего уровня, которые используют IP-датаграммы, такие как протокол управления передачей (TCP), протокол передачи гипертекста (HTTP), простой протокол передачи почты (SMTP) и т.д. или с использованием других протоколов не на основе датаграмм), по сети.

[0065] Среда 500 выполнения может представлять собой приложение, которое предоставляет средства для выполнения программного обеспечения. Среда выполнения может включать в себя компилятор (например, оперативный (JIT) компилятор) и/или интерпретатор для выполнения кода, разработанного в среде 500 разработки программного обеспечения. В некоторых вариантах осуществления, среда 500 выполнения включает в себя или включена в интегрированную среду разработки (IDE). Среда 500 выполнения может включать в себя механизмы (например, отражение) для динамического запроса доступа к API.

[0066] Среда 500 выполнения включает в себя модуль 501 вычисления видимости. Модуль 501 вычисления видимости выполнен с возможностью вычислять видимость в каждый из множества API, сгруппированных в библиотеке. Видимость может вычисляться для API на основе API-типа (например, внутренний, частный, общедоступный), атрибутов, применяемых (например, автор библиотек) к API, и атрибутов, применяемых к приложению, которое ссылается на API. Применяемые атрибуты могут использоваться для того, чтобы изменять, переопределять, уменьшать и т.д. видимость по умолчанию.

[0067] В некоторых вариантах осуществления, правила 502 видимости по умолчанию задают то, что динамический доступ удаляется для не общедоступных (например, частных или внутренних) API, и то, что динамический доступ разрешается для общедоступных API. Тем не менее, автор не общедоступного API (например, автор библиотек) может применять атрибут к не общедоступному API, чтобы переопределять видимость по умолчанию и разрешать динамический доступ к не общедоступному API. Аналогично, автор общедоступного API (например, автор библиотек) может применять атрибут к общедоступному API, чтобы переопределять видимость по умолчанию и отказывать в динамическом доступе к общедоступному API. Другие правила видимости по умолчанию также являются возможными.

[0068] Для любых динамически доступных API (будь то динамически доступных по умолчанию или динамически доступных посредством применяемого атрибута), сторонний автор (например, автор приложений) может применять атрибут к коду, ссылающемуся на динамически доступный API, чтобы удалять динамический доступ из API. Таким образом, автор приложений может минимизировать объем служебной информации для поддержки во время выполнения (например, формирование метаданных) и за счет этого экономит ресурсы.

[0069] Фиг.6 иллюстрирует блок-схему последовательности операций примерного способа 600 для предоставления потребителю указанной видимости в интерфейс прикладного программирования (API). Ниже описывается способ 600 относительно компонентов и данных среды 500 выполнения.

[0070] Способ 600 включает в себя выполнение исполняемого кода в среде выполнения, причем исполняемый код извлекается из кода приложения (601). Например, исполняемый код может выполняться в среде 500 выполнения. Исполняемый код 503 может извлекаться из кода приложения, который включает в себя ссылки на API, содержащиеся в библиотеке. Например, ссылки 511 и 517 на API могут ссылаться на API, содержащиеся в библиотеке. API, содержащиеся в библиотеке, могут включать в себя API 513 и 518.

[0071] Способ 600 включает в себя в ходе выполнения исполняемого кода, способ 600 включает в себя прием динамического вызова от потребителя, чтобы выполнять часть исполняемого кода, причем часть исполняемого кода извлекается из части кода приложения, которая ссылается на интерфейс прикладного программирования (API) в библиотеке (602). Например, динамический вызов 521 может приниматься от потребителя 531. Динамический вызов 521 может представлять собой вызов для того, чтобы выполнять часть исполняемого кода 503.

[0072] В одном варианте осуществления, динамический вызов 521 представляет собой вызов для того, чтобы выполнять исполняемый код, который включает в себя ссылку 511 на API. Ссылка 511 на API может ссылаться либо на API 513, либо на API 518. В другом варианте осуществления, динамический вызов 521 представляет собой вызов для того, чтобы выполнять исполняемый код, который включает в себя ссылку 517 на API. Ссылка 517 на API может ссылаться либо на API 513, либо на API 518.

[0073] Способ 600 включает в себя осуществление доступа к видимости по умолчанию во время выполнения в интерфейс прикладного программирования (API) на основе типа интерфейса прикладного программирования (API) (603). Как указано посредством типа 514, API 513 представляет собой не общедоступный API. Таким образом, когда ссылка на API ссылается на API 513, к видимости по умолчанию во время выполнения для (например, запрещения динамического доступа) не общедоступных API может осуществляться доступ из правил 502 видимости по умолчанию (для API 513). Как указано посредством типа 519, API 518 представляет собой общедоступный API. Таким образом, когда ссылка на API ссылается на API 518, к видимости по умолчанию во время выполнения для (например, разрешения динамического доступа) общедоступных API может осуществляться доступ из правил 502 видимости по умолчанию (для API 518).

[0074] Способ 600 включает в себя осуществление доступа к атрибутам, применяемым к интерфейсу прикладного программирования (API), причем атрибуты, применяемые к интерфейсу прикладного программирования (API), указывают желание, автором интерфейса прикладного программирования (API), изменять видимость по умолчанию во время выполнения в интерфейс прикладного программирования (API) (604). Например, когда ссылка на API ссылается на API 513, к атрибуту 516 может осуществляться доступ. Атрибут 516 может указывать желание, автором библиотек, изменять видимость по умолчанию во время выполнения (как задано в правилах 502 видимости по умолчанию) в API 513. Например, по умолчанию, динамический доступ к не общедоступным API может запрещаться. Тем не менее, атрибут 513 может указывать то, что динамический доступ к API 513 должен разрешаться.

[0075] Способ 600 включает в себя осуществление доступа к атрибутам, применяемым к части кода приложения, которая ссылается на интерфейс прикладного программирования (API), причем атрибуты, применяемые к части кода приложения, указывают желание, автором кода приложения, предоставлять видимость в интерфейс прикладного программирования (API) в меньшей степени, чем указывается посредством видимости по умолчанию во время выполнения, измененной посредством атрибутов, применяемых к интерфейсу прикладного программирования (API) (605). Например, когда динамический вызов 521 представляет собой вызов для того, чтобы выполнять исполняемый код, который включает в себя ссылку 511 на API, к атрибуту 512 может осуществляться доступ. Атрибут 512 может указывать желание, автором приложений, уменьшать видимость в API для ссылки (например, API 513 или API 518). Например, атрибут 512 может указывать то, что динамический доступ к API ссылок (например, API 513 или API 518) должен запрещаться. В связи с этим, даже если автор библиотек иным способом разрешает динамический доступ к API, разработчик приложений может применять атрибут 512, чтобы запрещать динамический доступ к API.

[0076] Способ 600 включает в себя определение вычисленной видимости в интерфейс прикладного программирования (API) на основе одного или более из следующего: видимость по умолчанию во время выполнения в интерфейс прикладного программирования (API), атрибуты, применяемые к интерфейсу прикладного программирования (API), и атрибуты, применяемые к части кода приложения, которая ссылается на интерфейс прикладного программирования (API) (606). Таким образом, модуль 501 вычисления видимости может определять вычисленную видимость 522 в API на основе видимости по умолчанию для типа API (как задано в правилах 502 видимости по умолчанию), атрибутов, применяемых к API, и атрибутов, применяемых к ссылке на API, которая ссылается на API.

[0077] Способ 600 включает в себя предоставление для динамического вызова видимости в интерфейс прикладного программирования (API) в соответствии с вычисленной видимостью (607). Например, потребитель 531 может содержать видимость 522 в динамически вызываемый API в исполняемом коде 503. Результаты 524 динамического вызова 521 также могут возвращаться в потребитель 531. Результаты 524 могут указывать то, что динамический доступ к динамически вызываемому API не разрешается.

[0078] В исполняемом коде 503 возможны различные специальные комбинации ссылок на код и API. В одном варианте осуществления, динамический вызов 521 использует ссылку 511 на API для того, чтобы вызывать API 513. В этом варианте осуществления, видимость 522 определяется из видимости по умолчанию для API-типа 514 (например, как задано в правилах 502 видимости по умолчанию), атрибута 512 и атрибута 516. В другом варианте осуществления, динамический вызов 521 использует ссылку 511 на API для того, чтобы вызывать API 518. В этом варианте осуществления, видимость 522 определяется из видимости по умолчанию для API-типа 519 (например, как задано в правилах 502 видимости по умолчанию) и атрибута 512.

[0079] В дополнительном варианте осуществления, динамический вызов 521 использует ссылку 517 на API для того, чтобы вызывать API 513. В этом дополнительном варианте осуществления видимость 522 определяется из видимости по умолчанию для API-типа 514 (например, как задано в правилах 502 видимости по умолчанию) и атрибута 516. В дополнительном варианте осуществления, динамический вызов 521 использует ссылку 517 на API для того, чтобы вызывать API 518. В этом дополнительном варианте осуществления видимость 522 определяется из видимости по умолчанию для API-типа 519 (например, как задано в правилах 502 видимости по умолчанию).

[0080] Настоящее изобретение может быть осуществлено в других характерных формах без отступления от своей сущности или неотъемлемых характеристик. Описанные варианты осуществления должны рассматриваться во всех отношениях только как иллюстративные, а не ограничивающие. Следовательно, объем изобретения указан посредством прилагаемой формулы изобретения, а не посредством вышеприведенного описания. Все изменения, которые подпадают под смысл и рамки равнозначности формулы изобретения, должны охватываться ее объемом.


УПРАВЛЕНИЕ ДОСТУПОМ ВО ВРЕМЯ ВЫПОЛНЕНИЯ К ИНТЕРФЕЙСАМ ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ
УПРАВЛЕНИЕ ДОСТУПОМ ВО ВРЕМЯ ВЫПОЛНЕНИЯ К ИНТЕРФЕЙСАМ ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ
УПРАВЛЕНИЕ ДОСТУПОМ ВО ВРЕМЯ ВЫПОЛНЕНИЯ К ИНТЕРФЕЙСАМ ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ
УПРАВЛЕНИЕ ДОСТУПОМ ВО ВРЕМЯ ВЫПОЛНЕНИЯ К ИНТЕРФЕЙСАМ ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ
УПРАВЛЕНИЕ ДОСТУПОМ ВО ВРЕМЯ ВЫПОЛНЕНИЯ К ИНТЕРФЕЙСАМ ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ
УПРАВЛЕНИЕ ДОСТУПОМ ВО ВРЕМЯ ВЫПОЛНЕНИЯ К ИНТЕРФЕЙСАМ ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ
УПРАВЛЕНИЕ ДОСТУПОМ ВО ВРЕМЯ ВЫПОЛНЕНИЯ К ИНТЕРФЕЙСАМ ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ
Источник поступления информации: Роспатент

Показаны записи 1-10 из 499.
10.06.2015
№216.013.5597

Регулировка громкости на основании местоположения слушателя

Изобретение относится к средствам регулировки громкости на основании местоположения слушателя. Технический результат заключается в осуществлении возможности регулирования громкости на основании местоположения слушателя. Идентифицируется местоположение одного или более громкоговорителей и...
Тип: Изобретение
Номер охранного документа: 0002553432
Дата охранного документа: 10.06.2015
27.06.2015
№216.013.5800

Смоделированное видео с дополнительными точками обзора и повышенной разрешающей способностью для камер наблюдения за движением транспорта

Изобретение относится к формированию смоделированного видеоизображения. Техническим результатом является получение смоделированных видеоизображений движения транспортных средств, имеющих высокую частоту кадров, высокую разрешающую способность и многочисленные виды, путем обработки видео от...
Тип: Изобретение
Номер охранного документа: 0002554069
Дата охранного документа: 27.06.2015
27.06.2015
№216.013.581e

Выбираемые пользователем операционные среды для устройств мобильной связи

Изобретение относится к системам связи. Технический результат заключается в осуществлении передач в зависимости от типа операционной среды. В устройстве мобильной связи принимают передачу информации от источника передачи. Получают указатель типа операционной среды, связанного с источником...
Тип: Изобретение
Номер охранного документа: 0002554099
Дата охранного документа: 27.06.2015
27.06.2015
№216.013.5946

Система и способ для выбора вкладки в браузере с вкладками

Изобретение относится к средствам управления и выбора одной из набора открытых вкладок в браузере с вкладками. Технический результат заключается в уменьшении времени доступа к необходимой вкладке. Отображают web-браузер в окне дисплея, причем окно web-браузера отображает множество открытых...
Тип: Изобретение
Номер охранного документа: 0002554395
Дата охранного документа: 27.06.2015
27.06.2015
№216.013.5acc

Поддержание возможности отмены и возврата при объединениях метаданных

Группа изобретений относится к средствам для совместной работы над документами. Технический результат заключается в обеспечении сохранения метаданных во время операции отмены на клиентском компьютере при совместной работе над документами. Для этого представлен способ для сохранения метаданных...
Тип: Изобретение
Номер охранного документа: 0002554785
Дата охранного документа: 27.06.2015
27.06.2015
№216.013.5b08

Синхронизация частей файла с использованием серверной модели хранения информации

Изобретение относится к области синхронизации частей файла с помощью серверной модели хранения информации в клиент-серверной компьютерной сети. Техническим результатом является повышение защищенности данных при синхронизации. Изменения в содержимом электронного документа могут быть приняты на...
Тип: Изобретение
Номер охранного документа: 0002554845
Дата охранного документа: 27.06.2015
27.06.2015
№216.013.5b0a

Контрольные точки для файловой системы

Изобретение относится к средствам обеспечения контрольных точек. Технический результат заключается в уменьшении времени восстановления. Указывают, что первый набор обновлений подлежит связыванию с первой контрольной точкой. Определяют необходимость записи данных контрольной точки, относящихся к...
Тип: Изобретение
Номер охранного документа: 0002554847
Дата охранного документа: 27.06.2015
27.06.2015
№216.013.5b0e

Захват и загрузка состояний операционной системы

Изобретение относится к области захвата и загрузки состояний операционной системы. Техническим результатом является повышение эффективности восстановления операционной системы к базовому состоянию. В одном варианте воплощения выполняется сохранение состояний памяти операционной системы...
Тип: Изобретение
Номер охранного документа: 0002554851
Дата охранного документа: 27.06.2015
10.07.2015
№216.013.5c7e

Использование предварительной обработки на сервере для развертывания представлений электронных документов в компьютерной сети

Изобретение относится к области компьютерных сетей, а именно к клиент-серверным компьютерным сетям. Технический результат заключается в увеличении производительности сети и снижении задержки в доставке электронных документов, запрошенных пользователями. Технический результат достигается за счет...
Тип: Изобретение
Номер охранного документа: 0002555219
Дата охранного документа: 10.07.2015
10.07.2015
№216.013.5c7f

Управление виртуальными портами

Группа изобретений относится к устройствам ввода с возможностью обеспечения одновременной работы нескольких пользователей. Технический результат заключается в обеспечении обратной связи между пользователями вычислительной среды. Каждый такой виртуальный порт может иметь различные относящиеся к...
Тип: Изобретение
Номер охранного документа: 0002555220
Дата охранного документа: 10.07.2015
Показаны записи 1-1 из 1.
20.03.2014
№216.012.ad46

Управление дескриптором типа для замороженных объектов

Изобретение относится к использованию дескрипторов типа с замороженными объектами. Технический результат заключается в повышении быстродействия выполнения операций объектом с указателями дескриптора типа. Замороженный объект может в действительности включать в себя несколько дескрипторов...
Тип: Изобретение
Номер охранного документа: 0002510073
Дата охранного документа: 20.03.2014
+ добавить свой РИД