RU2658190C2 - Управление доступом во время выполнения к интерфейсам прикладного программирования - Google Patents

Управление доступом во время выполнения к интерфейсам прикладного программирования Download PDF

Info

Publication number
RU2658190C2
RU2658190C2 RU2015145292A RU2015145292A RU2658190C2 RU 2658190 C2 RU2658190 C2 RU 2658190C2 RU 2015145292 A RU2015145292 A RU 2015145292A RU 2015145292 A RU2015145292 A RU 2015145292A RU 2658190 C2 RU2658190 C2 RU 2658190C2
Authority
RU
Russia
Prior art keywords
api
application programming
programming interface
visibility
application
Prior art date
Application number
RU2015145292A
Other languages
English (en)
Other versions
RU2015145292A3 (ru
RU2015145292A (ru
Inventor
Мирча ТРОФИН
Патрик ДАССАД
Руди МАРТИН
Джон Лоренс ХЭМБИ
Михал СТРЕХОВСКИ
Дэвид Чарльз РАЙТОН
Ацуси КАНАМОРИ
Фади М. ХАННА
Original Assignee
МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи filed Critical МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Publication of RU2015145292A publication Critical patent/RU2015145292A/ru
Publication of RU2015145292A3 publication Critical patent/RU2015145292A3/ru
Application granted granted Critical
Publication of RU2658190C2 publication Critical patent/RU2658190C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

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

Description

Уровень техники
[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] Настоящее изобретение может быть осуществлено в других характерных формах без отступления от своей сущности или неотъемлемых характеристик. Описанные варианты осуществления должны рассматриваться во всех отношениях только как иллюстративные, а не ограничивающие. Следовательно, объем изобретения указан посредством прилагаемой формулы изобретения, а не посредством вышеприведенного описания. Все изменения, которые подпадают под смысл и рамки равнозначности формулы изобретения, должны охватываться ее объемом.

Claims (29)

1. Способ, реализуемый в компьютерной системе, включающей в себя среду разработки для разработки исполняемого кода, которая включает в себя интерфейсы прикладного программирования (API), где исполняемый код предназначен для исполнения в среде исполнения, которая может динамически запрашивать доступ к интерфейсам прикладного программирования (API), причем среда исполнения выдает запросы на динамический доступ с видимостью по умолчанию в интерфейсы прикладного программирования (API) на основе типа интерфейса прикладного программирования (API), при этом способ предназначен для управления доступом во время исполнения к интерфейсам прикладного программирования (API) и содержит этапы, на которых:
осуществляют доступ к набору интерфейсов прикладного программирования (API), скомбинированных в библиотеку, причем набор интерфейсов прикладного программирования (API) включает в себя один или более общедоступных интерфейсов прикладного программирования (API) и один или более необщедоступных интерфейсов прикладного программирования (API);
идентифицируют из набора интерфейсов прикладного программирования (API) интерфейс прикладного программирования (API), для которого должна быть изменена видимость по умолчанию, предоставленная для запросов на динамический доступ; и
изменяют видимость по умолчанию в этот интерфейс прикладного программирования (API) на измененную видимость посредством применения атрибута к данному интерфейсу прикладного программирования (API), причем этот атрибут указывает для среды исполнения во время исполнения то, что запросы на динамический доступ должны выдаваться для измененной видимости в упомянутый интерфейс прикладного программирования (API),
при этом идентификация интерфейса прикладного программирования (API) содержит этап, на котором идентифицируют общедоступный интерфейс прикладного программирования (API), причем видимость по умолчанию для общедоступного интерфейса
прикладного программирования (API) разрешает динамический доступ к общедоступному интерфейсу прикладного программирования (API), и
при этом изменение видимости по умолчанию интерфейса прикладного программирования (API) содержит этап, на котором применяют атрибут к общедоступному интерфейсу прикладного программирования (API), причем атрибут изменяет видимость по умолчанию для общедоступного интерфейса прикладного программирования (API), чтобы запрещать динамический доступ к общедоступному интерфейсу прикладного программирования (API).
2. Способ по п. 1, в котором идентификация интерфейса прикладного программирования (API) содержит этап, на котором предоставляют интерфейс прикладного программирования (API) автору интерфейса прикладного программирования (API); и
при этом изменение видимости по умолчанию интерфейса прикладного программирования (API) содержит изменение автором интерфейса прикладного программирования (API) видимости по умолчанию интерфейса прикладного программирования.
3. Способ по п. 1, в котором идентификация интерфейса прикладного программирования (API) содержит этап, на котором идентифицируют необщедоступный интерфейс прикладного программирования (API), причем видимость по умолчанию для необщедоступного интерфейса прикладного программирования (API) запрещает динамический доступ к необщедоступному интерфейсу прикладного программирования (API).
4. Способ по п. 3, в котором изменение видимости по умолчанию интерфейса прикладного программирования (API) содержит этап, на котором применяют атрибут к необщедоступному интерфейсу прикладного программирования (API), причем этот атрибут изменяет видимость по умолчанию для необщедоступного интерфейса прикладного программирования (API), чтобы разрешать динамический доступ к необщедоступному интерфейсу прикладного программирования (API).
5. Способ, реализуемый в компьютерной системе, включающей в себя среду разработки для разработки исполняемого кода, которая включает в себя интерфейсы прикладного программирования (API),
где исполняемый код предназначен для исполнения в среде исполнения, которая может динамически запрашивать доступ к интерфейсам прикладного программирования (API), причем среда исполнения имеет видимость по умолчанию в доступные интерфейсы прикладного программирования (API), при этом способ предназначен для уменьшения видимости по умолчанию в доступные интерфейсы прикладного программирования (API) и содержит этапы, на которых:
осуществляют доступ к коду приложения для приложения, причем код приложения ссылается на один или более доступных интерфейсов прикладного программирования (API), скомбинированных в библиотеку;
идентифицируют доступный интерфейс прикладного программирования (API), на который имеется ссылка в коде приложения, причем доступный интерфейс прикладного программирования (API) выбирается из числа одного или более доступных интерфейсов прикладного программирования (API);
определяют, что к доступному интерфейсу прикладного программирования (API) не должен динамически осуществляться доступ во время исполнения;
уменьшают видимость по умолчанию в доступный интерфейс прикладного программирования (API) до уменьшенной видимости посредством применения атрибута к части кода приложения, ссылающейся на доступный интерфейс прикладного программирования (API), причем атрибут указывает для среды исполнения во время исполнения то, что запросы на динамический доступ должны выдаваться для уменьшенной видимости в доступный интерфейс прикладного программирования (API).
6. Способ по п. 5, в котором применение атрибута к части кода приложения, ссылающейся на доступный интерфейс прикладного программирования (API), содержит применение автором кода приложения, атрибута к части кода приложения, ссылающейся на доступный интерфейс прикладного программирования (API).
7. Способ по п. 5, в котором применение атрибута к части кода приложения, ссылающейся на доступный интерфейс прикладного программирования (API), содержит этап, на котором применяют атрибут к одному из части кода приложения, ссылающейся на
общедоступный API, и части кода приложения, ссылающейся на необщедоступный API.
8. Способ, реализуемый в компьютерной системе, включающей в себя среду исполнения, которая может запрашивать динамический доступ к интерфейсам прикладного программирования (API), причем среда исполнения выдает запросы на динамический доступ с видимостью по умолчанию в интерфейсы прикладного программирования (API) на основе типа интерфейса прикладного программирования (API), при этом способ предназначен для предоставления потребителю заданной видимости в интерфейс прикладного программирования (API) и содержит этапы, на которых:
исполняют исполняемый код в среде исполнения, причем исполняемый код извлекается из кода приложения;
в ходе исполнения исполняемого кода:
- принимают от потребителя динамический вызов исполнять часть исполняемого кода, причем эта часть исполняемого кода извлекается из части кода приложения, которая ссылается на интерфейс прикладного программирования (API) в библиотеке;
- осуществляют доступ к видимости по умолчанию во время исполнения в интерфейс прикладного программирования (API) на основе типа интерфейса прикладного программирования (API);
- осуществляют доступ к любым атрибутам, применяемым к интерфейсу прикладного программирования (API), причем атрибуты, применяемые к интерфейсу прикладного программирования (API), указывают желание автора интерфейса прикладного программирования (API) изменить видимость по умолчанию во время исполнения в интерфейс прикладного программирования (API);
- осуществляют доступ к любым атрибутам, применяемым к части кода приложения, которая ссылается на интерфейс прикладного программирования (API), причем атрибуты, применяемые к части кода приложения, указывают желание автора кода приложения предоставить видимость в интерфейс прикладного программирования (API) в меньшей степени, чем указывается посредством видимости по умолчанию во время исполнения, измененной посредством атрибутов, применяемых к интерфейсу прикладного программирования (API);
- определяют вычисленную видимость в интерфейс прикладного программирования (API) на основе видимости по умолчанию во время исполнения в интерфейс прикладного программирования (API) и любых атрибутов, применяемых к интерфейсу прикладного программирования (API), и/или атрибутов, применяемых к части кода приложения, которая ссылается на интерфейс прикладного программирования (API); и
- предоставляют для динамического вызова видимость в интерфейс прикладного программирования (API) в соответствии с вычисленной видимостью.
RU2015145292A 2013-04-22 2014-04-21 Управление доступом во время выполнения к интерфейсам прикладного программирования RU2658190C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/867,143 2013-04-22
US13/867,143 US8990839B2 (en) 2013-04-22 2013-04-22 Controlling runtime access to application programming interfaces
PCT/US2014/034739 WO2014176137A1 (en) 2013-04-22 2014-04-21 Controlling runtime access to application programming interfaces

Publications (3)

Publication Number Publication Date
RU2015145292A RU2015145292A (ru) 2017-04-26
RU2015145292A3 RU2015145292A3 (ru) 2018-03-27
RU2658190C2 true RU2658190C2 (ru) 2018-06-19

Family

ID=50771633

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2015145292A RU2658190C2 (ru) 2013-04-22 2014-04-21 Управление доступом во время выполнения к интерфейсам прикладного программирования

Country Status (11)

Country Link
US (3) US8990839B2 (ru)
EP (2) EP2989539B1 (ru)
JP (1) JP6473442B2 (ru)
KR (1) KR102183185B1 (ru)
CN (1) CN105229603B (ru)
AU (2) AU2014257298B2 (ru)
BR (1) BR112015026327B1 (ru)
CA (1) CA2907904A1 (ru)
MX (1) MX357050B (ru)
RU (1) RU2658190C2 (ru)
WO (1) WO2014176137A1 (ru)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9195440B2 (en) * 2013-11-26 2015-11-24 International Business Machines Corporation Intelligent data source selection in application development
US9430200B1 (en) * 2015-06-04 2016-08-30 Microsoft Technology Licensing Llc Cross-library framework architecture feature sets
US10158647B2 (en) * 2015-08-25 2018-12-18 Oracle International Corporation Permissive access control for modular reflection
US10360008B2 (en) 2016-09-16 2019-07-23 Oracle International Corporation Metadata application constraints within a module system based on modular encapsulation
US10352717B2 (en) * 2017-02-28 2019-07-16 Google Llc Navigation application programming interface
US10664943B2 (en) * 2017-06-02 2020-05-26 Apple Inc. Compound shader object and use thereof
US10572275B2 (en) * 2017-06-15 2020-02-25 Microsoft Technology Licensing, Llc Compatible dictionary layout
EP3428793A1 (de) * 2017-07-10 2019-01-16 Siemens Aktiengesellschaft Verfahren zur unterstützung eines anwenders bei einer erstellung einer software-applikation und computerprogramm mit einer implementation des verfahrens sowie im rahmen eines solchen verfahrens verwendbare programmierschnittstelle
US10817280B1 (en) * 2018-05-21 2020-10-27 Amazon Technologies, Inc. Overriding shared service interfaces
CN108897533A (zh) * 2018-06-06 2018-11-27 北京奇虎科技有限公司 一种函数调用的方法、装置及终端
EP3582103A1 (en) * 2018-06-14 2019-12-18 QlikTech International AB Methods and systems for application program interface management
US10467062B1 (en) * 2019-03-11 2019-11-05 Coupang, Corp. Systems and methods for managing application programming interface information
CN112612508A (zh) * 2020-12-24 2021-04-06 新华三云计算技术有限公司 Api网关中的api版本控制方法、装置及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030018959A1 (en) * 2001-06-20 2003-01-23 Sun Microsystems, Inc. Customization of Java runtime environments
US20030105644A1 (en) * 2001-12-03 2003-06-05 Ali Syed M. Application-independent api for distributed component collaboration
US20070124334A1 (en) * 2005-11-30 2007-05-31 Microsoft Corporation Dynamic mechanism for providing metadata
RU2347265C2 (ru) * 2003-08-25 2009-02-20 Майкрософт Корпорейшн Система и способ для объединения управления ресурсами между сервисами приложений и приложениями

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199117B1 (en) 1992-03-30 2001-03-06 International Business Machines Corporation Generalized control for starting of tasks (processes and threads)
AU6440398A (en) * 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of using a cache to determine the visibility to a remote database client of a plurality of database transactions
FR2801118B1 (fr) * 1999-11-17 2001-12-21 Bull Cp8 Procede de chargement d'applications dans un systeme embarque multi-application, systeme embarque correspondant, et procede d'execution d'une application du systeme embarque
US20050091576A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US20030018694A1 (en) 2000-09-01 2003-01-23 Shuang Chen System, method, uses, products, program products, and business methods for distributed internet and distributed network services over multi-tiered networks
US7028305B2 (en) 2001-05-16 2006-04-11 Softricity, Inc. Operating system abstraction and protection layer
US20030188183A1 (en) * 2001-08-27 2003-10-02 Lee Lane W. Unlocking method and system for data on media
US8504479B2 (en) * 2001-08-29 2013-08-06 Conexant Systems, Inc. Key interface for secure object manipulation
US7305469B2 (en) * 2001-12-18 2007-12-04 Ebay Inc. Prioritization of third party access to an online commerce site
US7409676B2 (en) * 2003-10-20 2008-08-05 International Business Machines Corporation Systems, methods and computer programs for determining dependencies between logical components in a data processing system or network
US20060031681A1 (en) * 2004-08-05 2006-02-09 Motorola, Inc. Method and system for controlling access to a wireless client device
US8302178B2 (en) * 2005-03-07 2012-10-30 Noam Camiel System and method for a dynamic policies enforced file system for a data storage device
US7657871B2 (en) * 2005-07-22 2010-02-02 Sbc Knowledge Ventures, L.P. Method and system of managing configuration profiles of a plurality of deployed network elements
CN100498697C (zh) * 2005-09-29 2009-06-10 腾讯科技(深圳)有限公司 一种应用编程接口控制方法和控制功能模块
US20070074033A1 (en) * 2005-09-29 2007-03-29 Research In Motion Limited Account management in a system and method for providing code signing services
US7730539B2 (en) * 2005-10-21 2010-06-01 Microsoft Corporation Authenticating third party products via a secure extensibility model
US8074231B2 (en) * 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US7680866B2 (en) * 2006-01-31 2010-03-16 Siemens Corporation System and method for managing relational numerical data for monitoring systems
US9027039B2 (en) 2007-01-29 2015-05-05 Intel Corporation Methods for analyzing, limiting, and enhancing access to an internet API, web service, and data
US20090007068A1 (en) * 2007-06-27 2009-01-01 Microsoft Corporation Accessing Non-Public Code
US8209675B2 (en) 2007-07-25 2012-06-26 Sap Ag Method and system for customizing a software application
US8312425B2 (en) * 2008-03-31 2012-11-13 International Business Machines Corporation Dynamic template instantiation
US8239340B2 (en) 2008-04-11 2012-08-07 Trevor Hanson Message conduit systems with algorithmic data stream control and methods for processing thereof
US8397290B2 (en) * 2008-06-27 2013-03-12 Microsoft Corporation Granting least privilege access for computing processes
US20110055744A1 (en) * 2009-08-28 2011-03-03 Ryan Christopher N Visual Linking of Elements to Model Attributes
US8438294B2 (en) * 2010-04-07 2013-05-07 Apple Inc. Application programming interface, system, and method for collaborative online applications
JP5318830B2 (ja) * 2010-08-25 2013-10-16 株式会社日立ソリューションズ WebAPIサーバプログラム、WebAPI公開方法
US8681630B1 (en) * 2010-09-21 2014-03-25 Google Inc. Configurable rate limiting using static token buckets, and applications thereof
US8863156B1 (en) * 2011-01-04 2014-10-14 AppCentric Solutions, LLC API wizard
US20120260233A1 (en) 2011-04-07 2012-10-11 Infosys Technologies Limited Method and system for automating development and customization of business applications
US8997069B2 (en) 2011-04-13 2015-03-31 Microsoft Technology Licensing, Llc API descriptions
US20120290560A1 (en) * 2011-05-13 2012-11-15 Kushal Das Mechanism for efficiently querying application binary interface/application programming interface-related information

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030018959A1 (en) * 2001-06-20 2003-01-23 Sun Microsystems, Inc. Customization of Java runtime environments
US20030105644A1 (en) * 2001-12-03 2003-06-05 Ali Syed M. Application-independent api for distributed component collaboration
RU2347265C2 (ru) * 2003-08-25 2009-02-20 Майкрософт Корпорейшн Система и способ для объединения управления ресурсами между сервисами приложений и приложениями
US20070124334A1 (en) * 2005-11-30 2007-05-31 Microsoft Corporation Dynamic mechanism for providing metadata

Also Published As

Publication number Publication date
JP6473442B2 (ja) 2019-02-20
CN105229603B (zh) 2019-03-22
RU2015145292A3 (ru) 2018-03-27
US20150169387A1 (en) 2015-06-18
JP2016517120A (ja) 2016-06-09
MX2015014870A (es) 2016-03-09
BR112015026327A2 (pt) 2017-07-25
US8990839B2 (en) 2015-03-24
KR20160003023A (ko) 2016-01-08
AU2019229450A1 (en) 2019-10-03
US11003511B2 (en) 2021-05-11
EP2989539B1 (en) 2022-08-17
MX357050B (es) 2018-06-25
EP2989539A1 (en) 2016-03-02
AU2019229450B2 (en) 2020-12-10
US20140317641A1 (en) 2014-10-23
KR102183185B1 (ko) 2020-11-25
AU2014257298B2 (en) 2019-06-13
RU2015145292A (ru) 2017-04-26
WO2014176137A1 (en) 2014-10-30
CN105229603A (zh) 2016-01-06
EP3982257A1 (en) 2022-04-13
BR112015026327B1 (pt) 2022-05-17
CA2907904A1 (en) 2014-10-30
US20190095256A1 (en) 2019-03-28
BR112015026327A8 (pt) 2019-12-24
US9785483B2 (en) 2017-10-10
AU2014257298A1 (en) 2015-10-15

Similar Documents

Publication Publication Date Title
RU2658190C2 (ru) Управление доступом во время выполнения к интерфейсам прикладного программирования
CN107766126B (zh) 容器镜像的构建方法、系统、装置及存储介质
EP2950206B1 (en) Extracting source code
US20190102156A1 (en) Streamlined Technique For Deploying Application In Cloud Computing Environment
US11301562B2 (en) Function execution based on data locality and securing integration flows
WO2021057807A1 (zh) 深度学习模型生成方法、装置、设备及存储介质
US8938712B2 (en) Cross-platform virtual machine and method
CN113805882A (zh) 应用程序开发的方法、装置、电子设备及存储介质
US9396007B2 (en) Cache management in a multi-threaded environment
CN109196484B (zh) 在具有多个存储器的系统中灵活的优化数据处理
US8918767B2 (en) Pattern-based compilation of asynchronous consumption
JP6385471B2 (ja) 移行および遠隔ランタイム統合
US20220391239A1 (en) Application programming interface for spinning up machine learning inferencing server on demand
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
US9442782B2 (en) Systems and methods of interface description language (IDL) compilers
Wood et al. Triton: a domain specific language for cyber-physical systems
US20230409385A1 (en) Debugging by predict accessing information
US11385876B1 (en) Infrastructure control interface for database systems
CN115934123A (zh) 一种客户端逻辑更新方法、装置、电子设备及存储介质
CN116680688A (zh) 设备控制指令的检测方法、装置、电子设备及存储介质
CN117651935A (zh) FaaS控制器及用于FaaS系统的方法