M?t
giao di?n l?p trinh ?ng d?ng
(
ti?ng Anh
:
application programming interface
, vi?t t?t:
API
) la m?t
giao di?n
ma m?t h? th?ng may tinh hay ?ng d?ng cung c?p đ? cho phep cac yeu c?u d?ch v? co th? đ??c t?o ra t? cac ch??ng trinh may tinh khac, va/ho?c cho phep d? li?u co th? đ??c trao đ?i qua l?i gi?a chung. Ch?ng h?n, m?t ch??ng trinh may tinh co th? (va th??ng la ph?i) dung cac ham API c?a
h? đi?u hanh
đ? xin c?p phat b? nh? va truy xu?t t?p tin. Nhi?u lo?i h? th?ng va ?ng d?ng th?c hi?n API, nh? cac h? th?ng đ? h?a, c? s? d? li?u, m?ng, d?ch v? web, va ngay c? m?t s? tro ch?i may tinh. đay la
ph?n m?m h? th?ng
cung c?p đ?y đ? cac ch?c n?ng va cac tai nguyen ma cac
l?p trinh vien
co th? rut ra t? đo đ? t?o nen cac tinh n?ng giao ti?p ng??i - may nh?: cac trinh đ?n keo xu?ng, ten l?nh, h?p h?i tho?i, l?nh ban phim va cac c?a s?. M?t trinh ?ng d?ng co th? s? d?ng no đ? yeu c?u va thi hanh cac d?ch v? c?p th?p do h? đi?u hanh c?a may tinh th?c hi?n. H? giao ti?p l?p trinh ?ng d?ng giup ich r?t nhi?u cho ng??i s? d?ng vi no cho phep ti?t ki?m đ??c nhi?u th?i gian tim hi?u cac ch??ng trinh m?i, do đo khich l? m?i ng??i dung nhi?u ?ng d?ng h?n.
M?t trong cac m?c đich chinh c?a m?t
API
la cung c?p kh? n?ng truy xu?t đ?n m?t t?p cac
ham
hay dung ? vi d?, ham đ? v? cac
c?a s?
hay cac
icon
tren man hinh. Cac API, c?ng nh? h?u h?t cac
interfaces
, la tr?u t??ng (
abstract
). Ph?n m?m ma mu?n cung c?p truy xu?t đ?n chinh no thong qua cac API cho s?n, ph?i
hi?n th?c
API đo. Trong nhi?u tinh hu?ng, m?t API th??ng la m?t ph?n c?a b?
SDK
, hay
software development kit
. M?t b? SDK co th? bao g?m m?t API c?ng nh? cac cong c?/ph?n c?ng, vi th? hai thu?t ng? nay khong thay th? cho nhau đ??c.
Co nhi?u
mo hinh thi?t k?
khac nhau cho cac APIs.
Interfaces
nh?m la cach
th?c thi
nhanh nh?t th??ng g?m cac t?p cac
ham
,
th? t?c
,
bi?n
va cac
c?u truc d? li?u
. Tuy nhien, cac mo hinh khac v?n t?n t?i, nh? b?
thong d?ch
dung đ? ??c gia bi?u th?c trong
ECMAScript
/
JavaScript
. M?t API t?t th??ng cung c?p m?t "h?p đen" hay la m?t l?p tr?u t??ng (
abstraction layer
) bao b?c no, nh?m đ?m b?o la nha l?p trinh khong th? bi?t cach hi?n th?c c? th? ben trong c?a m?i ham trong API. đi?u nay lam cho vi?c thi?t k? l?i hay c?i ti?n ham c?a API đo tr? nen d? dang h?n vi no khong lam đ? ? cac đo?n ma khac ma co s? d?ng cac ham đo.
Co hai dong chinh sach đ?i v?i vi?c cong b? cac APIs:
- M?t s? cong ty b?o v? APIs c?a h? m?t cach m?nh m?. Vi d?,
Sony
th??ng ch? cung c?p API chinh th?c c?a
PlayStation 2
cho cac nha phat tri?n PlayStation co đ?ng ky. đi?u nay la vi Sony mu?n gi?i h?n nh?ng ng??i co th? vi?t tro ch?i tren PlayStation 2, va mu?n thu l?i nhu?n t? nh?ng ng??i nay cang nhi?u cang t?t. đay th??ng la chinh sach đ?i v?i cac cong ty ma h? khong thu l?i t? vi?c ban cac hi?n th?c API c?a h?. Tuy nhien,
PlayStation 3
la cong b? hoan toan APIs.
- M?t s? cong ty thi cung c?p mi?n phi APIs. Vi d?,
Microsoft
cong b? h?u nh? hoan toan thong tin v? cac API, đ? cho cac ph?n m?m co th? đ??c vi?t ch?y tren n?n Windows. Vi?c ban c?a cac ph?n m?m hang th? 3 đ?ng th?i v?i vi?c ph?i mua H? đi?u hanh Microsoft Windows. đay th??ng la cac cong ty thu l?i nhu?n t? vi?c ban cac hi?n th?c API.
M?t s? APIs, ch?ng h?n cac API la chu?n cho m?t
h? đi?u hanh
, đ??c hi?n th?c d??i d?ng cac
th? vi?n ma
đ?c l?p đ??c phan ph?i kem theo h? đi?u hanh. M?t s? khac thi đoi h?i
nha s?n xu?t ph?n m?m
ph?i tich h?p API tr?c ti?p vao trong ch??ng trinh. Microsoft Windows APIs đi kem theo h? đi?u hanh cho phep m?i ng??i co th? s? d?ng chung. Ph?n m?m cho cac
h? th?ng nhung
nh? thi?t b? ch?i tro ch?i th??ng thu?c vao lo?i tich h?p vao trong ?ng d?ng. Trong khi cac tai li?u API chinh th?c c?a PlayStation la nen đ?c, nh?ng no ch?ng giup ich gi n?u ta ch?ng co cac hi?n th?c c?a no, d??i d?ng m?t
th? vi?n
đ?c l?p hay
b? phat tri?n ph?n m?m
.
M?t API ma cho phep truy xu?t va s? d?ng t? do đ??c g?i la "m?." Cac APIs đ??c cung c?p b?i
ph?n m?m m?
(nh? m?i ph?n m?m đ??c phan ph?i theo gi?y phep đ?ng ky
GNU
), la m? theo đung ngh?a, vi m?i ng??i co th? xem
ma ngu?n
c?a ph?n m?m va tim ra API. M?c du vi?c tham kh?o hi?n th?c v?n t?n t?i cho m?t API (nh? v?i
Microsoft Windows
cho
Win32
API), thi vi?c t?o them cac hi?n th?c b? sung v?n co th? di?n ra. Vi d?, h?u h?t cac Win32 API co th? đ??c cung c?p t? h? th?ng
UNIX
dung ph?n m?m ten la
Wine
.