- Biblioteka yra daugkartinio naudojimo kodas, teikiantis specifines funkcijas neprimetant projektui architektūros.
- Sistema suteikia struktūrą, taisykles ir integruotus įrankius, teikiant pirmenybę produktyvumui ir nuoseklumui.
- API yra sutartis, apibrėžianti, kaip komponentai ar paslaugos bendrauja, slepianti vidinį įgyvendinimą.
- Karkasai, bibliotekos ir API sujungiami, kad sukurtų programas, kurios yra keičiamo dydžio, prižiūrimos ir integruojamos su kitomis sistemomis.

Kai pradedate programavimo Labai lengva susipainioti dėl tokių sąvokų kaip biblioteka, sistema ir APIIš pirmo žvilgsnio jie atrodo kaip skirtingi to paties dalyko pavadinimai: „kitų žmonių jau parašytas kodas, kurį naudojate savo projektuose“. Tačiau iš tikrųjų kiekvienas jų atlieka konkretų vaidmenį programinės įrangos kūrime.
Jei programuojate jau kurį laiką, tikriausiai jį naudojate kasdien. API, sistemos ir bibliotekos Per daug apie tai negalvojant, galite net jausti, kad su visais bendraujate vienodai: importuojate kažką, iškviečiate funkcijas ir viskas. Net ir tokiu atveju, visapusiškas supratimas, kas yra kiekvienas dalykas ir kaip jie susiję, padeda pasirinkti geresnius įrankius, geriau kurti savo projektus ir bendrauti su kitais kūrėjais be painiavos.
Kas yra biblioteka programavime?
A programinės įrangos biblioteka Iš esmės tai yra pakartotiniam naudojimui skirtas kodo rinkinys: funkcijos, klasės, duomenų tipai ir įrankiai, kuriuos kažkas sugrupavo konkrečioms problemoms spręsti. Užuot rašę viską nuo nulio, importuojate biblioteką ir pasinaudojate jau atliktu ir išbandytu darbu.
Pagrindinis bibliotekos tikslas yra teikti jau paruoštas naudoti funkcijas kuriuos galite įtraukti į savo programas nereikėdami „išradinėti dviračio iš naujo“. Paprastai juos kuria žmonės, turintys didelę patirtį konkrečioje srityje (pavyzdžiui, matematika, prieiga prie duomenų bazės(teksto apdorojimas, grafika…) ir supakuoja jį taip, kad kitiems kūrėjams būtų lengva jį integruoti.
Gerai žinomas „JavaScript“ ekosistemos pavyzdys yra LodašasŠi biblioteka siūlo daugybę naudingų funkcijų darbui masyvai, objektai, eilutės, funkcijos ir kolekcijos Apskritai, užuot rašę savo filtrus, transformacijas ar išplėstines paieškas, tiesiog iškviečiate „Lodash“ funkcijas ir viskas, su mažiau kodo ir mažiau klaidų.
Pasaulyje Pitonas mes turime „NumPy“Svarbus skaitmeninių skaičiavimų komponentas. Jis teikia duomenų struktūras, tokias kaip garsioji daugiamačiai masyvai ir itin efektyvias vektorizuotas operacijas, skirtas pažangiajai matematikai ir duomenų mokslui. Be „NumPy“ visų tų matricų manipuliavimo ir tiesinės algebros operacijų rašymas ranka būtų tikras vargas.
„Java“ kalboje galima paminėti Apache CommonsBibliotekų šeima su visokiausiomis priemonėmis: išplėstinėmis kolekcijomis, failų tvarkymu, tipų konvertavimu, eilučių manipuliavimu ir daug daugiau. Šių bibliotekų dėka, pakartotinai naudoti patikimus sprendimus užuot vėl ir vėl taisius savo kodą.
Kai sakoma, kad biblioteka padeda jūsų kodą padaryti „modulinį“, tai reiškia, kad jūsų programa yra sukurta remiantis nepriklausomi ir daugkartinio naudojimo elementaiTai skatina organizuotumą, palengvina priežiūrą ir leidžia sistemai prisitaikyti prie didesnio duomenų kiekio ir apkrovos su mažiau trikdžių.
Labai paprastas būdas tai įsivaizduoti – įsivaizduoti, kad jūsų projektas yra įrankių dėžė: biblioteka yra tarsi specializuotas įrankisPavyzdžiui, dailidės plaktukas. Jis neverčia jūsų statyti namo konkrečiu būdu; jis tiesiog suteikia jums labai gerą įrankį vinims įkalti, kai nuspręsite jį naudoti.
Kas yra sistema ir kuo ji skiriasi nuo bibliotekos?
Un struktūra Tai kažkas didesnio ir labiau struktūrizuoto nei biblioteka. Tai kolekcija įrankiai, bibliotekos, taisyklės ir konvencijos kurie suteikia jums pagrindą greičiau ir efektyviau kurti išsamias programas.
Jei biblioteka yra atskiras įrankis, tai sistema labiau panaši į pastato planas su jau pastatyta dalimi konstrukcijosAtvykstate, vadovaujatės brėžiniu ir užbaigiate likusią konstrukcijos dalį. Karkasas apibrėžia bendrą architektūrą ir nurodo, kur dera kiekviena jūsų kodo dalis.
Sistemoje jūs ne tik importuojate funkcijas: jūs sutinkate dirbti laikydamiesi šių gairių. darbo eiga ir modeliai Sistema daugelį dalykų nusprendžia už jus (kaip tvarkomi failai, kaip tvarkomos užklausos, kokius gyvavimo ciklus turite laikytis...), o jūs prisitaikote prie jos siūlomo „laimingo kelio“.
Pagrindinis bruožas, dažnai naudojamas skirtumui paaiškinti, yra vadinamasis valdymo inversijaNaudodami biblioteką, jūs sprendžiate, kada ją iškviesti. Naudojant sistemą, daugeliu atvejų pati sistema iškviečia jūsų kodą tinkamu laiku (pavyzdžiui, kai gaunama HTTP užklausa, kai inicijuojamas komponentas arba kai įvyksta įvykis).
Galime palyginti su receptų knygaRecepte jau pateiktas ingredientų sąrašas, žingsnių tvarka ir gaminimo laikas. Jums tereikia pridėti paskutinius štrichus ir pakoreguoti pagal savo skonį, tačiau struktūra jau apibrėžta. Panašiai, sistema padės jums sukurti savo programėlę.
Dirbant su sistema, didžiausias privalumas yra tas, kad galite sutelkti dėmesį į verslo logiką (kas daro jūsų programą unikalią) negaišdami laiko visada nustatant tą pačią pagrindinę infrastruktūrą: maršrutizavimą, duomenų bazės ryšį, saugumą, šablonus ir kt.
Kai kurios labai populiarios žiniatinklio kūrimo sistemos yra Django (skirta „Python“) Ruby on Rails (skirta Ruby), Laravel (skirta PHP) arba Pavasaris (skirta „Java“). Šios sistemos paprastai parenkamos atsižvelgiant į dažniausiai vartojamos kalbosJie visi siūlo labai išsamias struktūras, kurios apjungia bibliotekas, vidines API ir linijų įrankius. komandos ir aiškias projekto organizavimo konvencijas.
Priekinėje pusėje randame „dideles“ sistemas ir bibliotekas, tokias kaip „Angular“, „React“ arba „Vue.js“ kurie, be daugkartinio naudojimo komponentų, siūlo labai apibrėžtas architektūras ir srautus sudėtingoms sąsajoms kurti.
Kas yra API ir kodėl ji tokia svarbi?
A API (Taikomųjų programų programavimo sąsaja) yra ne tiek konkretus kodo fragmentas, kiek sutartis, kurioje aprašoma, kaip dvi programinės įrangos dalys bendrauja tarpusavyjeApibrėžkite, kokias operacijas galima atlikti, kokius duomenis reikia siųsti ir koks bus atsakymas.
Įsivaizduokite API kaip naudojimo instrukcija Tai paaiškina, kaip naudoti bibliotekos funkcijas arba kaip bendrauti su nuotoline paslauga. Jums nereikia žinoti vidinių įgyvendinimo detalių; jums tereikia laikytis API taisyklių (galimų metodų, parametrų ir duomenų formatų).
Kad tai vizualizuotumėte, įsivaizduokite, kad norite, jog jūsų programa praneštų ūkininkams apie pakeitimus. El TiempoGalėtumėte susikurti savo orų prognozavimo sistemą (kas būtų beprotiška) arba prisijungti prie API iš specializuotos paslaugos, tokios kaip „OpenWeather“, kuri jau teikia šią informaciją. Jūsų programa pateikia užklausą pagal API taisykles ir gauna duomenis, paruoštus naudoti.
Šiame etape Žinote tik tai, ką jums žada APIPavyzdžiui, „jei atsiųsite man miestą ir prieigos raktą, grąžinsiu JSON failą su temperatūra, drėgme ir prognoze.“ Visa kita – kaip jie apskaičiuoja šiuos duomenis, kaip sukonfigūruota jų infrastruktūra, kokius algoritmus naudoja – yra paslėpta už API.
API gali būti matoma bibliotekos ar sistemos dalis (pavyzdžiui, „Django“ arba „NumPy“ klasių ir metodų API) arba ji gali būti nuotolinė sąsaja į išorinę sistemą, pvz., API "Google" Žemėlapiai, „YouTube“ API arba „PayPal“ API.
Žiniatinklio pasaulyje, kalbėdami apie „žiniatinklio API“, paprastai turime omenyje sąsajos, pasiekiamos per HTTP (REST, GraphQL ir kt.), kurios paprastai grąžina duomenis JSON formatu. Šios API leidžia labai skirtingoms sistemoms (mobiliosioms, žiniatinklio, serverio paslaugoms) integruotis tarpusavyje, nepriklausomai nuo naudojamos kalbos ar technologijos.
API ir biblioteka: du vienas kitą papildantys elementai
Daugelis žmonių „API“ ir „biblioteka“ vartoja beveik sinonimai, tačiau taip nėra. biblioteka yra konkretus kodas, realius funkcijų ir klasių įgyvendinimus, kuriuos galite atsisiųsti ir įtraukti į savo projektą.
Kita vertus, API yra bibliotekos naudojimo specifikacijaTai viešas metodų, klasių, parametrų ir grąžinimo tipų sąrašas, prie kurio gali prisijungti jūsų programa. Tęsiant įrankių rinkinio analogiją, biblioteka būtų fizinis įrankių rinkinys, o API būtų katalogas, kuriame paaiškinama, ką daro kiekvienas įrankis ir kaip jį teisingai naudoti.
Labai svarbus dalykas: viena API gali turėti keli įgyvendinimai atskirų bibliotekų pavidalu. Pavyzdžiui, tokia specifikacija kaip JDBC „Java“ kalboje apibrėžia, kaip sąveikauti su duomenų bazėmis; tada kiekvienas teikėjas („PostgreSQL“, „MySQL“ ir kt.) siūlo savo biblioteką, kuri įgyvendina tą API.
Dėl šio atskyrimo galite rašyti savo programą prieš Stabilus ir gerai suprojektuotas API ir pakeisti pagrindinę biblioteką neperrašant viso kodo. Tai vienas iš programinės įrangos perkeliamumo ir sąveikumo raktų.
Trumpai tariant, kai parsisiųsti Kažkas panašaus į „JavaMail“, „NumPy“ ar „Apache Commons“ – tai, ką gaunate, yra... bibliotekos, kurios įgyvendina APIJūs programuojate „prieš API“ (tai, ką žada viešieji metodai) ir pasitikite, kad vidinė įgyvendinimo versija atliks darbą efektyviai ir teisingai.
Kaip į visa tai dera karkasai?
Los sistemos Paprastai jie vienoje struktūroje sujungia kelias bibliotekas ir platų API spektrą. Be pakartotinai naudojamo kodo, jie teikia pilnas skeletas kurti programas laikantis nuoseklaus požiūrio.
Tipinė sistema įtraukia:
- Vidinės bibliotekos įprastoms užduotims (autentifikavimui, prieigai prie duomenų, šablonams, patvirtinimams ir kt.).
- Patentuotos API kurie tvarkingai ir gerai dokumentuotai pateikia šiuos gebėjimus.
- Papildomos priemonės pavyzdžiui, kodo generatoriai, derinimo programos, vizualinės aplinkos arba integruoti redaktoriai.
Labai vaizdingas pavyzdys yra Unity3D kuriant žaidimasTai ne tik grafikos biblioteka: tai visavertis karkasas su vaizdo redaktoriumi, fizikos varikliu, scenų sistema, derinimo įrankiais, paketais ir daugybe API garso, animacijos, vartotojo įvesties ir kt. programoms. Jis suteikia praktiškai viską, ko reikia žaidimui sukurti, jei tik laikotės gairių. modeliai ir darbo eigos kad pati Vienybė nustato.
Kuriant žiniatinklį, naudojant tokią sistemą kaip „Django“ ar „Laravel“, reikia pritaikyti jos mentalinis modelis ir jo projekto struktūraJūsų rodiniai, modeliai, valdikliai ir šablonai telpa į sistemai numatytas vietas ir formatus, o tai savo ruožtu labai palengvina jūsų gyvenimą naudojant administravimo įrankius, duomenų bazių migracijas, maršrutizavimą ir kt.
API požiūriu, sistema gali būti ir naudoti išorines API sąsajas (pavyzdžiui, mokėjimo paslaugų teikėjo API), pvz. Atskleiskite savo API kad kitos programos galėtų sąveikauti su jūsų sistema. Labai įprasta derinti žiniatinklio sistemą su REST API orientuota antrine sistema, siekiant sukurti švarias ir lengvai prižiūrimas sąsajas.
Praktiniai bibliotekos, sistemos ir API skirtumai
Po visų šių apibrėžimų verta juos pritaikyti praktikoje. praktiniai skirtumai kurį pastebėsite savo kasdieniame gyvenime kaip kūrėjas.
Biblioteka:
- Suteikia Jums paruoštos naudoti funkcijos arba klasės spręsti konkrečias problemas (pvz., datos tvarkymas, PDF generavimas, šifravimo algoritmai).
- Tai neapibrėžia globalios jūsų programos architektūros. Jūs nusprendžiate, kaip organizuoti projektą ir kada skambinti į biblioteką.
- Jį galima naudoti kartu su daugeliu kitų bibliotekų, nereikia įsipareigoti vienam metodui.
Sistema:
- Jums siūlo a pagrindinė struktūra, skirta kurti išsamias programas (ypač žiniatinklyje ir mobiliuosiuose įrenginiuose, bet taip pat ir staliniuose kompiuteriuose ar žaidimuose).
- Tai nustato tam tikrą tvarka ir modeliai (pavyzdžiui, MVC, MVVM arba sluoksniuota architektūra), kurių turite laikytis, kad viskas derėtų tarpusavyje.
- Tai leidžia jums produktyviau atlikti pasikartojančias užduotis (maršruto parinkimas, saugumas, šablonai ir kt.) mainais už tai, kad priimate mokymosi kreivė didesnė ir mažesnė absoliuti laisvė.
API:
- Apibrėžti kaip programinės įrangos komponentai bendraujaar jūsų programoje (bibliotekos API), ar tarp programų (žiniatinklio API, operacinės sistemos API, SaaS platformos API).
- Tai nebūtinai pats kodas, bet taisyklių rinkinys (galiniai taškai, parametrai, duomenų tipai, klaidų kodai).
- Tai leidžia labai skirtingoms sistemoms dirbti kartu nežinant jų vidinių detalių.
Pavyzdžiui, Google Maps API Tai leidžia integruoti interaktyvius žemėlapius ir geolokacijos funkcijas į savo žiniatinklio ar mobiliąsias programas. API sąsaja "YouTube" Tai leidžia peržiūrėti vaizdo įrašus, kanalus ir grojaraščius, taip pat sąveikauti su kai kuriuo turiniu iš jūsų pačių paslaugų.
Kodėl įmonės skelbia savo API?
Daugelis įmonių nusprendžia „atverti“ arba publikuoti savo API, kad kiti kūrėjai kuria savo paslaugasTaip jie atveria tam tikrus įėjimo taškus į savo sistemą (žinoma, apsaugotus autentifikavimu ir leidimais) ir leidžia trečiosioms šalims išplėsti platformos pasiekiamumą.
Pagrindinės priežastys Norint išleisti API, paprastai atliekami šie veiksmai:
- Išplečiamumas: leidžiant kitiems pridėti naujų funkcijų, integracijų ir naudojimo būdų, kurių pati įmonė galbūt nebūtų įsivaizdavusi.
- Ekosistemos kūrimasskatinti viena kitą papildančių programų ir paslaugų aplinką, kuri padidinti pagrindinio produkto vertę.
- Atviros naujovės: leiskite bendruomenei eksperimentuoti ir siūlyti kūrybiškus sprendimus, dažnai generuojant naujas verslo idėjas.
- verslo integracija: palengvinti paslaugos prijungimą prie CRM, ERP, rinkodaros įrankių ir kitų įmonių vidinių programų.
- Rinkos plėtrapasiekti naudotojus ir nišas, kurių bazinė platforma pati savaime nepasiektų, dėka trečiųjų šalių sukurtų integracijų.
Labai ryškus pavyzdys yra visa įrankių ekosistema, supanti WhatsApp Verslas ir jo APIkurios leidžia kurti „daugiaagentes“ platformas, kad keli operatoriai galėtų aptarnauti klientus iš vieno numerio, integruoti jį su CRM, pridėti pokalbių robotus, automatizuoti atsakymus ir kt. Čia „WhatsApp“ API veikia kaip įėjimo durys prie pranešimų infrastruktūros, o ant jos kuriami keli komerciniai ir atvirojo kodo sprendimai su pažangiomis funkcijomis.
Kas daro API „gerą“?
Ne visos API yra vienodai gerai sukurtos. Viena geras API dizainas Tai daro didelę įtaką jį naudojančio kūrėjo patirčiai ir ilgalaikių integracijų palaikymo paprastumui.
Šiek tiek Pagrindiniai bruožai Kokybiškos API savybės yra šios:
- Aiškumasmetodų pavadinimai, keliai ir parametrai, kurie yra suprantami iš pirmo žvilgsnio; jokių dviprasmybių.
- Nuoseklumastos pačios pavadinimų taisyklės, panašios atsakymų struktūros ir homogeniški modeliai visoje API.
- Kruopštus dokumentavimas: nuoseklūs vadovai, kodo pavyzdžiai, kiekvieno galinio taško paaiškinimas ir galimos klaidos.
- StabilumasKontroliuojami pakeitimai, aiškiai pažymėtos versijos ir atgalinis suderinamumas, siekiant išvengti esamų programų gedimų per naktį.
- Geras pasirodymasgreitas ir efektyvus atsakas išteklių naudojimo požiūriu, ypač žiniatinklio API, veikiančiose internetu.
- Stiprus saugumas: autentifikavimas, autorizavimas, šifravimas ir gerai suprojektuotos prieigos kontrolės priemonės.
- Naudingas klaidų tvarkymasAprašomieji klaidų pranešimai ir aiškūs būsenos kodai, palengvinantys diagnostiką.
Šiuolaikinių žiniatinklio API atveju standartinis duomenų mainų formatas yra JSONnes jis yra lengvas, lengvai suprantamas žmonėms ir labai lengvai išverčiamas iš beveik bet kurios programavimo kalbos.
API tipai, su kuriais susidursite
API terminas yra labai platus ir taikomas keli krūvos lygiai programinės įrangos. Kai kurie įprasti tipai yra šie:
- Operacinės sistemos APITai leidžia programoms bendrauti su pagrindine sistema (failų tvarkymu, procesais, atmintimi, tinklu ir kt.). Pavyzdžiai: API Windows arba POSIX specifikacija tipų sistemose unix.
- Nuotolinės arba paskirstytos APIJie apibrėžia, kaip programos, veikiančios skirtinguose kompiuteriuose, bendrauja. Jie naudoja specifinius tinklo protokolus ir paprastai nepriklauso nuo kalbos. CORBA yra klasikinis pavyzdys, nors dabar jis yra retesnis, palyginti su alternatyvomis, tokiomis kaip gRPC ar REST.
- Žiniatinklio APIŠios paslaugos paprastai pasiekiamos per HTTP/HTTPS, o duomenys pateikiami JSON arba XML formatu. Tai apima API tokioms paslaugoms kaip „Google“ žemėlapiai, „Twitter“, „PayPal“ arba praktiškai bet kuri moderni SaaS.
Be to, daugelis organizacijų kuria Vidinės API sąsajos kad jų pačių komandos galėtų tvarkingai ir kontroliuojamai bendrauti tarp mikropaslaugų, vidinių programų ir duomenų bazių.
Sistemų, bibliotekų ir API pasirinkimas ir derinimas projekte
Tikrame projekte retai kada pasirenkate tik vieną iš šių dalių. Paprastai jūs sujungti sistemą, kelias bibliotekas ir kelias API sąsajas išorinis arba vidinis, kad sukurtumėte savo programą.
Galbūt tai jums pravers pagrindinė taisyklė:
- Jei kuriate visą programą nuo nulio ir norite dirbti greičiau ir organizuotiau, Pradėkite nuo sistemos.
- Jei reikia išspręsti konkrečias problemas (datos, PDF failai, diagramos, mašininis mokymasis ir kt.), ieškoti specializuotų bibliotekų kad galite integruoti.
- Jei jūsų programai reikia bendrauti su kitomis sistemomis, panaudoti API kad tos sistemos atskleistų (arba apibrėžtų jūsų pačių API, kad kiti galėtų su jumis integruotis).
Įsivaizduokite žiniatinklio programą, parašytą naudojant Django kaip sistemą. Viduje naudosite tokias bibliotekas kaip „NumPy“ o Pagalvės Jei jums reikia skaitmeninių skaičiavimų arba vaizdų apdorojimo, jums reikės OpenWeather API rodyti orų prognozes, o jūsų programa galėtų atskleisti REST žiniatinklio API, kad kiti jūsų įmonės vidiniai įrankiai galėtų pateikti užklausas apie jos duomenis.
Galiausiai svarbiausia yra suprasti, kad Jie nėra keičiami terminaiBiblioteka yra kodas, sistema – struktūra, o API – sutartis, sujungianti dalis. Įvaldę šiuos tris lygius, galite kurti programinę įrangą, kuri yra lengviau prižiūrima, lengviau pritaikoma ir daug lengviau integruojama su likusiu skaitmeniniu pasauliu.
Bibliotekų, sistemų ir API skirtumų bei ryšių įvaldymas nėra vien teorijos ar smulkaus žodyno klausimas: tai virsta priimti geresnius techninius sprendimus, venkite nesusipratimų komandoje ir išnaudokite daugiau įrankių, kuriuos jau naudojate kasdien, per daug apie juos negalvodami.
Aistringas rašytojas apie baitų pasaulį ir technologijas apskritai. Man patinka dalytis savo žiniomis rašydamas, būtent tai ir darysiu šiame tinklaraštyje, parodysiu jums įdomiausius dalykus apie programėles, programinę įrangą, techninę įrangą, technologijų tendencijas ir kt. Mano tikslas – padėti jums paprastai ir smagiai naršyti skaitmeniniame pasaulyje.