Súhlasíte, najmä ak ste v programovaní stále nováčikom, že niektoré podmienky kódovania sú zastrašujúce.

Pre niektorých vývojárov patria výrazy ako „asynchrónne“ a „synchrónne programovanie“ medzi neprehľadné, ale často používané výrazy kódovania. Čo teda znamenajú tieto pojmy? Čím sa líšia? A ako fungujú? Odpovieme na všetky tieto a ďalšie otázky.

Ako funguje synchrónne programovanie

Synchrónne webové aplikácie načítavajú zdroje jednotlivo a postupne, takže keď sa nepodarí načítať vyšší prostriedok alebo komponent v hierarchii, tí pod ním nebudú reagovať.

Žiadosti, ktoré synchronizovane pracujete s protokolom s viacerými vláknami.

Poznámka: Vlákno je jeden end-to-end pracovník alebo kanál, ktorý vybavuje požiadavky v programovaní.

Každé z týchto vlákien vybavuje požiadavky osobitne v synchrónnom programovaní. Každé vlákno má teda svoj čas vykonania a pred vykonaním ďalšej udalosti sa úplne načíta. V dôsledku toho vykonanie udalosti vo vlákne zablokuje ďalšie vlákna, čím zablokuje celé užívateľské rozhranie v procese.

instagram viewer

Webové aplikácie, ktoré bežia výlučne na synchrónnom programovaní, načítajú zdroje zvyčajne závisle v zámku. Každá operácia, vrátane požiadaviek POST a GET, sa musí vždy načítať po novom pre každú požiadavku a odpoveď.

Synchrónne volania preto zabezpečujú, aby klient alebo prehliadač dostali odpoveď od prvej žiadosti pred vykonaním ďalšej. To môže mať za následok zbytočné oneskorenia a zlú používateľskú skúsenosť.

Súvisiace: Ako písať viacvláknový kód v jazyku Java

Napríklad pri pokuse o odoslanie formulára na webovú stránku, ktorá beží synchrónne, po vyplnení potrebných polí a odoslaní formulára klient (prehliadač) uzamkne celé pole formulára.

Bráni vám teda v vykonaní ďalších aktualizácií poľa formulára alebo v kliknutí na inú časť webovej aplikácie počas odosielania.

Súvisiace: Ako nainštalovať Node.js a npm v systéme Windows

Tu je príklad synchrónneho kódu, ktorý číta obsah súboru s fs modul v node.js:

var fs = require ('fs');
const readData = fs.readFileSync ('text.txt');
console.log (readData.toString ());
setTimeout (() => {
console.log ('Hello world, I block other threads ...')
}, 1000
);

Vyššie uvedený kód používa readFileSync metóda na získanie obsahu textového súboru, ale nepoužíva funkciu spätného volania.

Ako funguje asynchrónne programovanie

V asynchrónnom programovaní poskytujú aplikácie požiadavky a odpovede pomocou neblokujúceho protokolu vstupu a výstupu (I / O). Na rozdiel od synchrónneho programovania asynchrónny program nevykonáva operácie hierarchicky. Program teda nebude čakať na vykonanie žiadosti skôr, ako odpovie iným.

V podstate vykonáva požiadavky súčasne, aj keď majú rôzne funkcie. Výsledkom je, že aplikácia vyvinutá s asynchrónnym programovaním načíta celý svoj obsah iba raz.

Jedno vlákno spracováva viac požiadaviek v cykle udalostí. Zlyhanie jednej žiadosti teda neovplyvní druhú.

Pretože asynchrónne načítanie neblokuje, webové aplikácie, ktoré fungujú na tomto princípe, by mohli skončiť ako jednostránkové aplikácie.

Napríklad na rozdiel od synchrónneho programovania vás funkcia po vyplnení a odoslaní formulára odošle asynchrónne bez toho, aby uzamkla ostatné polia alebo celé používateľské rozhranie. Preto môžete počas prebiehajúceho odosielania aktualizovať ďalšie polia formulára a robiť viac požiadaviek vo webovej aplikácii.

V dôsledku toho nemusíte čakať na žiadosti, pretože všetky bežia v jednej slučke. Na rozdiel od synchrónnych aplikácií teda asynchrónne aplikácie poskytujú lepšiu používateľskú skúsenosť a sú rovnako rýchle.

Súvisiace: Ako nainštalovať a spravovať viac verzií Node.js v systéme Linux

Tu je príklad toho, ako vyzerá asynchrónny kód v node.js:

var fs = require ('fs');
fs.readFile ('text.txt', function (err, data) {
if (err) {
console.log („Je nám ľúto, vyskytla sa chyba“);
}
setTimeout (() => {
console.log (data.toString ())
}, 1000);
});
setTimeout (() => {
console.log ('Ahoj svet, neblokujem iné vlákna ...')
}, 500
);

Na rozdiel od predchádzajúcej synchrónnej metódy vyššie uvedený asynchrónny kód používa na prispôsobenie chybových správ funkciu spätného volania.

Jazyková podpora pre synchrónne a asynchrónne programovanie

Väčšina jazykov na strane servera, ako Python, C #, Java a PHP, spúšťa kód závisle, takže jeden riadok alebo celý nasledujúci blok závisí od úspechu toho, ktorý mu predchádza. To znamená, že všetky sú predvolene synchrónne.

Aj keď väčšina z týchto jazykov na strane servera teraz podporuje asynchrónne volania s posledným pokrokom, žiadny z nich nie je predvolene asynchrónny.

Súvisiace: Ako zvoliť správny programovací jazyk webu

Node.js, pozoruhodný rámec JavaScriptu na strane servera, je príkladom runtime s jedným vláknom, ktorý podporuje asynchrónne programovanie. Async / Await úlohy sú teraz možné aj v C #.

Výhody a nevýhody synchrónneho a asynchrónneho programovania

Aj keď by ste si mohli myslieť, že tu vyhráva asynchrónne programovanie, obe metódy majú svoje klady a zápory. Ich použitie teda závisí od vašich preferencií alebo problému, ktorý máte k dispozícii.

Avšak obaja sú v rôznych ohľadoch lepší ako ostatní. Pozrime sa na výhody a nevýhody každej z týchto metód programovania.

Výhody asynchrónneho programovania

  • Všetky skripty sa načítajú po jednom. To sa rovná rýchlosti, odozve a lepšiemu používateľskému zážitku.
  • Eliminuje sa tak oneskorenie pri načítaní stránky. Nie je teda potrebné vykonať ďalšie obnovenie stránky pri vykonávaní nových požiadaviek.
  • Môžete použiť viac funkcií naraz, aj keď sú ešte spustené iné požiadavky.
  • Asynchrónne aplikácie sú vysoko škálovateľné a na svoju prácu potrebujú len málo zdrojov.
  • Aj keď na jednu požiadavku reaguje pomaly, nemá to vplyv na čas odozvy ostatných.
  • Zlyhanie vlákna nezabráni ostatným v vykresľovaní.
  • Vstavané spätné volania vám umožňujú prispôsobiť chybové správy.

Nevýhody asynchrónneho programovania

  • Vyžaduje veľa spätných volaní a rekurzívnych funkcií, ktoré môžu byť počas vývoja ťažkopádne.
  • Ak spätné volania nie sú efektívne využívané, neexistuje spôsob, ako by používateľ mohol vedieť, či požiadavka zlyhá alebo nie, najmä pri požiadavkách POST.
  • Latencia v počiatočnom vykreslení stránky môže ovplyvniť váš dojem.
  • Pre webové aplikácie, ktoré používajú asynchrónne načítanie, môže byť ťažké prehľadávať vyhľadávače ako Google a Bing.
  • V niektorých programovacích jazykoch môže byť ťažké implementovať asynchrónne skriptovanie.
  • Kód môže byť chaotický a ťažko sa ladí.

Výhody synchrónneho programovania

  • Vyžaduje menej kódovacieho know-how a je podporovaný všetkými programovacími jazykmi.
  • Aj keď neexistujú žiadne prispôsobené spätné volania pre zlyhania požiadaviek, je vám okamžite zrejmé, že klient (prehliadač) takéto chyby štandardne spracováva.
  • Je to lepšie na vykonávanie úloh CPU.
  • Vyhľadávače ľahšie prehľadávajú synchrónne webové stránky.
  • Ideálne pre jednoduché žiadosti.

Nevýhody synchrónneho programovania

  • Čas načítania môže byť pomalý.
  • Neexistujú žiadne zabudované metódy spätného volania.
  • Ak je vlákno uzamknuté, zablokujú sa aj ostatní.
  • Neschopnosť vykonať viac operácií naraz môže znížiť užívateľskú skúsenosť.
  • Akonáhle požiadavka zlyhá, prestane reagovať aj celý program.
  • Ak sa požiadavky stanú ohromnými, na zvládnutie viacerých vlákien môže byť potrebné obrovské množstvo zdrojov.

Synchrónne alebo asynchrónne programovanie: Čo je lepšie?

Aj keď synchrónne programovanie môže byť pomalé a asynchrónne skriptovanie zasahuje rýchlosťou, rozpoznanie vhodnej metódy pre akýkoľvek scenár je kľúčové. Niekedy dokonca spolupracujú.

Backendové operácie ako CRUD (vytváranie, čítanie, aktualizácia a mazanie) sú predvolene synchrónne. Môžete sa však tiež rozhodnúť vykonať operácie CRUD asynchrónne. Musíte len vylepšiť svoj front-endový skript, aby ste sa spojili s vašim backendovým kódom. Môžete napríklad synchronizovať synchronizáciu údajov z databázy. Potom ho môžete predstaviť používateľom s asynchrónnym skriptovaním.

Navyše, použitie asynchrónneho programovania na vytváranie jednoduchých front-endových aplikácií alebo vykonávanie operácií CPU, ktoré vyžadujú menšie zdroje, nemusí byť ideálne.

Email
Front-End vs. Back-end webový vývoj: Ktorá cesta je pre vás to pravé?

Naučiť sa vývoj webových aplikácií je skvelý spôsob, ako porozumieť kódovaniu, ale kde by ste mali začať: vývoj webových aplikácií typu front-end alebo back-end?

Prečítajte si Ďalej

Súvisiace témy
  • Programovanie
  • Programovanie
O autorovi
Idowu Omisola (Publikovaných 69 článkov)

Idowu je vášnivý pre čokoľvek inteligentné technológie a produktivitu. Vo voľnom čase sa hrá s kódovaním a keď sa nudí, prepne na šachovnicu, ale tiež rád občas vybočuje z rutiny. Jeho vášeň ukázať ľuďom cestu v moderných technológiách ho motivuje k tomu, aby písal viac.

Viac od Idowu Omisola

Prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu s technickými tipmi, recenziami, bezplatnými elektronickými knihami a exkluzívnymi ponukami!

Ešte jeden krok…!

V e-maile, ktorý sme vám práve poslali, potvrďte svoju e-mailovú adresu.

.