- 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.
Pradėjus programuoti, lengva pasimesti tokiose sąvokose kaip bibliotekos, karkasai ir API . Iš pirmo žvilgsnio tai atrodo kaip skirtingi to paties dalyko pavadinimai: „kitų žmonių jau parašytas kodas, kurį naudojate savo projektuose“. Tačiau iš tikrųjų kiekvienas iš jų atlieka konkretų vaidmenį programinės įrangos kūrime.
Jei jau kurį laiką programuojate, tikriausiai kasdien naudojate API, sistemas ir bibliotekas, apie tai daug negalvodami, ir jums netgi gali atrodyti, kad su jomis visomis bendraujate vienodai: importuojate kažką, iškviečiate funkcijas ir viskas. Net ir tokiu atveju geras kiekvienos iš jų supratimas ir jų tarpusavio ryšių palaikymas padeda pasirinkti geresnius įrankius, efektyviau kurti projektus ir be painiavos bendrauti su kitais kūrėjais.
Kas yra biblioteka programavime?
Programinės įrangos biblioteka iš esmės 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 – teikti paruoštas naudoti funkcijas , kurias galite įtraukti į savo programas nereikėdami „išradinėti dviračio“. Paprastai jas kuria žmonės, turintys didelę patirtį konkrečioje srityje (pavyzdžiui, matematika, duomenų bazių prieiga , teksto apdorojimas, grafika ir kt.), ir jos supakuojamos taip, kad kitiems kūrėjams būtų lengva jas integruoti.
Gerai žinomas „JavaScript“ ekosistemos pavyzdys yra „Lodash“ . Ši biblioteka siūlo daugybę naudingųjų funkcijų darbui su masyvais, objektais, eilutėmis, funkcijomis ir apskritai rinkiniais. Užuot rašę savo filtrus, transformacijas ar išplėstines paieškas, tiesiog iškviečiate „Lodash“ funkcijas, todėl sugeneruosite mažiau kodo ir klaidų.
„Python“ pasaulyje turime „NumPy“ – pagrindinį skaitmeninių skaičiavimų komponentą. Jis teikia duomenų struktūras, tokias kaip gerai žinomi daugiamačiai masyvai , ir labai efektyvias vektorines operacijas, skirtas pažangiai matematikai ir duomenų mokslui. Be „NumPy“ rankiniu būdu rašyti visas tas matricų manipuliavimo ir tiesinės algebros operacijas būtų tikras vargas.
„Java“ kalboje galima paminėti „Apache Commons“ – bibliotekų šeimą su visų rūšių įrankiais: išplėstinėmis kolekcijomis, failų tvarkymu, tipų konvertavimu, eilučių manipuliavimu ir daug daugiau. Šių bibliotekų dėka galite pakartotinai naudoti patikimus sprendimus, užuot nuolat taisę savo kodą.
Kai sakome, kad biblioteka padeda jūsų kodui tapti „moduliniu“, turime omenyje, kad jūsų programa yra sukurta iš nepriklausomų, daugkartinio naudojimo dalių . Tai pagerina organizavimą, supaprastina priežiūrą ir leidžia sistemai prisitaikyti prie didesnio duomenų kiekio ir didesnių apkrovų su mažiau problemų.
Labai paprastas būdas įsivaizduoti savo projektą kaip įrankių dėžę: knygų lentyna yra kaip specializuotas įrankis , pavyzdžiui, dailidės plaktukas. Ji neverčia jūsų statyti namo konkrečiu būdu; ji tiesiog suteikia jums labai gerą įrankį vinims kalti, kai nuspręsite jį naudoti.
Kas yra sistema ir kuo ji skiriasi nuo bibliotekos?
Sistema yra didesnė ir labiau struktūrizuota nei biblioteka. Tai įrankių, bibliotekų, taisyklių ir konvencijų rinkinys , suteikiantis pagrindą greitesniam ir efektyvesniam išsamių programų kūrimui.
Jei biblioteka yra atskiras įrankis, tai karkasas labiau primena pastato brėžinį, kuriame dalis konstrukcijos jau yra sukonstruota . Jūs ateinate, vykdote brėžinio instrukcijas ir užbaigiate likusią konstrukcijos dalį. Karkasas apibrėžia bendrą architektūrą ir nurodo, kur dera kiekviena jūsų kodo dalis.
Karkase jūs ne tik importuojate funkcijas: jūs sutinkate dirbti pagal konkretų darbo eigą ir šablonus . Karkasas už jus nusprendžia daugelį dalykų (kaip tvarkomi failai, kaip tvarkomos užklausos, kokių gyvavimo ciklų turite laikytis ir pan.), o jūs prisitaikote prie jo siūlomo „laimingo kelio“.
Pagrindinis bruožas, dažnai naudojamas skirtumui paaiškinti, yra vadinamoji valdymo inversija . Naudodami biblioteką, jūs nusprendž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 tai su receptų knyga : recepte jau pateikiamas ingredientų sąrašas, žingsnių tvarka ir gaminimo laikas. Jums tereikia pridėti paskutinius štrichus ir pakoreguoti pagal savo skonį, o struktūra jau apibrėžta. Panašiai ir sistema padeda 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 kuriant tą pačią pagrindinę infrastruktūrą: maršrutizavimą, duomenų bazės ryšį, saugumą, šablonus ir kt.
Kai kurios labai populiarios žiniatinklio kūrimo platformos yra „Django“ (skirta „Python“), „Ruby on Rails“ (skirta „Ruby“), „Laravel“ (skirta PHP) ir „Spring“ (skirta „Java“). Šios platformos paprastai parenkamos atsižvelgiant į plačiausiai naudojamas programavimo kalbas . Visos jos siūlo išsamias struktūras, kurios apjungia bibliotekas, vidines API, komandinės eilutės įrankius ir aiškias projekto organizavimo konvencijas.
Priekinėje pusėje randame „dideles“ sistemas ir bibliotekas, tokias kaip „Angular“, „React“ ar „Vue.js“ , kurios, be pakartotinai naudojamų komponentų, siūlo labai apibrėžtas architektūras ir srautus sudėtingoms sąsajoms kurti.
Kas yra API ir kodėl ji tokia svarbi?
API (taikomųjų programų programavimo sąsaja) yra ne tiek konkretus kodo fragmentas, kiek sutartis, apibūdinanti, kaip dvi programinės įrangos dalys bendrauja . Ji apibrėžia , kokias operacijas galima atlikti, kokius duomenis reikia siųsti ir koks bus atsakymas.
Įsivaizduokite API kaip naudojimo instrukciją , kurioje paaiškinama, 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ų programėlė praneštų ūkininkams apie pasikeitusius orus . Galėtumėte susikurti savo orų prognozavimo sistemą (kas būtų beprotiška) arba prisijungti prie specializuotos paslaugos, pvz., „OpenWeather“, API , kuri jau teikia šią informaciją. Jūsų programėlė pateikia užklausą pagal API taisykles ir gauna duomenis, paruoštus naudoti.
Šiuo atveju žinote tik tai, ką žada API : pavyzdžiui, „jei atsiųsite man miestą ir slaptažodį, 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 nuotolinė sąsaja su išorine sistema, pvz., „Google Maps“, „YouTube“ arba „PayPal“ API.
Žiniatinklio pasaulyje, kalbėdami apie „žiniatinklio API“, dažniausiai turime omenyje sąsajas, pasiekiamas per HTTP (REST, GraphQL ir kt.), kurios paprastai grąžina duomenis JSON formatu. Šios API leidžia labai skirtingoms sistemoms (mobiliesiems įrenginiams, svetainėms, 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 tai nėra tas pats. Biblioteka yra konkretus kodas , faktinis funkcijų ir klasių įgyvendinimas, kurį galite atsisiųsti ir įtraukti į savo projektą.
Kita vertus, API yra tos bibliotekos naudojimo specifikacija . Tai 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 – katalogas, kuriame paaiškinama, ką daro kiekvienas įrankis ir kaip jį teisingai naudoti.
Labai svarbus dalykas: viena API gali turėti kelias įgyvendinimo versijas skirtingų 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ą naudodami stabilią ir gerai suprojektuotą API ir keisti pagrindinę biblioteką neperrašydami viso kodo. Tai yra vienas iš programinės įrangos perkeliamumo ir sąveikumo raktų.
Trumpai tariant, atsisiuntę kažką panašaus į „JavaMail“, „NumPy“ ar „Apache Commons“, gaunate bibliotekas, kurios įgyvendina API . 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?
Karkasai paprastai sujungia kelias bibliotekas ir platų API spektrą vienoje struktūroje. Be to, kad siūlo pakartotinai naudojamą kodą, jie suteikia išsamų pagrindą programoms kurti taikant nuoseklų požiūrį.
Tipinė sistema apima :
- 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.
Puikus pavyzdys yra „Unity3D“ vaizdo žaidimų kūrime . Tai ne tik grafikos biblioteka: tai visavertis karkasas su vaizdo redaktoriumi, fizikos varikliu, scenų sistema, derinimo funkcija, paketavimu ir daugybe garso, animacijos, vartotojo įvesties ir kitų API. Jis suteikia praktiškai viską, ko reikia žaidimui sukurti, jei tik laikotės pačios „Unity“ nustatytų šablonų ir darbo eigų .
Kuriant žiniatinklio programas, tokių kaip „Django“ ar „Laravel“, reikia pritaikyti jų mentalinį modelį ir projekto struktūrą . Jūsų rodiniai, modeliai, valdikliai ir šablonai telpa į vietas ir formatus, kurių tikisi sistema, o tai savo ruožtu labai palengvina jūsų gyvenimą naudojant administravimo įrankius, duomenų bazių migraciją, maršrutizavimą ir kt.
API požiūriu, sistema gali naudoti išorines API (pavyzdžiui, mokėjimo teikėjo API) ir teikti savo API kitoms programoms, kad jos galėtų sąveikauti su jūsų sistema. Labai įprasta derinti žiniatinklio sistemą su REST API orientuotu subsisteminiu, siekiant sukurti švarias ir lengvai prižiūrimas sąsajas.
Praktiniai bibliotekos, sistemos ir API skirtumai
Po visų šių apibrėžimų verta apsvarstyti praktinius skirtumus , kuriuos pastebėsite kasdieniame darbe 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 leidžia integruoti interaktyvius žemėlapius ir geolokacijos funkcijas į žiniatinklio ar mobiliąsias programas. „YouTube“ API leidžia pasiekti vaizdo įrašus, kanalus ir grojaraščius, taip pat sąveikauti su kai kuriuo turiniu iš savo paslaugų.
Kodėl įmonės skelbia savo API?
Daugelis įmonių nusprendžia „atverti“ arba publikuoti savo API, kad kiti kūrėjai galėtų kurti jų paslaugas . Taip darydamos, jos 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 API išleidimo priežastys paprastai yra šios:
- 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ų.
Puikus pavyzdys yra visa „WhatsApp Business“ ir jos API įrankių ekosistema , leidžianti kurti „daugiaagentes“ platformas, kad keli agentai galėtų aptarnauti klientus iš vieno numerio, integruotis su CRM, pridėti pokalbių robotus, automatizuoti atsakymus ir dar daugiau. Čia „WhatsApp“ API veikia kaip vartai į pranešimų infrastruktūrą, o daugybė komercinių ir atvirojo kodo sprendimų kuria pažangias funkcijas.
Kas daro API „gerą“?
Ne visos API yra vienodos. Gerai suprojektuota API daro didelę įtaką kūrėjo patirčiai ir palengvina ilgalaikį integracijų palaikymą.
Kai kurios pagrindinės 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, žvaigždinis duomenų mainų formatas yra JSON , nes jis yra lengvas, lengvai skaitomas žmonėms ir labai patogus analizuoti iš beveik bet kurios programavimo kalbos.
API tipai, su kuriais susidursite
Terminas API yra labai platus ir taikomas įvairiems programinės įrangos paketo lygiams . 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 vidines API , kad jų komandos galėtų tvarkingai ir kontroliuojamai bendrauti tarp mikropaslaugų, vidinių programų ir duomenų bazių.
Sistemų, bibliotekų ir API pasirinkimas ir derinimas projekte
Realiame projekte retai pasirenkate tik vieną iš šių dalių. Paprastai, kurdami savo programą, derinate sistemą, kelias bibliotekas ir įvairias išorines arba vidines API sąsajas .
Jums gali būti naudinga ši gairė :
- 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“ arba „Pillow“ , jei reikės skaitinių skaičiavimų arba vaizdų apdorojimo, „OpenWeather“ API naudosite orų prognozėms rodyti, o jūsų programa taip pat galėtų pateikti RESTful žiniatinklio API, kad kiti jūsų įmonės vidiniai įrankiai galėtų pateikti užklausas apie jos duomenis.
Galiausiai, svarbiausia suprasti, kad šie terminai nėra keičiami : biblioteka yra kodas, sistema yra struktūra, o API yra 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 išsamaus žodyno klausimas: tai reiškia geresnių techninių sprendimų priėmimą , nesusipratimų komandos viduje išvengimą ir daugiau naudos iš jau kasdien naudojamų įrankių, per daug apie tai negalvojant.
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.
Rodiklis
- 1 Kas yra biblioteka programavime?
- 2 Kas yra sistema ir kuo ji skiriasi nuo bibliotekos?
- 3 Kas yra API ir kodėl ji tokia svarbi?
- 4 API ir biblioteka: du vienas kitą papildantys elementai
- 5 Kaip į visa tai dera karkasai?
- 6 Praktiniai bibliotekos, sistemos ir API skirtumai
- 7 Kodėl įmonės skelbia savo API?
- 8 Kas daro API „gerą“?
- 9 API tipai, su kuriais susidursite
- 10 Sistemų, bibliotekų ir API pasirinkimas ir derinimas projekte