DLLpiton.net.ru
Главная arrow Статьи arrow API (Application Programming Interface)
Главная
Форум
Магазин
- - - - - - -
Исходники
Статьи
Материалы
FTP
- - - - - - -
Поиск
Каталог ссылок
Контакты
Ленты новостей
Ча.Во. (FAQ)
Анекдоты
Java программы
Доска заказов программ
Лицензия Dllpiton
Кто на сайте?
 
API (Application Programming Interface) Печать E-mail
API (Application Programming Interface).

Интерфейс программирования приложений (англ. Application Programming Interface, API; по-русски произносят [апи]) — набор методов (функций), который программист может использовать для доступа к функциональности программной компоненты (программы, модуля, библиотеки). API является важной абстракцией, описывающей функциональность «в чистом виде».






API как средство интеграции приложений.


API определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.


Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это множество «ручек», которые доступны пользователю данного ящика, которые он может вертеть и дёргать.


API является важной абстракцией в методологии интегрирования различных программных компонент (программ, модулей, систем) и в методологии построения сложных компьютерных систем (см. code reuse (повторное использование кода)).


Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию --- высокоуровневые компоненты используют API низкоуровневых компонент, а те, в свою очередь, используют API ещё более низкоуровневых компонент.


По такому принципу построены протоколы передачи данных по Internet. Стандартный протокол Internet (сетевая модель OSI) содержит 7 уровней (от физического уровня передачи пакетов бит до уровня протоколов приложений, подобных протоколам HTTP и IMAP). Каждый уровень пользуется функциональностью предыдущего уровня передачи данных и, в свою очередь, предоставляет нужную функциональность следующему уровню.


Важно заметить, что понятие протокола близко по смыслу к понятию API. И то и другое является абстракцией функциональности, только в первом случае речь идёт о передаче данных, а во втором — о построении компьютерных приложений.


API библиотек функций и классов включает в себя описание сигнатур и семантики функций.



Сигнатура функции


Сигнатура функции — это имя функции, тип возвращаемого значения и список аргументов с указанием порядка их следования и типов.


Семантика функции


Семантика функции — это описание того, что данная функция делает. Семантика функции включает в себя описание того, что является результатом вычисления функции, как и от чего этот результат зависит. Обычно результат выполнения зависит только от значений аргументов функции, но в некоторых модулях есть понятие состояния. Тогда результат функции может зависеть от этого состояния, и, кроме того, результатом может стать изменение состояния. Логика этих зависимостей и изменений относится к семантике функции. Полным описанием семантики функций является исполняемый код функции или математическое определение функции.




API операционных систем. Проблемы связанные с многообразием API


Практически все операционные системы (Unix, Windows, MacOS, и т. д.) имеют API, с помощью которого программисты могут создавать приложения для этой операционной системы. Главный API операционных систем — это множество системных вызовов.


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


С другой стороны, отличия в API различных операционных систем существенно затрудняют перенос приложений между платформами. Существуют различные методы обхода этой сложности — написание «промежуточных» API (API графических интерфейсов Qt, Gtk, и т. п.), написание библиотек, которые отображают системные вызовы одной ОС в системные вызовы другой ОС (такие среды исполнения, как Wine, cygwin, и т. п.), введение стандартов кодирования в языках программирования (например, стандартная библиотека языка C), написания интерпретируемых языков, реализуемых на разных платформах (sh, perl, php, tcl, Java, и т. д.)


Так же необходимо отметить, что в распоряжении программиста часто находится несколько различных API, позволяющих добиться одного и того же результата. При этом каждый API обычно реализован с использованием API программных компонент более низкого уровня абстракции.


Например: для того, чтобы увидеть в браузере строчку «Hello, world!» достаточно лишь создать HTML-документ с минимальным заголовком, и простейшим телом, содержащим данную строку. Что произойдёт, когда браузер откроет этот документ? Программа-браузер передаст имя файла (или уже открытый дескриптор файла) библиотеке, обрабатывающей HTML-документы, та, в свою очередь, при помощи API операционной системы прочитает этот файл, и разберётся в его устройстве, повызывает через API библиотеки стандартных графических примитивов операции типа «очистить окошко», «написать выбранным шрифтом Hello, world!», при этих операциях библиотека графических примитивов обратится к библиотеке оконного интерфейса с соответствующими запросами, уже эта библиотека обратится к API операционной системы с запросами вида «а положи-ка мне в буфер видеокарты вот это».


При этом практически на каждом из уровней реально существует несколько возможных альтернативных API. Например: мы могли бы писать исходный документ не на HTML, а на LaTeX, для отображения могли бы использовать любой браузер. Различные браузеры, вообще говоря, используют различные HTML-библиотеки, и, кроме того, всё это может быть (вообще говоря) собрано с использованием различных библиотек примитивов и на различных операционных системах.



Основными сложностями существующих многоуровневых систем API, таким образом, являются:


Сложность портирования программного кода с одной системы API на другую (при смене ОС, например)


Потеря функциональности при переходе с более низкого уровня на более высокий. Грубо говоря, каждый «слой» API создаётся для облегчения выполнения некоторого стандартного набора операций. Но при этом реально затрудняется, либо становится принципиально невозможным, выполнение некоторых других операций, которые предоставляет более низкий уровень API.




Наиболее известные API:



API операционных систем


Windows API


POSIX


Linux Kernel API


OS/2 API


Amiga ROM Kernel




API графических интерфейсов


GDI


GDI+


Direct3D (часть DirectX)


DirectDraw (часть DirectX)


OpenGL


X11


Qt


GTK


Motiff


Tk


Zune


SDL


API звуковых интерфейсов


DirectSound (часть DirectX)


DirectMusic (часть DirectX)


OpenAL


API аутентификационных систем


BioAPI


PAM



 
« Пред.   След. »
 
 
 
19.06.2018 г.
up!