Ndërfaqja e programit të aplikacionit. Çfarë është API? Funksionet API

Herët a vonë, çdo programues has në koncepte të tilla si API. Sidoqoftë, nëse lind një reagim i tillë, jo të gjithë e dinë se çfarë është, dhe është e nevojshme dhe si ta vikorizojmë atë. Dhe në këtë artikull, unë do të plotësoj këtë boshllëk në njohuritë e veprimeve nga ju, dhe gjithashtu do të zbatoj praktikën time.

API (ndërfaqja e programimit të aplikacionit) - tse ndërfaqja e programimit të aplikacionit. Me fjalë të tjera, me fjalë të thjeshta, ekziston një grup funksionesh të ndryshme, konstante, klasa, formate pyetjesh që mund të përdoren në programe të tjera.

Mund të më thoni çfarë API- ky është një lloj objekti, zbatimin e të cilit ne nuk e dimë, ne vetëm mund ta vikorizojmë atë. Për shembull, një kompjuter është një objekt, zbatimin e të cilit shumë pak njerëz e dinë, megjithatë, ai mund të eksplorohet në të gjitha mënyrat: shikimi i videove, shfletimi në internet, tekste të tjera, etj. Si funksionon gjithçka - pak njerëz e dinë, por jo të gjithë mund të punojnë.

prapanicë APIє Windows API, OpenGL API, Direct3D API Dhe kështu me radhë.

Për shembull, kohët e fundit e gjeta veten të mbërthyer në mes API. Jam regjistruar në shërbimin postar SmartResponder.ru Dhe pasi lansuan listën e postimeve, njerëzit filluan të abonohen. Sfida ka ardhur: duke kontaktuar dhe duke u abonuar, njerëzit mund të marrin një kurs video me kosto të ulët. SmartResponder.ru", pastaj qasja kryesore (për shembull, përmes DB) Nuk i kuptoj këto të dhëna, por ishte e nevojshme t'i zbatoja. Fatmirësisht, " SmartResponder.ruє i fuqishmi juaj API, Kështu u bëra shpejt.

Unë i njoh ata API Futni formatin për të futur datën e parapagimit. Dali përmes KURL Unë kam plotësuar hyrjen e kërkuar dhe kam hequr datën e kërkuar të parapagimit për një specifikë adresën e postës elektronike. Më poshtë është një procedurë standarde për përpunimin dhe shfaqjen e rezultatit.

Leonid Yakubovich 26 nëntor 2012 rreth orës 13:59

Çfarë është API?

  • dhomë druri *

Une po fluturoj!
Në këtë artikull, ne do të hedhim një vështrim se çfarë është një API, si është dhe pse përdoret. Le të shohim gjithashtu se si API mund të përdoret në aplikacionet tuaja në ueb dhe si mund ta bëni jetën më të lehtë për një programues.

Epo, le të përfundojmë me takimin. API (Application Programming Interface) – kjo është një ndërfaqe programimi, një ndërfaqe programi krijimi. Siç thonë ata të mençurit tim, API është një kod i gatshëm për ta bërë jetën më të lehtë për programin. API u krijua në mënyrë që programuesi ta bëjë më të lehtë për programet e tjera të shkruajnë kodin (për shembull, funksionet). Të gjitha njohuritë e jQuery, shkrimi në JavaScript, dhe gjithashtu një lloj API. Siç mund ta shihni, jQuery e bën shumë më të lehtë shkrimin e kodit. Ato që mund të prodhohen duke përdorur JavaScript bazë në 30 rreshta mund të shkruhen duke përdorur jQuery në 5-6. Nëse shikoni API-në me një shikim, mund të zbuloni shumë shërbime që mund të zhvillohen. Shërbimi më popullor sot është code.google.com, i cili ofron gati qindra API të ndryshme! Kjo përfshin një ndërfaqe për krijimin e shtesave Android, API të ndryshme për të punuar me AJAX dhe shtesa të ndryshme API që mund të rregullohen lehtësisht për t'iu përshtatur nevojave tuaja.

Si ndiheni të shkruani kodin me duart tuaja? A është e nevojshme të punohet në atë që është krijuar tashmë? A është e mundur të shohim zgjidhje pa kosto (dhe, në fakt, ndihmë pa kosto) nga zhvillimi i uebit? Nëse i jeni përgjigjur "НІ" kësaj pyetjeje, atëherë ju lutemi vini re se e keni kuptuar thelbin e API.

Unë ende dua të lahem. Splikat NUK duhet të shqetësohen me zgjidhje të gatshme, fragmentet në të ardhmen nuk do të ndërhyjnë në detyrat reale. Pra, nëse jeni një programues fillestar, atëherë mos e vikorizoni fabrikën! Filloni të mendoni me kokën tuaj, do të ketë algoritme të ndryshme për të kuptuar thelbin e programimit. Do të doja të them gjithashtu se të gjithë janë tashmë të bindur se API nuk është një zgjidhje e gatshme, por një rrugë e mesme, një ndërfaqe për krijimin e projekteve tuaja. Nuk hani koteleta të ngrira nga dyqani? Duhet t'i lubrifikoni menjëherë, apo jo? Kjo analogji përshkruan qartë thelbin e API-së.

Zagalom, kuptova se çfarë është API, ku dhe si përdoret, më e rëndësishmja për çfarë. Shpresoj që të përqafoni zhvillimin e programimit në ueb dhe të kuptuarit e thellësive gjithnjë e më të mëdha!

Windows API - një grup funksionesh të sistemit operativ

Shkurtesa API duket e paqartë dhe konfuze për shumë programues fillestarë. Në fakt, ndërfaqja e programimit të aplikacionit (API) është vetëm një grup i gatshëm funksionesh që mund të përdoren nga shitësit e shtesave. Në kuptimin tradicional, ky koncept është i barabartë me atë që më parë quhej shpesh një bibliotekë nënprogramesh. Megjithatë, ju lutemi vini re se nën API ekziston një kategori e veçantë e bibliotekave të tilla.

Gjatë procesit të zhvillimit, një grup funksionesh të brendshme specifike, të cilat kërkohen për zbatimin e një programi të caktuar, formohet për përdoruesin fundor, i cili quhet MyApplication API. Megjithatë, shpesh zbulohet se këto funksione mund të përdoren në mënyrë efektive për të krijuar programe të tjera, duke përfshirë programe të tjera. Në çfarë mënyre autorët, bazuar në strategjinë e shitjes së produktit të tyre, zgjedhin ushqimin: pse lejojnë akses në cilin grup për klientët e jashtëm? Nëse konfirmohet, përshkrimi i paketës së softuerit si një karakteristikë pozitive përfshin shprehjen: "Paketa përfshin një grup të plotë funksionesh API" (ose për para shtesë).

Kështu, më shpesh nën API ekziston një grup funksionesh që janë pjesë e një programi, por që janë të disponueshme për përdorim në programe të tjera. Për shembull, Excel, përveç ndërfaqes për përdoruesin përfundimtar, ka një grup funksionesh Excel API që mund të aksesohen, për shembull, me programet e krijuara duke përdorur VB.

Me sa duket, API i Windows është një grup funksionesh që është pjesë e vetë sistemit operativ dhe në të njëjtën kohë është i aksesueshëm për çdo program tjetër, përfshirë atë të shkruar duke përdorur VB. Ky plan është krejtësisht analog me grupin e tejkalimeve të sistemit BIOS/DOS, që në fakt është DOS API.

Avantazhi i funksionalitetit të Windows API, nga njëra anë, është shumë më i gjerë se ai i DOS, nga ana tjetër, ai nuk përfshin shumë veçori për kontrollin e drejtpërdrejtë të burimeve kompjuterike të disponueshme për programet në ish-OS. Për më tepër, lidhja me API-në e Windows bazohet në parametra shtesë procedural dhe funksioni DOS aksesohet përmes një komande të veçantë të makinës së procesorit të quajtur Interrupt.

API-ja më e kërkuar e Win për programuesit VB

Pavarësisht nga ato që VB nuk ka funksione të ndryshme, në procesin e zhvillimit pak a shumë serioz zbulohet se aftësitë e tyre shpesh nuk janë të mjaftueshme për të kryer detyrat e nevojshme. Në këtë rast, programuesit fillestarë shpesh fillojnë të kursejnë të metat e VB dhe të mendojnë për ndryshimin e mjetit, duke mos dyshuar se kompjuteri i tyre ka një grup të madh kostosh dhe duhet t'i futë ato shpejt.

Kur njiheni me Win API, rezulton se ka shumë funksione të përdorura VB që nuk janë gjë tjetër veçse të zgjeruara në procedura specifike të sistemit, por zbatohen vetëm në të njëjtën sintaksë si gjuha e dhënë. Bazuar në nevojën për një API të shpejtë, opsionet e disponueshme janë:

  1. Funksionet API që zbatohen përgjithësisht në formën e funksioneve VB. Koha nuk është më pak, megjithatë, në këtë rast mund të jetë e nevojshme të kaloni në stagnimin e API, në mënyrë që t'ju lejojë të rritni shpejt produktivitetin (përveç mungesës së ndryshimeve të panevojshme në parametrat që transferohen).
  2. Funksionet e krijuara VB zbatohen vetëm si rezultat i funksioneve të jashtme API. Këtu është një opsion më i thjeshtë. Për shembull, funksioni CreateDirectory API ka aftësi më të mëdha në krahasim me operatorin VB MkDir.
  3. Ka një numër të madh funksionesh API që nuk kanë analoge në versionin aktual të gjuhës VB. Për shembull, nuk është e mundur të fshini një drejtori duke përdorur VB - për këtë ju duhet të përdorni funksionin DeleteDirectory.

Duhet gjithashtu të theksohet se funksione të caktuara API (disa prej tyre në API Win janë edhe të parëndësishme) nuk mund të aksesohen nga programet VB përmes një numri ndërfaqesh gjuhësore, për shembull, për shkak të mungesës së aftësisë për të punuar me adresat e kujtesës. Megjithatë, në një numër rastesh, teknikat e programimit jo të parëndësishëm mund të ndihmojnë (në rastin e të njëjtave adresa).

Ideja e veçantë e autorit është që në vend që të zgjerohet versioni në versionin e funksioneve të përdorura nga VB, në vijim do të jepet një përshkrim i mirë i funksioneve më të zakonshme API. Në të njëjtën kohë, do të doja t'i lutem zhvilluesve që të mos presin shfaqjen e një versioni të ri për një veçori me funksione të zgjeruara, por përkundrazi të marrin parasysh gjendjen e API-së origjinale të Win - është plotësisht e qartë se aftësitë që ju nevoja mund të zbatohet tashmë në versionin ї VB 1.0 lëshimi 1991.

Yak vivchati Win API

Nuk është aq e lehtë të kujtosh se numri i funksioneve të API-së Win32 vlerësohet në rreth 10 mijë (askush nuk e di shifrën e saktë, si Microsoft).

Magazina VB (versionet 4-6) përfshin një skedar me një përshkrim të Win API - WIN32API.TXT (një raport mbi zbatimin e tij do të shpallet më vonë). Ale, në Persher, me një yogo, mund të hiqet dorë nga Vidomosti për njohjen e të njëjtave parametra për vicoristovani mnemoni izmen, dhe nga ana tjetër - perepass-i i funksioneve të skedarit tsomo nuk është zhdukur. Në ditët e sotme (siç do ta kishte fati), VB 3.0 kishte skedarë të veçantë të provës së konceptit që përshkruanin funksionet e Win16 API. Në v.4.0, ky informacion i vlefshëm është tashmë i disponueshëm nëpërmjet ndërfaqes manuale.

Informacione shtesë rreth API-së Win32 mund të gjenden në Kompletin e mëparshëm të Zhvillimit të Softuerit të Platformës, i cili është gjithashtu i disponueshëm në CD-të e Bibliotekës MSDN të përfshira me VB 5.0, 6.0 Enterprise Edition dhe Office 2000 Developer Edition. Megjithatë, gjetja e informacionit që ju nevojitet atje dhe aksesi në të nuk është aspak e lehtë. Pa përmendur as që të gjitha përshkrimet atje janë bërë tërësisht nga C.

Prezantimi më i njohur në botë për programimin API në mjediset VB është libri i ekspertit të njohur amerikan Daniel Appleman. Kjo seri e Udhëzuesit të Programuesit Visual Basic të Dan Appleman për Windows API (për Win16, Win32, qindra versione të ndryshme të VB) që nga viti 1993 është bërë vazhdimisht një bestseller për programuesit VB. Libri Dan Appleman's VB 5.0 Programmer's Guide to the Win32 API, botuar në 1997, iu soll autorit nga SHBA nga një mik që dinte për librarinë e parë të një qyteti të vogël provincial.

Ky libër me një vëllim mbi 1500 faqe përfshin një përshkrim të metodave të avancuara të programimit API në VB, si dhe më shumë se 900 funksione. CD-ja do të përmbajë tekstin e plotë të librit dhe të gjitha aplikacionet softuerike, si dhe një sërë seksionesh shtesë që nuk kanë arritur në versionin e dytë. Në vitin 1999, Dan Appleman publikoi një libër të ri, Librin Puzzle Win32 API të Dan Appleman dhe Tutorialin për Programuesit Visual Basic, i cili përfshin përmbledhje të 7600 funksioneve të tjera (megjithëse jo tabelat e raportimit).

Win API dhe Biblioteka e Lidhjeve Dinamike (DLL)

Një grup implementimesh Win API si biblioteka dinamike DLL. Më tej do të flasim në të vërtetë për teknologjinë e instalimit të DLL-ve në mes të VB në aplikimin e bibliotekave që përfshihen në depon e Win API. Sidoqoftë, kur flasim për DLL, është e nevojshme të fitoni shumë respekt.

Në këtë rast, sipas DLL, ne mund të respektojmë versionin tradicional të bibliotekave dinamike të dyfishta, i cili siguron konvertimin e drejtpërdrejtë në procedurat e kërkuara - nënprogramet ose funksionet (përafërsisht e njëjta gjë siç pritet kur thirren procedurat në mes të një projekti VB ). Biblioteka të tilla mund të krijohen duke përdorur mjete të tjera: VC++, Delphi, Fortran dhe VB (i cili shfaqet në versionin 7.0) - pjesa tjetër mund të funksionojë vetëm duke përdorur ActiveX DLL, të cilat mund të aksesohen përmes faqes Internet OLE Automation.

Skedarët e bibliotekës dinamike mund të përmbajnë ekstensionin.DLL, por kjo nuk është domosdoshmërisht rasti (për Win16, ekstensioni.EXE ishte shpesh i mbërthyer); Drejtuesit e pajisjeve të jashtme renditen nën DRV shtesë.

Siç e kemi përmendur tashmë, është e rëndësishme të përcaktohet numri i saktë i funksioneve dhe skedarëve të Windows API në mënyrë që ato të ruhen në katalogun e sistemit. Ky plan do të shihte më mirë një magazinë bibliotekë që shkon deri në bërthamën e sistemit operativ dhe bibliotekat kryesore me funksione kyçe shtesë.

Dhe tani jam i lumtur.

Ju lutemi 1. Ndiqni formatimin e saktë të njoftimit DL L-procedurat

Hierarkia e programit deri në procedurat DLL duket e njëjtë me procedurat "primare" të Visual Basic, për shembull:

Thirrni DllName ([lista e argumenteve])

Sidoqoftë, për të përdorur funksionet e jashtme DLL (përfshirë API-në Win), ato duhet të thirren nga programi duke përdorur deklaratën Declare, e cila duket si kjo:

Deklaroni Emrin e Nën-Procedurës Lib _ “Emri i Bibliotekës” _ [([Lista e Argumenteve])]

Deklaroni emrin e funksionit të funksionit _ Lib “Emri i Bibliotekës” _ [([Lista e Argumenteve])]

Këtu, në krahët katrorë, tregohen elementët e nevojshëm të operatorit, fjalët e alternuara tregohen me shkronja të pjerrëta dhe fjalët kyçe tregohen me shkronja të pjerrëta. Sistemi i avancuar është krijuar për të ofruar një përshkrim të mirë të sintaksës së operatorit, gjë që i bën disa pika më pak të rëndësishme.

Shumica e funksioneve të jashtme janë të vendosura në seksionin Deklaratat e Përgjithshme të modulit. Nëse e vendosni në një modul formulari, duhet të specifikoni fjalën kyçe Private (kjo do të jetë e disponueshme vetëm në mes të modulit) - kjo është e njëjtë për të gjitha procedurat e modulit të formularit.

Grupi i zbatimeve të Win32 API është i kufizuar në funksione (API Win16 kishte shumë nën-programe). Kjo është veçanërisht e vërtetë për funksionet e tipit Long, të cilat më shpesh kthejnë kodin e përfundimit të një operacioni.

Operatori Declare u shfaq në MS Basic tashmë për DOS, dhe u përdor për të komunikuar procedurat e brendshme të projektit. Visual Basic nuk ka nevojë për këtë, pasi deklaratat e procedurave të brendshme përshkruajnë automatikisht përshkrimet e tyre nën dhe funksionet. Përshtatur nga Basic/DOS, përshkrimi i ri duhet të tregojë emrin e skedarit të bibliotekës, ku ndodhet procedura. Bibliotekat Wip API janë të vendosura në direktorinë e sistemit Windows, gjithçka që kërkohet është një emër skedari. Nëse jeni duke punuar në një DLL, do t'ju duhet të shkruani një shteg të ri në atë skedar për t'u siguruar.

Përshkrimi i operatorit Declare zë shumë hapësirë ​​dhe nuk futet në një rresht pranë dritares së kodit. Prandaj, ju rekomandojmë që kur shkruani programe, t'i kushtoni vëmendje çdo lloj skeme të transferimit të rreshtave, për shembull:

Deklaroni Funksionin GetTempPath _ Lib "kernel32" Alias ​​​​"GetTempPathA" _ (ByVal nBufferLength As Long, _ ByVal lpBuffer As String) Për aq kohë sa

Dhe këtu përshkruhen të gjithë elementët kryesorë të përshkrimit të rreshtave të ndryshëm dhe është mirë të lexohen.

Ju lutemi 2. Jini veçanërisht të respektueshëm kur punoni me funksionet DLL

Përdorimi i API-së Win dhe funksioneve të ndryshme DLL zgjeron ndjeshëm aftësitë funksionale të VB dhe, më shpesh, ju lejon të rritni produktivitetin e programit. Megjithatë, çmimi që duhet paguar për çmimin është një ulje në besueshmërinë e programeve robotike, veçanërisht gjatë procesit të zhvillimit.

Një nga avantazhet më të rëndësishme të softuerit të mesëm VB është besueshmëria e procesit të zhvillimit të programit: duke funksionuar nën kornizën e interpretuesit, kodi i programit është teorikisht i pamundur për të thyer robotin Windows dhe VB. Programuesi mund të mos jetë shumë i kujdesshëm në lidhje me korrektësinë e kalimit të parametrave në funksionin që thirret - gabime të tilla do të zbulohen lehtësisht nga vetë interpretuesi, qoftë gjatë procesit të përkthimit të kodit, qoftë gjatë ekzekutimit të tij. Në rastin më të keq, thjesht do të ketë një ndërprerje në regjimin e përpunimit, si në kuptimin, ku dhe çfarë ka ndodhur.

Përdorimi i funksioneve të drejtpërdrejta të Windows API ose bibliotekave të tjera DLL merr një kontroll të tillë mbi transferimin e të dhënave dhe procesin e lidhjes me kodin jashtë mesit të VB. Prandaj, një kompromis në funksionet e jashtme mund të çojë në dështimin e VB dhe sistemit operativ. Kjo është veçanërisht e rëndësishme në fazën e zhvillimit të programit, nëse prania e përfitimeve është krejtësisht e natyrshme. Kështu, për shkak të gamës së gjerë të funksioneve të sistemit bazë, programuesi merr përgjegjësinë për korrektësinë e zbatimit të tyre.

Problemi ndërlikohet më tej nga fakti se programe të ndryshme kanë mënyra të ndryshme të kalimit të parametrave ndërmjet procedurave. (Më saktë, metodat e ndryshme të transmetimit janë objekt diskutimi, pasi shumë prej nesh mund të mbështesin një sërë metodash.) Win API është implementuar në C/C++ dhe duhet të flasim për kalimin e parametrave të pranuar në këtë sistem, siç janë klasifikuar si varianti primar VB.

Në lidhje me këtë, duhet të theksohet se shfaqja e analogëve VB të funksioneve API justifikohet nga përshtatja e atyre të mbetura në sintaksën VB dhe zbatimi i një mekanizmi të ngjashëm për kontrollin e shkëmbimit të të dhënave. Vlerësojmë gjithashtu që në fazën e zhvillimit përfundimtar të programeve kur ndërtoni një modul që kompilohet, është më mirë të zgjidhni opsionin e përpilimit P-code në vend të Native Code (kodi i makinës). Në fillim, programi funksionon nën kontrollin e një përkthyesi - në vend të përdorimit të kodit të makinës, por mundësisht duke parë sistemin operativ dhe duke siguruar një modalitet manual për identifikimin e gabimeve të mundshme.

Porada 3. Dhjetë rekomandime nga Dan Appleman për programim të besueshëm API në programin e mesëm VB

Funksione të ndryshme të API-së kërkojnë programim më të kujdesshëm me përdorimin e disa metodave jo aq bazike të procedurave të shkallëzimit (kundrejt VB). Në të ardhmen, gradualisht po e humbim urinë nga ky ushqim. Dhe tani do të paraqesim një përmbledhje të diskutimeve të Dan Appleman mbi këtë temë (versioni i parë u shfaq në vitin 1993) me disa nga komentet tona shtesë.

1. Mbani mend për ByVal. Problemi më i zakonshëm që shfaqet kur një API dhe DLL zbatohet përpara funksioneve qëndron në fjalorin e pasaktë të fjalës kyçe ByVal: ata ose harrojnë ta vendosin atë, ose, në fund, e vendosin kur nuk ka nevojë për të.

Këta shembuj tregojnë hyrjen e operatorit ByVal për transferimin e parametrave

Lloji i parametrit Z ByVal Pa ByVal
Numër i plotë Stacki ka një kapacitet 16-bit Stack mund të akomodojë adresat 32-bit të një numri të plotë 16-bit
E gjatë Stacki ka një kapacitet 32-bit Stack mund të akomodojë adresat 32-bit të një numri të plotë 32-bit
Vargu Sekuenca konvertohet në formatin që përdoret në C (duke pasur parasysh bajtin null pasues). Adresat 32-bit të rreshtit të ri vendosen në rafte Stacki përmban përshkruesin VB të rreshtit. (Përshkrues të tillë nuk njihen kurrë nga vetë API i Windows dhe njihen vetëm në DLL të zbatuara posaçërisht për VB.)

Këtu vlen të përmendet se transferimi i parametrave në çdo sistem programimi, përfshirë VB, përcaktohet nga dy hapa kryesorë: dërgimi (ByRef) ose vlera (ByVal). Opsioni i parë merr adresën e shkëmbimit (ky opsion përdoret në VB për shkëmbim), tjetri merr vlerën e tij. Parimi i vlefshmërisë qëndron në faktin se pas një mesazhi shtesë, sigurohet që programi që thërret të kthehet në vlerën e ndryshuar të parametrit të kaluar.

Për të filluar, kryeni një eksperiment duke përdorur programet e mëposhtme:

Dim v Si numër i plotë v = 2 Thirr MyProc(v) MsgBox “v = “ & v Nën MyProc (v Si numër i plotë) v = v + 1 Fund Sub

Pas lëshimit të prapanicës së Viconnya, vikamima, vlerat e ZINSYAM ZMINENE, RIVNE 3. Në të djathtë, në vipadin danez, adresat e Zmіnino V, projeksionet fizikisht të cekëta, Viclikaє, transmetohen në danas. Tani ndryshoni përshkrimin e procedurës në

Nën MyProc (ByVal v Si numër i plotë)

Si rezultat, kur ekzekutoni testin, ju hiqni v = 2, që do të thotë se vlera e daljes së ndryshores kalon në procedurë - rezultati i operacioneve që ekzekutohen në të nuk kthehet në programin që thërret. Mënyra e transmetimit të vlerës gjithashtu mund të ndryshohet me ndihmën e operatorit të thirrjes si më poshtë:

Nën MyProc (v Si numër i plotë) ... Thirrni MyProc ((v)) '(v) - krahët tregojnë mënyrën e transmetimit _ prapa vlerave.

Sidoqoftë, kur zgjerohet në procedurat e brendshme VB, përdorimi i fjalës kyçe ByVal në deklaratën e thirrjes shtypet - në vend të kësaj, krahët e rrumbullakët bllokohen. Ja një shpjegim.

Në versionin klasik (C, Fortran, Pascal), rëndësia e mënyrave ByRef dhe ByVal varet nga ajo që vendoset në grumbullin e shkëmbimit të të dhënave - adresat ose vlerat e shkëmbimit. Në Basic, historikisht është përdorur versioni ByVal i emulimit të softuerit - pirgja përmban gjithmonë adresa, përveç kur kalon vlerat për të cilat krijohet një ndryshim në kohë. Për të dalluar dy opsione (klasike dhe bazë), ka mënyra të ndryshme për të përshkruar modalitetin ByVal. Është e domosdoshme, BYVAL në regjimin VB në vb, duke harruar tufën e shenjave të mësipërme: dërrmuese e formës së bishës, programit të licheusit, viklikës, kthehu (abo nuk kthehet) vilennia e Zmіninov. . Në versionin "klasik", një konfuzion i tillë mund të çojë në një vdekje fatale brenda orës së procedurës së finalizimit (për shembull, nëse në vend të adresës së kujtesës së vikoristit ka vlera të ndryshueshme, të barabarta, të themi, zero ).

Funksionet DLL zbatohen sipas parimeve "klasike" dhe kështu kërkojnë një përshkrim të qartë se si shkëmbehen të dhënat me secilin argument. Ky vetë mund të shërbejë si funksion deklarimi përmes përshkrimit Declare (më saktë, lista e argumenteve që kalohen). Më shpesh, kalimi i parametrave në një funksion API ose DLL të Windows specifikohet duke përdorur fjalën kyçe ByVal. Për më tepër, ai mund të specifikohet ose në operatorin Declare ose drejtpërdrejt kur thirret funksioni.

Trashëgimia e transferimit të gabuar të parametrave është e lehtë për t'u transferuar. Nëse zgjidhni një adresë dukshëm të pavlefshme, do të shihni një njoftim GPF (General Protection Fault). Meqenëse funksioni merr vlera që i shpëtojnë një adrese të vlefshme, funksioni API hyn në një zonë të huaj (për shembull, në kernelin e Windows) me të gjitha llojet e pasojave katastrofike që rezultojnë.

2. Ndryshoni llojin e parametrave që po transferohen. Po aq e rëndësishme është numri dhe lloji i saktë i parametrave që kalohen. Është e nevojshme që argumentet e deklaruara në Declare të korrespondojnë me parametrat e funksionit API. Problemi më i madh me kalimin e parametrave lidhet me ndryshimin midis NULL dhe një rreshti zero - gjurma e kujtesës, e cila është një dhe e njëjta.

3. Kontrolloni llojin e vlerës që rrotullohet.

VB është tolerante ndaj vendosjes së shumëllojshmërisë së llojeve të vlerave që rrotullohen nga funksioni, dhe disa vlera numerike rrotullohen përmes regjistrave, dhe jo përmes stivit. Rregullat e mëposhtme do t'ju ndihmojnë të përcaktoni vlerat e sakta që kthehen nga funksioni API:

  • Një funksion DLL që nuk rrotullon vlerat (analog me të pavlefshëm në 'C') mund të fshihet si VB Sub.
  • Një funksion API që rrotullon një vlerë (Numër i plotë ose i gjatë), mund të përcaktohet si një Nën ose një Funksion që rrotullon vlerat e një lloji specifik.
  • Ky funksion API nuk rrotullon numrat me pikë lundruese, por DLL-të mund të rrotullojnë këtë lloj të dhënash.

4. Me shumë kujdes, përdorni konstruksionin Si Çdo. Shumë funksione të Windows API kanë aftësinë të pranojnë parametra të llojeve të ndryshme dhe t'i përdorin ato bazuar në konstruktin As Çdo (interpretimi i llojit varet nga kuptimi i parametrave të tjerë që kalohen).

Zgjidhjet e mira mund të kenë disa funksione pseudonimesh (Alias), dhe dy ose më shumë prej tyre ndajnë të njëjtat funksione, dhe secili përshkrim ka një parametër dhe lloj këndimi.

5. Mos harroni të inicializoni rreshtat. Win API ka një funksion të thjeshtë që rrotullon informacionin duke mbledhur të dhëna nga buferët e rreshtave që kalohen si parametër. Në programin tuaj, ju mund të bëni gjithçka në mënyrë korrekte: mos harroni për ByVal, kaloni parametrat në funksion në mënyrë korrekte. Por Windows nuk mund të besojë se sa e madhe është madhësia e hapësirës së ruajtjes së parë. Madhësia e rreshtit duhet të jetë e mjaftueshme për të akomoduar të gjitha të dhënat që mund të vendosen në të. Përgjegjësia për rezervimin e një buferi të madhësisë së kërkuar i takon programuesit VB.

Ju lutemi vini re se në Windows 32-bit, me rreshta të ndryshëm, është e mundur të konvertohet nga Unicode (kodimi me dy byte) në ANSI (kodimi me një bajt) dhe mbrapa, në varësi të cilësimeve të sistemit kombëtar. Prandaj, për të rezervuar bufera, shpesh është më e sigurt të përdoren vargje bajt në vend të atyre të rregullt. (Një raport në lidhje me këtë do të diskutohet më poshtë.)

Shumica e funksioneve Win API ju lejojnë të vendosni vetë madhësinë maksimale të bllokut. Për shembull, duhet të telefononi një funksion tjetër API për të treguar madhësinë e bllokut. Për shembull, GetWindowTextLength ju lejon të përcaktoni madhësinë e rreshtit të kërkuar për të vendosur titullin e dritares që përmban funksioni GetWindowText. Për këtë arsye, Windows garanton që nuk do të shkoni përtej kufirit.

6. Vikorize Option Explicit në të dyja gjuhët.

7. Kontrolloni me kujdes vlerat e parametrave dhe vlerat që janë duke u rrotulluar. VB ka potencialin për të verifikuar llojet. Kjo do të thotë që nëse përpiqeni të kaloni një parametër të pasaktë në një funksion VB, më e keqja që mund të ndodhë është që të refuzoni mesazhin e gabimit nga VB. Fatkeqësisht, ky mekanizëm nuk funksionon kur përmirësohet në funksionin API të Windows.

Windows 9x ka një sistem të sofistikuar për kontrollimin e parametrave për shumicën e funksioneve API. Prandaj, prania e një faljeje në këto të dhëna nuk do të thotë një korrigjim fatal, por nuk është aq e thjeshtë të përcaktohet se çfarë e ka shkaktuar atë.

Këtu mund të gjeni një sërë mënyrash për të përmirësuar këtë lloj qumështi:

  • Kontrolloni modalitetin e rregullimit të lëkurës ose Debug.Print për të kontrolluar reagimin e lëkurës së funksionit API. Rishikoni rezultatet e këtyre klikimeve për t'u siguruar që gjithçka është brenda kufijve normalë dhe funksioni është kryer në mënyrë korrekte;
  • Vikorist një zhvillues i bazuar në Windows si CodeView dhe një version i personalizuar i Windows (nga Windows SDK). Këto funksione mund të zbulojnë modifikimin e parametrave dhe më e rëndësishmja të përcaktojnë se cili funksion API do të modifikohet;
  • Kontrolloni veçoritë shtesë të kompanive të palëve të treta për të verifikuar llojet e parametrave dhe pranueshmërinë e vlerave të tyre. Metoda të tilla jo vetëm që mund të gjejnë ndryshime të parametrave, por gjithashtu tregojnë kodin VB se ku është bërë ndryshimi.

Përveç kësaj, është e nevojshme të kontrolloni me kujdes rezultatin e funksionit API.

8. Mos harroni se numrat në VB dhe Windows nuk janë të njëjtë. Le të kujtojmë fillimisht se termi "Integer" në VB do të thotë një numër 16-bitësh, ndërsa në dokumentacionin Win 32 nënkupton një numër 32-bitësh. Në një mënyrë tjetër, numrat e plotë (Integer dhe Long) në VB nuk janë vlera pa shenjë (njëra shifër përdoret si shenjë, tjetra si mantissa e një numri), në Windows - përdoren edhe numra të panjohur. Kjo situatë duhet të merret parasysh nëse formoni një parametër duke përdorur operacione shtesë aritmetike (për shembull, llogaritja e një adrese duke përdorur zëvendësimin shtesë të një baze dhe kompensimi). Për të cilat funksionet standarde aritmetike VB nuk janë të përshtatshme. Pse keni frikë nga kjo situatë, le të flasim për të.

9. Kini kujdes me emrat e funksioneve. Në Win16, emrat e të gjitha funksioneve të Win32 API janë të ndjeshëm ndaj ndryshimit të saktë të shkronjave të vogla dhe të mëdha (Win16 nuk e kishte këtë). Nëse po vendosni një shkrimtar të vogël në vend të një shkrimtari të madh, atëherë funksioni i kërkuar nuk do të gjendet. Ndiqni gjithashtu prapashtesën e saktë A ose W në funksione për të vendosur parametrat e rreshtit. (Raportoni për këtë - div. më poshtë.)

10. Ruani sa më shpesh rezultatet e punës suaj. Dështimet që lidhen me skriptet e pasakta DLL dhe Win API mund të çojnë në prishjen e programit të mesëm VB, dhe ndoshta të gjithë sistemit operativ. Ju lutemi kushtojini vëmendje për t'u siguruar që kodi juaj të ruhet përpara ekzekutimit të testit. Gjëja më e thjeshtë është të vendosni modalitetin për shkrimin automatik të moduleve në projekt përpara se të filloni projektin në mjedisin VB.

Pasi të keni lexuar atë të mëparshmin, mund të mahniteni nga fakti që funksioni Win API është hequr nga e djathta. Nga rruga, kjo është e vërtetë, por vetëm në përputhje me programimin e sigurt që ofron vetë VB. Megjithatë, në rastin e stagnimit të lehtë dhe kurtheve të mundshme të njohura, ky rrezik është minimal. Për më tepër, shpesh është thjesht e pamundur të përballesh me ngecjen e Win API - do të jetë ende e nevojshme në rast të zhvillimit serioz.

Para kësaj, ne kemi menduar më parë për gurët "nënujor" për një klasë të gjerë DLL. Me Win API, gjithçka është shumë më e thjeshtë, pasi forma e zbatimit të këtyre funksioneve është qartësisht e unifikuar. Këtu janë pikat kryesore që duhen marrë parasysh respekti i nënës:

  1. Funksionet e API-së Win32 janë funksione, ose procedura të tipit Function (API-ja Win16 kishte shumë nën-programe). Të gjitha funksionet janë të tipit Long, kështu që përshkrimet e tyre shkruhen në këtë formë: Deklaroni emrin e funksionit ... Përderisa Long 'tipi i funksionit _ tregohet në formën eksplicite

    Deklaroni emrin e funksionit& 'lloji i funksionit _ tregohet me prapashtesë shtesë

    Konvertimi në funksionin API duket si ky:

Rezultati& = ApiEmri& ([ Lista e argumenteve]
  1. Funksioni më i rëndësishëm që rrotullohet është kodi i përfundimit të operacionit. Për më tepër, një vlerë jo zero do të thotë përfundim normal, ndërsa një vlerë zero do të thotë ekzekutim. Edhe një herë (ose jo më parë), mund të sqaroni natyrën e ndryshimit duke përdorur funksionin GetLastError. Përshkrimi i këtij funksioni duket si ky: Deklaroni Funksionin GetLastError& Lib “kernel32” ()

    UVAGA! Në Robotin në VB me fytyrë të mesme për ryannate të Kodeve të vlefshme të faljes, fuqia vicoristovati është e fuqishme Lastdlleror Op'kta Err, bb іnodi vene e funksionit GetlasterRor në industriale të MIZh në API vicuno viconun, vikunkat e vikunomave të gardheve.

    Ju mund të interpretoni kodin që gjeneron GelLastError duke përdorur konstante shtesë të shkruara në skedarin API32.TXT, me emra që fillojnë me prapashtesën ERROR_.

    Llojet më të zakonshme të sulmeve janë kodet e mëposhtme:

    • ERROR_INVALID_HANDLE = 6& - dorezë e pasaktë
    • ERROR_CALL_NOT_IMPLEMENTED = 120& - thirrje për funksionet e Windows 9x të disponueshme vetëm për Windows NT
    • ERROR_INVALID_PARAMETER = 87& - vlera e gabuar e parametrit

    Sidoqoftë, ka shumë funksione për të rrotulluar vlerat e një parametri të caktuar (për shembull, OpenFile rrotullon vlerat e një përshkrimi skedari). Në këtë rast, vlera u caktohet disa vlerave të tjera të veçanta Kthimi&, më së shpeshti 0 -1.

  2. API Win32 ka metoda strikte fikse për transferimin e llojeve më të thjeshta të të dhënave. a) ByVal...Për sa kohë

    Të paktën 80% e kalimit të argumentit bëhet me tipin Long. Rishikoni argumentin para së gjithash shoqërohet me fjalën kyçe ByVal, dhe kjo, ndër të tjera, do të thotë se transferimi i të dhënave në një drejtim është i lidhur - nga programet VB në një funksion API.

    B) ByVal...As String

    Ky lloj transmetimi gjithashtu tenton të ndodhë shpesh, dhe me të njëjtin argument para së gjithash ByVal ngec. Kur thirret një funksion API, adresat e rreshtave shkruhen në pirg, duke lejuar shkëmbimin e të dhënave në dy drejtime. Kur punoni në rreshta, është e nevojshme të kujdeseni për disa probleme.

    Së pari, rezervimi i memories për rreshtat kryhet nga programi që thërret, kështu që nëse funksioni API do të ruajë rreshtat, atëherë është e nevojshme të krijoni një rresht me madhësinë e kërkuar përpara se ta thërrisni. Për shembull, funksioni GetWindowsDirectory rrotullon shtegun për në direktorinë e Windows, i cili nuk kërkohet të marrë më shumë se 144 karaktere. Me sa duket, zbatimi i këtij funksioni mund të duket diçka si kjo:

    WinPath$ = Hapësirë$(144) ' rreshti rezervë në _ 144 karaktere Rezultati& = GetWindowsDirectory& (WinTath$, 144) _ 'mbushja e buferit' Rezultati& - numri aktual i karaktereve në emër _ direktoria WinPath$ = Left$(WinPath, Result&)

    Një problem tjetër qëndron në faktin se kur një funksion API konvertohet në një funksion API, rreshti i daljes rikrijohet në ekranin e tij të brendshëm dhe kur del nga funksioni, ndodh në të njëjtën mënyrë. Ashtu si në ditët e para të Win16, ky operacion mori më pak se shtimi i një bajt zero, për shembull, një rresht, pastaj me ardhjen e Win32, transformimi i kodimit të Unicode me dy bajt në ANSI dhe për të njëjtën kohë ishte arritur. (Kjo u raportua në artikullin "Veçoritë e robotëve me ndryshime rreshtash në VB", Computer Press 10'99 dhe 01'2000). Është e rëndësishme vetëm që me ndihmën e ByVal... Si konstruksion String është i mundur shkëmbimi i rreshtave të të dhënave simbolike.

    B) ... Si Çdo

    Kjo do të thotë që vlera e adresës së tamponit të memories do të vendoset në pirg, interpretimi në vend të asaj që funksioni API do të trajtojë, për shembull, është i pavarur nga kuptimi i argumenteve të tjera. Megjithatë, As Any mund të përdoret vetëm në operatorin Declare - kur aplikohet një funksion specifik, argumentit mund t'i caktohet një vlerë specifike.

    D) ... Si UserDefinedType

    Një strukturë e tillë gjithashtu shpesh ngec kur është e nevojshme të shkëmbehen të dhëna (premtimi i palës ofenduese) për hir të ndonjë strukture tjetër. Në fakt, ky dizajn është një lloj i thjeshtë zbatimi specifik i formës së transmetimit As Çdo, thjesht se çdo funksion ka një strukturë fikse.

    Forma e strukturës së të dhënave përcaktohet nga një funksion specifik API dhe është përgjegjësi e programit që t'i përshkruajë dhe rezervojë saktë ato me të njëjtin program. Ky është dizajni para së gjithash vikorist pa fjalët ByVal, pastaj transferimi pas dërgimit shtohet në këtë kuti - adresa e shkëmbimit shkruhet në pirg.

Përfundoni deri në funksionin API

Kjo ilustrohet duke përdorur shembullin e dy funksioneve themelore të punës me skedarë - lopen dhe lread, të cilat përshkruhen si më poshtë:

Deklaroni funksionin lopen Lib "kernel32" _ Pseudonimi "_lopen" (_ ByVal lpFileName As String, _ ByVal wReadWrite Sa Long) Për aq kohë Deklaroni Funksionin lread Lib "kernel32" _ Pseudonimi "_lread" (_ ByVal Long, h File lpBuff _ ByVal wBytes për aq kohë sa) Për sa kohë

Në VB, analogët e tyre - ndonjëherë më të saktë - janë operatorët Open dhe Get (për modalitetin Binary). Ne jemi shumë të impresionuar nga përdorimi i fjalës kyçe Alias ​​në funksionin bosh - ky është i njëjti problem, nëse nuk mund të bëni pa të. Këta emra funksionesh në bibliotekë fillojnë me një simbol nën karrige (stili tipik për filmin C), i cili nuk lejohet nga VB.

Operacioni i hapjes së një skedari mund të duket si ky:

Const INVALID_HANDLE_VALUE = -1 ' e pavlefshme _ përshkrim i vlerës lpFileName$ = “D:\calc.bas” ' emri i skedarit wReadWrite& = 2 ' modaliteti lexim-shkrim hFile& = lopen(lpFileName$, wReadWrite&) _ 'vlerësuar =HAND_INV rregulloni skedarin ' specifikoni kodin e rregullimit CodeError& = Err.LastDllError 'CodeError& = GetLastError _ ' ky konstruksion nuk funksionon Fund Nëse

Këtu duhet të theksojmë dy pika:

  • Si vlerë e funksionit ne përcaktojmë vlerën e përshkrimit të skedarit. Vlera konfirmon vlerën -1;
  • Në këtë rast, nuk është e nevojshme të shkoni te funksioni GetLastError - për të rimarrë vlerën e specifikuar të gabimit, shkuam te objekti Err (kemi folur më shumë për mundësinë e një situate të tillë).

Pastaj mund të lexoni në vend të skedarit, por gjithashtu tregon se programi është përgjegjës për njohjen e strukturës së tij (siç është rasti kur punoni me shumë skedarë të dyfishtë). Në këtë rast, konfigurimi për funksionin lread mund të duket si ky:

Dim MyVar As Single wBytes = lread (hFile&, MyVar, Len(MyVar) ' leximi i numrit të të folurit, 4 bajt ' wBytes - numri i të dhënave të lexuara në të vërtetë, '-1 - barazi... Shkruani MyStruct x Si Single i Si numër i plotë Lloji i fundit Dim MyVar As MyStruct wBytes = lread (hFile&, MyVar, Len(MyVar)) ' lexo strukturën e të dhënave, 6 byte

Tregoni respekt edhe një herë: argumenti tjetër i funksionit u kalon dërguesve dhe kthimit te vlerat.

Dim MyVar si varg MyVar = Space$(10) ' rezervo hapësirë ​​për 10 karaktere wBytes = lread (hFile&, ByVal MyVar, Len(MyVar)) ' varg karakteresh leximi, 10 karaktere

Këtu mund të shihni rëndësinë e prapanicës së prezantuar më parë - ndryshimi i rreshtit shoqërohet domosdoshmërisht me fjalën kyçe ByVal.

Leximi në vend të një skedari në një grup (për thjeshtësi, ne do të përdorim një grup të vetëm bajt) përpilohet si kjo:

Dim MyArray(1 deri në 10) Si byte wBytes = lread (hFile&, MyArray(1), _ Len(MyArray(1))* 10) ‘ lexoni 10 elemente nga grupi

Duke specifikuar elementin e parë të grupit si argument, kalojmë adresën e kokës së zonës së kujtesës të rezervuar për grupin. Natyrisht, ju mund të ruani çdo fragment të një grupi duke përdorur këtë metodë:

WBytes = lread (hFile&, MyArray(4), _ Len(MyArray(1))* 5) leximi i elementeve të grupit nga 4 në 8

Porada 5. Vickory Alias ​​për transferim Cilësimet si çdo

Këtu, bazuar në prapanicën e përparme, ne zbulojmë thelbin e të katërtit për hir të Dan Appleman.

Kur punoni me funksionin lread, është e rëndësishme të mbani mend se kur ekzekutoni një variabël të zakonshëm përpara tij, është e nevojshme të përdorni fjalën kyçe ByVal (përndryshe informacioni rreth operacionit të paligjshëm nuk do të humbasë). Për të qenë në anën e sigurt, mund të krijoni një përshkrim të veçantë shtesë të këtij funksioni për të punuar vetëm me ndryshime të zakonshme:

Deklaroni funksionin lreadString Lib "kernel32" _ Pseudonim​​"_lread" (_ ByVal hFile për aq kohë sa, ByVal lpBuffer si varg, _ ByVal wBytes për aq kohë sa)

Kur punoni me këtë përshkrim, nuk është më e nevojshme të tregoni ByVal kur printoni:

WBytes = lreadString(hFile&, MyVarString, _ Len(MyVarString)) '

Duket se sintaksa e operatorit Declare ju lejon të krijoni një përshkrim kaq të veçantë për një grup:

Deklaroni funksionin lreadString Lib "kernel32" Pseudonimi "_lread" (_ ByVal hFile për aq kohë sa, lpBuffer() si byte, _ ByVal wBytes për aq kohë sa)

Mbroni kafshën

WBytes = lreadArray(hFile&, MyArray(), 10)

çojnë në mënyrë të pashmangshme në një ekzekutim fatal nga programi.

Ky është një vazhdim i diskutimit rreth veçorive të përpunimit të ndryshimeve të rreshtave Visual Basic: VB përdor kodimin e Unicode me dy bajt, Win API - ANSI me një bajt (dhe me një format të pranuar në C - me një bajt zero në fund). Është e qartë se kur ndryshoni ndryshimet e rreshtit si argument, konvertimi nga Unicode në ANSI kryhet gjithmonë automatikisht kur telefononi një funksion API (më saktë, një funksion DLL) dhe konvertimi kthehet mbrapsht kur rrotullohet.

Përfundimi këtu është i thjeshtë: ju mund të shkëmbeni të dhëna simbolike me ndihmën e variablave Strings, por ato nuk mund të përdoren për të shkëmbyer mjaftueshëm informacion të dyfishtë (siç ishte rasti kur punoni me versionet 16-bit të VB). Është më mirë të përdoret një grup bajtësh njëdimensional.

Me sa duket, lloji String mund të përdoret për të përshkruar strukturën e strukturës. Lidhja me këtë memorie është si më poshtë:

  • Nuk është kategorikisht e mundur të përdoret ndërtimi i mëposhtëm për zhvillimin e API-së Win: Shkruani MyStruct x As Single s As String

    Në rendin e ndryshimit, përshkruesi i rreshtit kalon së bashku me të gjitha trashëgimitë në pamjen e programit.

  • Është e mundur si një element strukturor i një rreshti dyfishimi fiks: Lloji MyStruct x Si Single s As String*8 ' rreshti i dyfishimit fiks Lloji i fundit

Në këtë rast, sigurohuni që të rikrijoni kodin.

Dhe respekti mbetet: nuk është e mundur të konsolidohet grupi i ndryshimeve të rreshtave (të fiksuara dhe të ndryshueshme) kur përmirësohet në funksionin API në të njëjtën kohë. Përndryshe, shfaqja e një "operacioni të paligjshëm" do të garantohet.

Është mjaft e qartë se jeni në një situatë të keqe nëse duhet të shkruani një funksion DLL në bibliotekën tuaj. Nevoja do të shfaqet në mënyrë të pashmangshme nëse përdorni teknologjinë e programimit të përzier - një kombinim i dy ose më shumë programeve për të zbatuar një program.

Është domethënëse në lidhje me faktin se programimi i përzier është qëllimi kryesor i zbatimit për të arritur një raport gjithëpërfshirës. Në të vërtetë, gjuha e gjuhës (më saktë, sistemi i programimit i bazuar në gjuhë) ka pikat e forta dhe të dobëta, kështu që është plotësisht logjike të përdoren avantazhet e mjeteve të ndryshme për të arritur detyra të ndryshme. Për shembull, VB - për krijimin e një ndërfaqe kompjuteri, C - për qasje efektive në burimet e sistemit, Fortran - për zbatimin e algoritmeve numerike.

Ideja e autorit është kjo: përfshirja serioze në programim theksohet nga zhvilluesi duke përdorur dy mjete. Natyrisht, në mendjet moderne, është shumë e vështirë të jesh një ekspert i pavarur në dy sisteme, gjë që e bën skemën e "gjuhës kryesore dhe shtesë" më logjike. Ideja këtu është se sjellja e njohurive të gjuhës "shtesë" (të shkruara në një numër procedurash të thjeshta) mund të avancojë ndjeshëm efektivitetin e gjuhës "kryesore". Është e rëndësishme që njohja e VB-së, si një përfitim shtesë, është tashmë një kërkesë praktike për një programues profesionist. Para se të flasim, në vetëm disa orë DOS, për çdo programues, le të shohim Basic, do të ishte jashtëzakonisht e rëndësishme të njihni bazat e Assembler.

Pra, është ndryshe, por në mendjet e robotëve në grup, kur programuesi i lëkurës është i angazhuar në punën e tij specifike, deklaratat për veçoritë e ndërfaqes procedurale në gjuhë të ndryshme janë faji i të gjithë pjesëmarrësve në projekt. Unë e di që ka shumë sisteme programimi (përfshirë VB), përveç ndërfaqes që duhet shpjeguar, është e mundur të krijohen metoda të tjera, duke zgjeruar metodat e përpunimit në procedura që ju lejojnë të përshtatni ndërfaqen në gjuhë të tjera .

Kur përdorni ndërfaqen ndërprocedurale, kini parasysh kurthet e mëposhtme të mundshme:

  • Gjuhë të ndryshme mund të jenë me interes për ju në lidhje me rregullat për shkrimin e identifikuesve. Për shembull, shenja e pseudonimit të emrit të procedurës, e cila është e fshehur në VB, përdoret shpesh. Ky problem mund të shpjegohet lehtësisht me përdorimin e fjalës kyçe Alias ​​në operatorin Declare (shembull i shkëlqyer për 2.3).
  • Ju mund të përcaktoni sekuencën e shkrimit të argumenteve që kalohen në pirg. Për shembull, në orët DOS (të jem i sinqertë, nuk e di se si duket në mes të Windows), duke shkruar argumente nga fundi i listës, gjuhë të tjera (Fortran, Pascal, Basic) - nga fillim.
  • Shpjegohen parime të ndryshme të transferimit të parametrave - për udhëzime ose kuptime.
  • Parime rigoroze të ruajtjes së rangut dhe dosjes. Për shembull, në C (njëlloj si në Fortran dhe Pascal), fundi i një rreshti tregohet me një bajt zero në fund të tij, dhe në Basic fundi shkruhet në mënyrë eksplicite në përshkruesin e rreshtit. Natyrisht, është e nevojshme të mbani mend aftësinë për të ndryshuar kode të ndryshme të simboleve.
  • Kur transferoni vargje të botës së pasur, mbani mend se ekzistojnë opsione të ndryshme për transformimin e strukturave të botës së pasur në një botë (duke filluar nga indeksi i parë ose nga pjesa tjetër, njëqind vargje dydimensionale - "në rreshta" ose "në rreshta" tek bletët").

Bazuar në këtë, mund të formulohen rekomandimet e mëposhtme:

  • Shikoni gjërat më të thjeshta duke rishikuar mënyrën e kalimit të argumenteve në një funksion DLL. Standardet e miratuara për Win API janë plotësisht të qëndrueshme.
  • Çdo herë, mos transferoni masa të ushtarëve të zakonshëm.
  • Me respekt vikorist transferimin e vargjeve të thjeshta të zakonshme dhe të pasura.
  • Sigurohuni që të kontrolloni me kujdes funksionalitetin e mekanizmit për kalimin e argumenteve në procedurën që thirret dhe kthehet. Shkruani një test të veçantë për të verifikuar të dhënat. Kontrolloni me kujdes korrektësinë e transferimit të argumentit të lëkurës. Për shembull, nëse keni një procedurë me shumë argumente, së pari kontrolloni korrektësinë e kalimit të parametrit të lëkurës për opsionin me një argument, dhe më pas për të gjithë listën.

Çfarë bën nëse funksioni DLL është shkruar tashmë, për shembull, në Fortran, por ndërfaqja hyrëse nuk përshtatet mirë me standardin e ri VB? Këtu mund të jepni dy data. Së pari: shkruani një funksion testimi DLL dhe me ndihmën e tij, provoni të përdorni metodën e provës dhe gabimit për të zgjedhur funksionalitetin e kërkuar për programet VB. Një tjetër: shkruani një procedurë përshtatës në Fortran që do të siguronte një ndërfaqe të thjeshtë midis VB dhe një funksioni DLL me transformimin e strukturave të thjeshta të të dhënave në një magazinë (për shembull, transformimi i një grupi të madh bytesh nga një grup rreshtash).

Otzhe: vykorist funksionet DLL. Gjithashtu, kurseni ëmbëlsinë.

ComputerPress 9"2000

Duke punuar me API, ju mund të ndjeni gëzim dhe zhgënjim në të njëjtën kohë. Nga njëra anë, duke ndërvepruar me programe të tjera, ju mund të rrisni shumë mbajtjen e audiencës dhe "efektin wow" të programit tuaj. Për më tepër, kjo përfshin leximin e shumë dokumentacionit, mësimin e strategjive të vërtetimit dhe analizimin e njoftimeve joinformative (ose, mirë, të rastësishme) në lidhje me amortizimet.

Para së gjithash, nëse ende nuk e kuptoni plotësisht se çfarë është një API (Application Programming Interface), lexoni shpjegimin në Skillcrush dhe më pas pjesën e parë të këtij artikulli në mënyrë që të përdoret.

"API" është një koncept tepër i shkëlqyeshëm - veçanërisht nëse shtesa juaj është e bashkuar me një shtesë tjetër, ajo nuk aksesohet përmes asaj API. Komponentët në mes të programit tuaj, me fjalë të tjera, pjesë të ndryshme të Rails, janë gjithashtu të lidhura së bashku përmes API-së. Ata janë gjithashtu vartës më të vegjël të pavarur që transmetojnë të dhëna të nevojshme për lëkurën për të kryer detyra specifike të energjisë. Në botën e shtesave, gjithçka është një API!

Nëse krijoni programe me funksionalitet më dinamik të frontendit (si shtesa Javascript të njëanshme ashtu edhe programe të thjeshta me thirrje AJAX krah për krah), ato do të lidhen me prapavijën e Rails përmes API-së tuaj të fuqishme, e cila është vërtet e lehtë në gjuhën daneze. tre rreshta kodesh, Çfarë duhet t'u thoni kontrollorëve tuaj që të përdorin JSON ose XML në vend të HTML?

Në këtë mësim do të mësoni se si të krijoni API-në tuaj të fuqishme. Në mësimet e ardhshme do të theksojmë se si të ndërveprojmë me API-në e programeve të tjera. Mësimet mund të jenë një trampolinë e mirë për të mësuar vlerën e tyre, por ata nuk kanë gjasa të jenë në gjendje të mbulojnë plotësisht të gjitha pasojat. Pjesa më e madhe e punës me API do të thotë të lexosh dokumentacionin e tij dhe të kuptosh se çfarë duan.

Pika për reflektim

Shikoni udhëzimet dhe shikoni nëse i dini përgjigjet në to. Kthehuni përsëri pas Fitores.

  • Siç e kupton Rails, çfarë lloj skedari do të shihni kur detyroni një kërkesë HTTP.
  • Pse është metoda #përgjigju_to meta?
  • Si mund ta rrotulloj objektin e përdoruesit (Përdoruesi) ndërsa specifikoj atributet që nuk dua t'i përfshij në atë objekt (kështu që nuk mund të rrotullosh vetëm User.first)?
  • Emërtoni 2 shkurtore që do t'i shtohen metodës #to_json.
  • Si mund t'i them kontrolluesit se është e nevojshme të bëhet njoftimi për ndryshimin?
  • Si mund t'i njoftoj autoritetet për ndryshimet?
  • Pse nuk mund të përdorni metoda të vërtetimit të kontrolluesit të bazuara në sesion nëse doni të lejoni lidhje programatike me API-në tuaj?
  • Çfarë është “arkitektura e orientuar nga shërbimi”?

Bazat e API

Shtesa juaj Rails është në fakt një API, megjithëse mund të mos e mendoni si një API. Shfletuesi i internetit që drejton klienti juaj është gjithashtu një program, kështu që në fakt dërgon një kërkesë API në shtesën tuaj Rails kur klienti hap një faqe të re. Ne menduam kështu sepse interpretimi i shablloneve të desktopit HTML është më i gjerë, kështu që ne thjesht e vendosim këtë funksionalitet në programet tona të serverit si një lloj standard lidhjeje, dhe gjithçka tjetër është e rëndësishme.

Megjithatë, shpesh ju dëshironi të fitoni para pa pasur nevojë të përballeni me dhimbjen e kokës së përdorimit të një shfletuesi. Ju mund të mos jeni të interesuar për strukturën e faqes (HTML), por thjesht dëshironi të nxjerrni të dhëna të pastra. Le të themi se dëshironi të hiqni listën e të gjithë klientëve të suksesshëm. Mund të vizitoni http://yourapplication.com/users dhe të ekzekutoni veprimin #index dhe të jepni një listë të të gjitha aplikacioneve tuaja.

Pse të shqetësoheni me gjithë këtë informacion sepse gjithçka që dëshironi është të anuloni listën e klientëve? Opsioni më i thjeshtë do të ishte dërgimi i kërkesës në të njëjtën URL, duke treguar llojin e përmbajtjes JSON ose XML. Pasi të konfiguroni saktë kontrolluesin tuaj Rails, përfundoni me një objekt të thjeshtë të grupit JSON për të akomoduar të gjithë përdoruesit tuaj. E mrekullueshme!

I njëjti parim do të ngecë nëse përdorni një API të jashtëm. Le të themi se dëshironi të zhbëni "tweet-et" e fundit të një koristuvach në Twitter. Ju vetëm duhet t'i tregoni shtojcës suaj Rails se si të ndërveprojë me API-në e Twitter (për të vërtetuar veten), të paraqisni një pyetje dhe të përpunoni llojin e "përgjigjeve" që do të kthehen.

API-ja e krijimit

Ju mund të dëshironi të ndërtoni programin tuaj të Rails duke pastruar API-në e pasme për historitë e faqes në internet, ose thjesht mund të dëshironi të mësoni se si të shkruani JSON nëse pjesa e përparme po e kërkon atë. Ky seksion nuk është i dukshëm ndërsa krijoni një API të plotë RESTful me funksione vërtetimi. Kjo është prezantuar pa probleme në lidhje me shtesën tuaj si një API.

Bazat

Nëse dëshironi që shtojca juaj Rails të konvertojë JSON në vend të HTML, do t'ju duhet t'i tregoni kontrolluesit që ta bëjë këtë. Gjëja më e mrekullueshme është se i njëjti kontrollues mund të rrotullojë lloje të ndryshme në sekuencë duke ekzekutuar kompjuterin tuaj nga shfletuesi ose duke hyrë në API përmes linjës së komandës. Kjo do të thotë se çfarë lloj kërkese është bërë, bazuar në shtrirjen e skedarit të kërkuar, për shembull shembull.xml ose example.json.

Ju mund të kontrolloni se çfarë "mendon" Rails për llojin e skedarit duke kontrolluar regjistrin e serverit:

Filloi GET "/posts/new" për 127.0.0.1 në 2013-12-02 15:21:08 -0800 Përpunimi nga PostsController#new si HTML

Rreshti i parë ju tregon se cila është URL-ja e kërkesës, dhe rreshti i dytë ju tregon se ku janë kërkesat dhe si i përpunon Rails ato. Yakbi vikoristovali zgjeruar.json, do të dukej kështu:

Filloi GET "/posts.json" për 127.0.0.1 në 2013-12-04 12:02:01 -0800 PostsController#index si JSON

Nëse po ekzekutoni një program testimi, provoni të kërkoni URL të ndryshme. Nëse kontrolluesi juaj nuk mund t'i përpunojë ato, mund ta çaktivizoni faljen, por gjithsesi duhet të kuptoni se çfarë kupton Rails për kërkesat tuaja.

Rendering JSON ose XML

Nëse vendosni që dëshironi të jepni JSON ose XML në vend të HTML, do t'ju duhet të informoni kontrolluesin tuaj se duhet të jepni JSON ose XML në vend të HTML. Një mënyrë për ta fituar këtë është të përdorni metodën #reagoj_to:

Kontrolluesi i Përdoruesve të klasës< ApplicationController def index @users = User.all respond_to do |format| format.html # index.html.erb format.xml { render xml: @users } format.json { render json: @users } end end end

Në këtë rast, #respond_to transferon formatin e objektit në bllok, derisa të mund të shtoni një përgjigje konfirmimi në paraqitje. Nuk do të fitoni asgjë nëse jepni HTML duke përdorur një shabllon standard të Rails (në këtë aplikacion/views/index.html.erb).

Funksioni #render është i dobishëm për të kuptuar se si të jepni një gamë të gjerë formatesh. Nëse kaloni çelësin: json, do të shihni #to_json në vlerë, në këtë aplikacion @users. Kjo i konverton objektet tuaja Ruby në rreshta JSON që do të kalojnë në shtojcën që e kërkon.

Në këtë mënyrë, ju do të hiqni API-në tuaj. Sigurisht, krijimi i API mund të jetë më kompleks nëse doni të punoni në një fjalim jo rutinë, por mbani gjithçka në bazat.

Tregimi i atributeve që rrotullohen

Është e mundur që ju të dëshironi të rilidheni pa kthyer adresën e emailit të kontabilistit së bashku me objektin e kontabilistit (Përdoruesin). Në këtë rast do të dëshironi të ndryshoni atributet që do të rrotullohen, duke modifikuar ato që ekzekutojnë metodën #to_json.

Më parë, thjesht do ta riemërtonit metodën #to_json me versionin tuaj, por tani nuk keni nevojë - në fakt, në vend të kësaj do ta riemërtoni metodën #as_json. Metoda #as_json zëvendësohet me metodën #to_json, kështu që modifikimi i saj ndryshon në mënyrë implicite rezultatin e #to_json, por e bën këtë në një mënyrë specifike.

#to_json funksionon në dy mënyra: ekzekuton #as_json dhe merr hash-in e atributeve që do të jepen në JSON. Më pas mund të jepni duke përdorur JSON duke përdorur ActiveSupport::json.encode. Më pas, kur modifikoni #as_json, po tregoni më konkretisht pjesën e metodës #to_json që vërtet dëshironi të ndryshoni.

Në versionin tonë, ne duhet të modifikojmë #as_json në modelin tonë në atë mënyrë që të rrotullojmë atributet që nuk na duhen:

# app/models/user.rb class Përdorues< ActiveRecord::Base # Вариант 1: Полное переопределение метода #as_json def as_json(options={}) { :name =>self.name ) # Fusha e emailit NUK përfshihet fundi # Opsioni 2: Metoda standarde e Vikorist #as_json def as_json(options=()) super(vetëm: [:name]) fundi fundi

Pastaj, kontrolluesi ynë nuk do të ketë më nevojë të japë JSON si më parë (në aplikacionin më poshtë, JSON do të jepet gjithmonë, pavarësisht nëse pyetja HTML është dërguar apo jo):

# app/controllers/users_controller.rb class UsersController< ApplicationController def index render json: User.all end end

Ju lutemi vini re se nuk keni nevojë të klikoni vetë #to_json nëse jeni duke përdorur #render - ne mund ta bëjmë këtë për ju.

Inodes Heroku mund të nxjerrin shkurtore shtesë për shfaqjen e saktë të faqeve me korrigjime. Marvel. Mund t'ju duhet fillimisht të hiqni faqet statike nga aplikacioni/drejtoria publike.

Thirrjet e sigurisë

Ndoshta ju dëshironi të jeni në gjendje të hyni në API vetëm për qëllime të hyrjes. Vërtetimi yt në kontrollues mund të funksionojë tashmë për këtë robot - thjesht kontrollo që të kesh cilësimet e sakta #before_action (për shembull, before_action:require_login). Ju mund të keni nevojë për funksionalitet nëse mund të shikoni anën e hyrjes, ose mund të jeni fajtor për të dhëna të ndryshme. Ju nuk dëshironi që klientët e paloguar të mos kenë mundësi të hyjnë në API për të marrë të dhëna të rëndësishme. Gjithashtu, nuk duhet të lejoni përdoruesit e paautorizuar të shfaqin këngë në faqen tuaj HTML.

Nëse dëshironi të përpunoni kërkesa nga programe të ndryshme nga shfletuesi (për shembull, nga linja e komandës), nuk mund të mbështeteni te skedarët e skedarëve të shfletuesit për vërtetim. Në fakt, shumica e API-ve ofrojnë shenja fuqie si pjesë e procesit të vërtetimit. Ne do të flasim pak më shumë për argumentet në mësimin e ardhshëm.

Ditët e ardhshme

Tani ju keni aftësitë për të përdorur programin tuaj Rails për të nxjerrë jo vetëm HTML, por edhe ndonjë format tjetër. Nëse dëshironi të ecni përpara dhe të lejoni shitësit e tjerë të përdorin burimet e platformës tuaj (për shembull, në mënyrë që ata të mund të përdorin softuer në vend të vërtetimit si klient), do t'ju duhet të ndërtoni sistemin tuaj API më të besueshëm. Ne nuk do të theksojmë gjithçka këtu, por më tepër do të mrekullohemi me materialet e mëposhtme:

  • Artikulli Building Awesome Rails API përmban një përshkrim të qasjeve më të mira për zhvillimin e aplikacioneve të lojërave dhe standardeve të industrisë API.

Arkitektura e orientuar nga shërbimi

Ka ardhur koha për të paraqitur një qasje arkitekturore nën emrin "Arkitektura e Orientuar në Shërbimin" (SOA). Ideja kryesore është që të ardhurat tuaja të grumbullohen nga shërbimet anonime, platforma e sistemit të pagesave, regjistrimi i klientëve, moduli i rekomandimeve, etj. Në vend që të bëni gjithçka në një program kryesor, ju i ndani nënsistemet në njësi të pavarura që ndërveprojnë njëra me tjetrën, në mënyrë zëvendësuese përmes API-ve të brendshme.

Kjo është e mirë për shumë arsye. Megjithatë, meqenëse programi juaj nuk e di se si funksionojnë pjesët e tjera dhe di vetëm se si të kërkojë të dhëna përmes API-së së tyre, mund të bëni ndryshime në kodin e shërbimit dhe të vendosni se si të përdorni Vati, si më parë. Ju mund të zëvendësoni plotësisht një shërbim me një tjetër dhe për sa kohë që komunikoni duke përdorur të njëjtat metoda API, gjithçka do të shkojë edhe më mirë. Ju mund të përdorni API-të e jashtme si pjesë e programeve tuaja (për shembull, sistemet e pagesave) në vend që ta shkruani siç duhet. Mund të krijoni një shtesë PHP që ndërvepron me një shtesë Python, që ndërvepron me një shtesë Rails dhe të gjitha funksionojnë së bashku, edhe nëse lidhen me njëra-tjetrën duke përdorur një API shtesë.

Si rregull, përpjekja për të mbajtur lëkurën tuaj sa më të lirë me programin tuaj është një ide e mirë. Koncepti i SOA ju inkurajon të mendoni në lidhje me metodat që dëshironi t'u jepni pjesëve të tjera të programit tuaj dhe në të njëjtën kohë ta bëni kodin tuaj më të pastër. Për më tepër, duke supozuar se çdo komponent kryesor i programit tuaj është i pavarur, ju gjithashtu do të jeni në gjendje t'i kapërceni problemet shumë më lehtë dhe të merrni vendime më domethënëse.

Zhvillimi i një arkitekture të orientuar nga shërbimi për një program të tërë ka të bëjë me zhvillimin e një skripti gjigant të palosshëm Ruby në një klasë dhe metodë të sofistikuar, ose në një shkallë më të madhe.

Një nga shembujt më të njohur të kalimit në arkitekturën e orientuar drejt shërbimit është Amazon.com. Me sa duket në vitin 2002, Jeff Bezos deklaroi drejtpërdrejt se të gjitha grupet e punës duhet të kalojnë në SOA, përndryshe ata do të pushohen nga puna. Sumno Vidomy postim në blog Shfletuesi i Google, për qëllime të brendshme të korporatës, dhe papritmas u bë i hapur për publikun duke zbuluar presionin e Amazon mbi SOA. Ky është një lexim i mrekullueshëm, kështu që është e lehtë ta vlerësosh atë, dhe pikat kryesore të fletës së Bezos përfshihen në citimin tjetër nga postimi:

1) Të gjitha komandat tani ofrojnë të dhënat dhe funksionalitetin e tyre përmes ndërfaqeve të shërbimit.

2) Kërkohen komanda për të bashkëvepruar një me një përmes ndërfaqeve të tjera.

3) Forma të tjera të komunikimit ndër-procesor: të njëjtat mesazhe direkte, i njëjti lexim i drejtpërdrejtë i të dhënave nga një komandë tjetër, të njëjtat modele memorie, të njëjtat “backdoors” etj. Një metodë e vetme e lejueshme e ndërveprimit është qasja në ndërfaqen e shërbimeve përmes një kufiri.

4) Nëse erë e keqe e teknologjisë. HTTP, Corba, Pubsub, protokollet e energjisë - nuk ka rëndësi. Nuk e fajësoj aspak Bezosin.

5) Të gjitha ndërfaqet e shërbimit, pa faj, janë krijuar me aftësinë për të kontrolluar thirrjet. Ekipi duhet të planifikojë dhe projektojë në mënyrë të tillë që të jetë në gjendje të sigurojë një ndërfaqe për zhvilluesit e kompanisë. Faji i mirë.

6) Kushdo që i ka injoruar këto përfitime do të lehtësohet.

SOA nuk është serioze në anën e djathtë. Natyrisht, ka shumë probleme që vijnë me këtë wiki - mrekullohuni me këtë postim rreth "marrjes së mësimeve" nga Amazon - por ai gjithashtu ka shumë përparësi.

Ju, sigurisht, mos u shqetësoni për SOA ndërsa krijoni shtesa "loje" për veten tuaj, por ky ushqim patjetër do të qëndrojë para jush nëse filloni të punoni për një kompani IT, kështu që njohja me të është një gjë e mirë. praktikë.

Meta juaj

  1. Lexoni seksionin 7 të Kornizës së Kontrolluesit Rails për të mësuar rreth paraqitjes JSON dhe XML.
  2. Erërat nuk janë të vështira për t'u parë (pasi janë pak larg, përgatiten menjëherë), por nëse dëshironi, hidhini një sy Railscasts në seksionin Burime Shtesë në fund të mësimit për të mësuar më shumë rreth Përparësitë e API.

Visnovok

Ne do të bëjmë më shumë me shtesën tuaj si API gjatë kursit Javascript. Në këtë kurs, ju do të krijoni një numër të shtesave me stek të plotë që do të përdorin prapavijën AJAX për një ndërfaqe më të shkurtër prapavijë, e cila në fakt përfshin paraqitjen e të dhënave XML ose JSON në vend të një faqeje të plotë HTML. Më pas do të krijoni një sërë shtesash Javascript të njëanshme që mbështeten në API-në e ofruar nga shtesa juaj Rails për të nxjerrë të gjitha të dhënat e nevojshme nga baza e të dhënave, dhe përndryshe, për t'i përpunuar në anën e klientit (në shfletues) .

Mënyra më e mirë për të bashkëvepruar me API-në është krijimi dhe bashkëveprimi me të, gjë në të cilën fokusohemi në projektet tona.

Ndoshta ju keni shpikur termin "API". Sistemi operativ, shfletuesi i internetit dhe programet e përditësuara shpesh shpallin API të reja për konsumatorët. Çfarë është një API?

Ndërfaqja e programimit të aplikacionit

Termi API është një shkurtim dhe qëndron për "Ndërfaqja e programimit të aplikacionit".

API tse yak menu në një restorant. Menuja përmban një listë të bimëve që mund të përdorni, si dhe një përshkrim të bimëve të lëkurës. Nëse tregoni se cilat artikuj të menusë dëshironi, kuzhina e restorantit përfundon punën dhe përgatit ushqimin. Ju nuk e dini saktësisht se si restoranti e përgatit këtë ushqim dhe nuk keni nevojë për të.

Po kështu, API ofron një sërë operacionesh që mund të kryejnë vikors, si dhe një përshkrim të asaj që duhet bërë. Shitësi me pakicë duhet të dijë se si, për shembull, krijohet sistemi operativ dhe shfaqet kutia e dialogut "Ruaj". Ata thjesht duhet të dinë se çfarë është në dispozicion për përdorim në suplement.

Kjo nuk është një metaforë ideale, por disa zhvillues mund t'ju duhet të japin fuqinë API për të nxjerrë rezultatet, e cila, ndoshta, është më shumë si një restorant kimerik, ku mund të bëni gjëra nga përbërësit tuaj që do të prodhojë kuzhina.

API-të i lejojnë zhvilluesit të kursejnë kohë duke përdorur shpejt burimet e platformës për të fituar një punë të vlefshme. Kjo ndihmon për të ndryshuar sasinë e kodit të zbërthyer, dhe gjithashtu ndihmon në krijimin e përputhshmërisë midis shtesave për të njëjtën platformë. API-të mund të kontrollojnë aksesin në burimet e harduerit dhe softuerit.

API e bën jetën më të lehtë për shitësit

Le të themi se dëshironi të zhvilloni një program për iPhone. Sistemi operativ Apple iOS ofron një numër të madh ndërfaqesh API, si çdo sistem tjetër operativ, për ta bërë më të lehtë për ju.

Për shembull, nëse dëshironi të përdorni një shfletues uebi për të shfaqur një ose disa faqe ueb, nuk keni nevojë të programoni një shfletues uebi nga e para për programin tuaj. Në dhe
Ju mund të përdorni API-në WKWebView për të instaluar një shfletues uebi WebKit (Safari) në programin tuaj.

Nëse dëshironi të bëni foto ose video nga kamera e iPhone, nuk keni nevojë të shkruani ndërfaqen e kamerës. Mund të përdorni API-në e kamerës për të instaluar një kamerë iPhone në programin tuaj. Nëse nuk do të kishte API, zhvilluesit e softuerit do të duhej të krijonin softuerin e vetë kamerës dhe të interpretonin hyrjet e harduerit të kamerës. Nëse zhvilluesit e sistemit operativ Apple kanë zhvilluar gjithë këtë punë të rëndësishme për robotin, atëherë zhvilluesit thjesht mund të përdorin ndërfaqen API të kamerës për të shtuar një kamerë dhe më pas të vazhdojnë të shkruajnë programet e tyre. Dhe nëse Apple përmirëson API-në e kamerës, të gjitha programet që e përdorin atë do t'i shpejtojnë automatikisht këto ndryshime.

Kjo vlen për të gjitha platformat. Për shembull, dëshironi të hapni një dritare dialogu të Windows? Për kë është API. Dëshiron të mbështesësh vërtetimin e gjurmëve të gishtave në Android? Për këtë API, nuk keni nevojë të provoni sensorin e gishtit të ndonjë shitësi Android. Shitësit me pakicë nuk kanë nevojë të përsërisin timonin përsëri dhe përsëri.

Ndërfaqet API ofrojnë akses në burime

API-të përdoren gjithashtu për të siguruar akses në pajisjet harduerike dhe funksionet e softuerit që mund të mos lejohen të aksesohen nga programe të tjera. Kjo është arsyeja pse API-të shpesh luajnë një rol të madh në treg.

Për shembull, nëse keni vizituar ndonjëherë një faqe interneti dhe keni marrë njoftime nga shfletuesi juaj në lidhje me faktin që faqja e internetit po kërkon cilësimet tuaja të sakta, kjo faqe interneti është krijuar për të përdorur API-në e vendndodhjes në shfletuesin tuaj të internetit. Shfletuesit e uebit po ofrojnë API për ta bërë të lehtë për shfletuesit e uebit që të mohojnë qasjen në të dhënat tuaja - ata thjesht mund të pyesin "Ku jeni?" dhe shfletuesi do të duhet të punojë me aksesin në lidhjet GPS ose Wi-Fi për të gjetur fizikun tuaj. vendndodhjen M_scescience.

Megjithatë, shfletuesit e ofrojnë këtë informacion edhe nëpërmjet një API, kështu që qasja në të mund të kontrollohet. Nëse një faqe interneti dëshiron të mohojë hyrjen në vendndodhjen tuaj të saktë, mënyra e vetme për të hyrë në të është përmes API-së shtesë. Unë, nëse faqja e internetit po përpiqet të vikoristuvach yogo, ju, koristuvach, mund ta lejoni ose modifikoni këtë kërkesë. Qasja në burimet e harduerit, siç është sensori GPS, është i mundur vetëm përmes API-së, kështu që shfletuesi mund të kontrollojë aksesin në pajisje dhe të kufizojë aftësitë e programeve.

I njëjti parim vlen për sistemet aktuale operative celulare, si iOS dhe Android, ku programet celulare kanë leje që mund të zbatohen me anë të kontrollit të aksesit API. Për shembull, nëse përdoruesi dëshiron të refuzojë hyrjen në kamerë përmes API-së së kamerës, ju mund të ndryshoni kërkesën për leje dhe programi nuk do të lejojë hyrjen në kamerën e pajisjes tuaj.

Sistemet e skedarëve që lejojnë lejet, si Windows, Mac dhe Linux, kanë leje për të vendosur API-në e sistemit të skedarëve. Një program tipik nuk ka qasje të drejtpërdrejtë në një hard disk fizik të pandarë. Në këtë rast, programi mund të mohojë aksesin në skedarë përmes API-së.

API është wikipedia për komunikimin ndërmjet shërbimeve

API-të kritikohen gjithashtu për arsye të tjera. Për shembull, nëse keni shkarkuar ndonjëherë një objekt Google Maps, e keni dërguar atë në një faqe interneti, ajo faqe interneti përdor Google Maps API për të ngarkuar atë hartë. Google ofron API të ngjashme me këto për shfletuesit e uebit, të cilët më pas mund të përdorin API-të për të mbledhur objekte komplekse drejtpërdrejt në faqen e tyre të internetit. Meqenëse nuk ka API të tilla, shitësit me pakicë mund të duhet të krijojnë dhe dorëzojnë kartat e tyre në mënyrë që të vendosin një hartë të vogël interaktive në një faqe interneti.

Për shkak të këtij API, Google mund të kontrollojë aksesin në Google Maps në faqet e internetit të palëve të treta, duke siguruar që ata do ta abuzojnë atë në mënyrën e duhur dhe nuk do të tundohen të nxjerrin pamatur kuadrin që shfaq, për shembull, uebsajti i Google Maps.

Ka shumë shërbime të ndryshme në internet. Krijo një API për të përkthyer tekstin nga Google Translate ose për të shfaqur komentet e Facebook ose përgjigjet në Twitter në faqet e internetit.

Standardi OAuth përcakton gjithashtu një numër API-sh që ju lejojnë të identifikoheni në një sajt përmes një shërbimi tjetër, për shembull, duke përdorur llogaritë e llogarisë në Facebook, Google ose Twitter për t'u identifikuar në një faqe të re të internetit pa krijuar një llogari të re llogarie për atë sajt të veçantë. API-të janë kontrata standarde që përcaktojnë se si shitësit me pakicë ndërveprojnë me shërbimin dhe llojin e produkteve që shitësit me pakicë janë përgjegjës për të prodhuar.

Nëse e keni lexuar këtë artikull, atëherë do të keni deklaratat më të mira për ato të tilla si API-të. Nga rruga, ju nuk keni nevojë të dini se çfarë është një API, pasi nuk jeni një zhvillues. Nëse e dini se platforma ose shërbimi i softuerit ka shtuar API të reja për pajisje ose shërbime të ndryshme, mund të jetë më e lehtë për zhvilluesit të përdorin funksione të tilla.