Interfejs aplikacji do programowania
W programie komputerowym , z interfejsem programowania aplikacji ( API ), w języku włoskim „ interfejs programowania aplikacji ”, oznacza zestaw procedur (ogólnie pogrupowanych według określonych narzędzi) zaprojektowanych w celu rozwiązania określonego problemu komunikacyjnego między różnymi komputerami lub między różnymi programami lub między różne komponenty oprogramowania [1] ; często termin ten oznacza biblioteki oprogramowania języka programowania [2] , chociaż bardziej poprawnie API jest metodą, za pomocą której biblioteki są używane do przezwyciężenia określonego problemu z wymianą informacji [3].
Funkcje
Istnieją różne modele projektowania interfejsów API. Interfejsy przeznaczone do maksymalnej szybkości wykonywania często składają się z szeregu funkcji , procedur , zmiennych i struktur danych . Istnieją również inne modele, takie jak interpretery używane do oceny wyrażeń, takie jak ECMAScript / JavaScript . Dobre API zapewnia „czarną skrzynkę”, tj. poziom abstrakcji, który pozwala programiście uniknąć wiedzy, jak działa API na niższym poziomie. Pozwala to na przeprojektowanie lub ulepszenie funkcji w ramach API bez zmiany kodu, który się na nim opiera.
Istnieją dwie zasady dotyczące publikacji API:
- Niektóre firmy zazdrośnie zachowują swoje API. Na przykład firma Microsoft udostępnia oficjalne interfejsy API tylko zarejestrowanym programistom Xbox . Dzieje się tak, ponieważ zamierza ograniczyć liczbę osób, które mogą pisać gry na konsolę , aby ograniczyć piractwo.
- Inne firmy rozpowszechniają API publicznie. Na przykład sam Microsoft udostępnia publicznie informacje o swoim Windows API , w tym Microsoft Foundation Classes (MFC), do pisania oprogramowania na platformę Windows .
Niektóre interfejsy API, takie jak standardowe dla systemu operacyjnego , są zaimplementowane jako oddzielna biblioteka i dystrybuowane z systemem operacyjnym. Inne interfejsy API wymagają od wydawców oprogramowania integracji interfejsu API bezpośrednio z aplikacją. To stanowi kolejne rozróżnienie w poprzednim przykładzie.
Interfejsy API Microsoft Windows są dostarczane z systemem operacyjnym i każdy może z nich korzystać. Oprogramowanie dla systemów wbudowanych, takie jak konsole do gier wideo, zazwyczaj należy do kategorii, w której interfejsy API są zintegrowane z aplikacją. Choć oficjalna dokumentacja API Playstation może być interesująca, jest prawie bezużyteczna bez odpowiedniej implementacji w postaci oddzielnej biblioteki lub zestawu deweloperskiego.
API, które nie wymaga uiszczania opłat za dostęp i użytkowanie, nazywa się „otwartym”. Interfejsy API dostarczane przez wolne oprogramowanie , takie jak oprogramowanie dystrybuowane na licencji GPL , są z definicji otwarte, ponieważ możesz uzyskać dostęp do źródła oprogramowania i zrozumieć, jak ono działa. Nawet jeśli istnieje „ implementacja referencyjna ” dla interfejsu API (na przykład Microsoft Windows dla interfejsu API systemu Windows ), nic nie stoi na przeszkodzie, aby utworzyć alternatywną implementację. Na przykład, większość Windows API może być dostarczona w systemie Unix przez oprogramowanie o nazwie Wine .
Ogólnie rzecz biorąc, analizowanie implementacji API w celu stworzenia kompatybilnego jest naruszeniem prawa. Technika ta nazywana jest inżynierią odwrotną . Sytuacja prawna w tych przypadkach jest niejednoznaczna, dlatego lepiej zająć się problemem przed rozpoczęciem czynności inżynierii odwrotnej. Na przykład sam interfejs API może zawierać patent .
Cel
Celem jest uzyskanie abstrakcji wyższego poziomu , zwykle między sprzętem a programistą lub między oprogramowaniem niskiego i wysokiego poziomu , co upraszcza pracę programistyczną . W rzeczywistości API pozwala programistom uniknąć przepisywania wszystkich funkcji niezbędnych dla programu za każdym razem od zera, czyli z niskiego poziomu, wpisując się tym samym w szerszą koncepcję ponownego wykorzystania kodu . Same interfejsy API reprezentują zatem pośredni poziom abstrakcji: oprogramowanie, które zapewnia określony interfejs API, nazywa się implementacją API.
Posix
Ponieważ istnieje wiele wariantów API, w 1985 roku powstał projekt mający na celu stworzenie standardu. Rodzina obejmująca te standardy przyjmuje nazwę Posix (akronim od „Portable Operating System Interface for Unix”), której nazwę stworzył Richard Stallman na prośbę IEEE o nazwę łatwą do zapamiętania.
Przykład użycia
Możesz pomyśleć o aplikacji, która zapisuje słowa „ Witaj świecie ” na ekranie z różnymi poziomami abstrakcji:
- Zapisz to wszystko sam:
- Narysuj kształty liter H, e, l, l, o, W, o, r, l, d na kartce papieru.
- Przygotuj macierz czarno-białych kwadratów o kształcie każdej z liter
- Wymyśl sposób zaprogramowania procesora tak, aby umieścił tę matrycę w buforze ramki karty graficznej .
- Przygotuj kartę graficzną do generowania prawidłowego sygnału z zawartości bufora ramki .
- Użyj systemu operacyjnego, aby wykonać część zadania:
- Załaduj do pamięci strukturę danych o nazwie „czcionka” dostarczoną przez system operacyjny.
- Spraw, aby system operacyjny wyświetlał puste okno.
- Niech system operacyjny narysuje w oknie tekst „Hello World” przy użyciu załadowanej czcionki.
- Do wszystkich prac używaj aplikacji (która z kolei korzysta z systemu operacyjnego):
- Napisz dokument HTML zawierający słowa „Hello World”.
- Otwórz dokument w przeglądarce internetowej .
Oczywiście podejście pierwszego poziomu wymaga wielu kroków, a każdy z nich jest znacznie bardziej złożony niż na kolejnych poziomach. Inną wadą pierwszego podejścia jest to, że korzystanie z niego jest niepraktyczne, jeśli trzeba wyświetlić pewną ilość informacji na ekranie; przy drugim podejściu operacja jest znacznie prostsza, a przy trzecim wystarczy napisać „Hello World”. Zazwyczaj korzystanie z interfejsów API wyższego poziomu wiąże się z pewną utratą elastyczności; na przykład na poziomie przeglądarki internetowej może być bardzo trudno obracać tekst z migającymi krawędziami wokół punktu, podczas gdy to zadanie można łatwo wykonać na niższym poziomie. Ta różnica jest typowym przykładem kompromisu, który można napotkać przy użyciu interfejsu API.
Przykłady API
- Interfejs do połączeń z BIOS -em komputera
- Obiektowe modele dokumentów różnych aplikacji, takich jak HTML
- Pojedyncza specyfikacja UNIX
- Microsoft Windows API _
- Java 2 Enterprise Edition Java EE API
- Interfejs ASPI dla urządzeń SCSI
- Interfejsy API Carbon i Cocoa dla systemu Macintosh macOS Server
- API i serwis internetowy
- Architektura wspólnego brokera żądań obiektów ( CORBA )
- Java API dla zintegrowanych sieci ( JAIN )
- Prosty protokół zarządzania siecią ( SNMP )
- Uniwersalny Plug and Play ( UPnP )
- Interfejsy API Google firmy Google Inc.
- Mantle , niskopoziomowe API opracowane przez AMD jako alternatywa dla DirectX i OpenGL
- Java Telephony API , Java API do zarządzania rozproszonymi call center.
Notatki
- ^ Martin Reddy, projektowanie API dla C ++ , Morgan Kaufmann, 2011, ISBN 978-0-12-385004-1 , OCLC 704559821 . Źródło 16 maja 2022 .
- ^ Przewodnik: Wywoływanie interfejsu API systemu Windows (Visual Basic) , w witrynie Docs.Microsoft.com , 20 lipca 2015 r. Pobrano 13 lutego 2019 r . .
- ^ API a biblioteka (Jaka jest różnica?) , Na rapidapi.com .
Powiązane pozycje
- Biblioteka (oprogramowanie)
- Język programowania
- Interfejs binarny aplikacji
- Internetowy interfejs API
Linki zewnętrzne
- API (informatyka) , na Sapienza.it , De Agostini .