Dom Naprijed razmišljanje Povratak računar-poslužitelj?

Povratak računar-poslužitelj?

Video: Hobotnica - serija sa prevodom (Sezona 3 iz 1987 god.) (Studeni 2024)

Video: Hobotnica - serija sa prevodom (Sezona 3 iz 1987 god.) (Studeni 2024)
Anonim

Posljednjih nekoliko mjeseci jedna mi se stvar činila zanimljivom u svijetu razvoja jest kako se moderne aplikacije vraćaju ka smještanju više inteligencije u klijent umjesto na poslužitelj. Model klijent-poslužitelj, naravno, nije ništa novo: to je način na koji se tradicionalne aplikacije grade godinama, s bogatim aplikacijama za klijente koji razgovaraju s aplikacijama na strani poslužitelja. No, u doba Weba, pa čak i Web 2.0, fokus se preselio na web aplikacije u kojima je najveći dio inteligencije bio na web poslužitelju (obično na aplikacijskim poslužiteljima koji se temelje na Javi), a klijent je bio samo jednostavna web stranica u preglednik u koji ste svaki put kad ste kliknuli učitao novu stranicu.

Ali u posljednje vrijeme sazrijevanje HTML5, CSS-a, a posebno JavaScript-a, vodeći su programerima koji u stvarnu web stranicu stavljaju stvarnu inteligenciju i stvarnu obradu. Konkretno, vidjeli smo porast različitih okvira temeljenih na JavaScript-u na temelju klijenta koji olakšavaju stvaranje inteligentnih prednjih strana koji se potpuno izvode unutar modernog web preglednika. Uključeni preglednici obično su oni temeljeni na Webkit motoru, uključujući Chrome i Safari, ali čini se da većina aplikacija funkcionira u trenutnim verzijama Firefoxa i Internet Explorera. Završite složenijom web stranicom koja se dinamički mijenja, izvlačeći podatke s poslužitelja po potrebi.

Čini se da posebno privlače tri MVC okvira: Backbone.js, Ember.js i Angular.js. (MVC označava kontroler modela-pogleda - to je u osnovi arhitektura koja stoji iza računanja web klijenta. "Js" označava JavaScript.) U suštini to je sve narastanje AJAX (asinhronog JavaScript i XML) pristupa popularnog u proteklom desetljeću ili tako, ali postaje puno zreliji i gotovo standardizirani. Ideja je staviti više stanja i inteligencije u preglednik, a zatim preglednik povezati s REST API-jevima na strani poslužitelja.

Okosnica je možda najosnovniji i najniži od ovih okvira; Na mnogim popularnim stranicama koristi se u raznim nastavcima. Ember je izrasla iz okvira zvanog Sproutcore koji je podržao Apple i puno je sveobuhvatniji okvir koji je osmišljen da vam omogućava rad na radnim površinama. Često se koristi sa Bootstrapom - skupom predložaka za HTML i CSS koje su izvorno stvorili zaposlenici Twittera. Angular je Googleova alternativa koja se čini negdje između - neki misle da je malo fleksibilnija ili barem „manje samouvjerena“ od Ember-a, ali sveobuhvatnija od Backbone-a. (Napominjemo da Google gura programere da koriste Angular za poboljšanje kvalitete kodiranja, ali interno zapravo koristi drugačiji, vlasnički skup okvira.) Čak je i Microsoft dodao kuke u Visual Studio za te okvire.

Budući da je Internet, postoji desetak alternativa. Jedan od zanimljivijih koji sam čuo u posljednje vrijeme je Meteor, dizajniran za rad s JavaScript-om i na strani klijenta i poslužitelja. Ali to je još uvijek rano i još ne znam nijednog pravog korisnika. U međuvremenu se više programera igra s Node.js, koji se često koristi za implementacije JavaScript na strani poslužitelja.

Čini se da je prednost takvih okvira jasna. Aplikacije bogatih web klijenata snažnije su od tankih klijentskih aplikacija gdje se sve pokreće na poslužitelju, mogu pružiti bolje korisničko sučelje i nude mogućnost izvanmrežnih informacija. Koristeći ove okvire, možete kreirati bogate aplikacije web klijenta mnogo brže nego što ste mogli izgraditi sve ispočetka i iskoristiti prednosti zajednica koje se razvijaju oko svake od njih.

Možda je najvažnije da možete kreirati mobilne aplikacije koje se skaliraju na različitim uređajima bez potrebe za pisanjem određenih izvornih aplikacija. Za domaće aplikacije još je dobar argument koji može izravnije odgovoriti na specifičnosti svake platforme. Međutim, mnogi programeri otkrili su da takvi okviri mogu dramatično ubrzati razvoj platformi, pogotovo ako se koriste u kombinaciji s stvarima kao što je PhoneGap, mobilni okvir otvorenog koda koji je kupio Adobe i otvoreni u projektu Apache Cordova.

Mobile, naravno, donosi svoja ograničenja, uključujući brzinu procesora i, što je još važnije, brzinu - a ponekad i nedostatak - povezanosti. Jedan od razloga što ljudi vole aplikacije na web stranicama je taj što često možete preuzeti osnovnu funkcionalnost putem Wi-Fi-ja ili brze veze i jednostavno dobiti potrebne podatke, a ne cijeli dizajn. Paketi poput PhoneGapa rješavaju ovo pitanje stavljajući JavaScript u preuzetu aplikaciju.

No postoje i druga pitanja s takvim okvirima. Po definiciji, više računanja na strani klijenta povećava složenost u odnosu na jednostavnu aplikaciju namijenjenu samo poslužitelju, i doista se neki nedostaci starog modela klijent-poslužitelj vraćaju. Programeri moraju upravljati državom s obje strane. Kôd na dva mjesta znači da se morate usredotočiti na sigurnost na oba mjesta. Budući da razvojni tim često neko radi na klijentu, a drugi na poslužitelju, dobivate dodatne probleme s komunikacijom. S druge strane, neka se starija izdanja klijent-poslužitelja ne vraćaju, a vi umjesto toga zadržavate prednosti web softvera. Ovo je mnogo više standardno usmjeren svijet, vođen zajednicom, pa niste toliko ovisni o jednom privatnom okruženju. Dijeljenjem dijelova na strani klijenta i poslužitelja možete dobiti i čistiju, jednostavniju implementaciju na strani poslužitelja koja samo radi obradu, a ne korisničko sučelje, a kao rezultat toga može biti potrebno manje resursa. Ipak imate prednost u mogućnosti ažuriranja svih klijenata odjednom, budući da preglednik obično kod učitava aplikaciju kod s poslužitelja.

Jasno vidimo pomak prema inteligentnijim web klijentima - ne u svakom slučaju, već u mnogim novim aplikacijama. Mnogo je teže preuzeti starije aplikacije i premjestiti ih na ovaj model, ali i neke od njih vidimo. Nije baš stari model klijent-poslužitelj, ali sve je bliži.

Povratak računar-poslužitelj?