Hem Framåt tänkande Återlämnande av klient-server datoranvändning?

Återlämnande av klient-server datoranvändning?

Video: Сокетный Клиент-Сервер на C# (September 2024)

Video: Сокетный Клиент-Сервер на C# (September 2024)
Anonim

En av de saker som jag hittat intressant i utvecklingsvärlden under de senaste månaderna är hur moderna applikationer flyttar tillbaka för att placera mer av intelligensen i klienten istället för servern. Klient-servermodellen är naturligtvis inget nytt: det är hur traditionella applikationer har byggts i flera år, med rika klientapplikationer som pratar med serversidan. Men under webben, och till och med Web 2.0, flyttades fokuset till webbapplikationer där huvuddelen av intelligensen fanns på webbservern (vanligtvis i Java-baserade applikationsservrar) och klienten var bara en enkel webbsida på en webbläsare där du laddade en ny sida varje gång du klickade.

Men nyligen leder mognaden av HTML5, CSS och särskilt JavaScript för utvecklare att sätta verklig intelligens och verklig bearbetning på själva webbsidan. I synnerhet har vi sett framväxten av en mängd olika JavaScript-baserade ramverk på klientsidan som gör det lättare att skapa intelligenta gränser som körs fullständigt i en modern webbläsare. De inblandade webbläsarna är vanligtvis de som är baserade på Webkit-motorn, inklusive Chrome och Safari, men de flesta appar verkar fungera bra även i de aktuella versionerna av Firefox och Internet Explorer. Du slutar med en mer komplex webbsida som förändras dynamiskt och drar data från servern efter behov.

Tre MVC-ramverk verkar särskilt få mest uppmärksamhet: Backbone.js, Ember.js och Angular.js. (MVC står för model-view-controller - det är i huvudsak arkitekturen bakom webbklientberäkning. "Js" står för JavaScript.) I huvudsak är detta allt en utväxt av AJAX (Asynchronous JavaScript och XML) strategi som är populärt under det senaste decenniet eller så, men blir mycket mogenare och nästan standardiserade. Tanken är att lägga mer av tillstånd och intelligens i webbläsaren och sedan låta webbläsaren ansluta till REST-API: er på serversidan.

Ryggraden är kanske den mest grundläggande och minimala av dessa ramverk; det är vant till olika omfattningar av många populära webbplatser. Ember växte ut ur ett ramverk som heter Sproutcore som Apple stödde, och är ett mycket mer omfattande ramverk som är utformat för att låta dig göra skrivbordsstil. Det används ofta med Bootstrap - en uppsättning mallar för HTML och CSS som ursprungligen skapades av Twitter-anställda. Angular är Googles alternativ som verkar vara någonstans däremellan - vissa tycker att det är lite mer flexibelt eller åtminstone "mindre åsikt" än Ember men mer omfattande än Backbone. (Observera att Google pressar utvecklarna att använda Angular för att förbättra kvaliteten på kodningen, men internt använder faktiskt en annan, egenutvecklad uppsättning ramverk.) Till och med Microsoft har lagt till krokar i Visual Studio för dessa ramverk.

Detta är webben, det finns dussintals alternativ. En av de mer intressanta som jag har hört talas om på sistone är Meteor, designad för att fungera med JavaScript på både klient- och serversidan. Men detta är fortfarande väldigt tidigt, och jag känner inte till några riktiga användare än. Under tiden spelar fler utvecklare med Node.js, som ofta används för JavaScript-implementationer på serversidan.

Fördelen med sådana ramverk verkar tydlig. Rika webbklientapplikationer är kraftfullare än tunna klientapplikationer där allt körs på servern, de kan ge ett bättre användargränssnitt och erbjuda möjlighet till offlineinformation. Med hjälp av dessa ramverk kan du skapa rika webbklientapplikationer mycket snabbare än du kan genom att bygga allt från grunden och dra nytta av de samhällen som utvecklas runt var och en av dem.

Kanske viktigast av allt är att du kan skapa mobila applikationer som skalas till olika enheter utan att behöva skriva specifika ursprungliga applikationer. Det finns fortfarande ett bra argument för inbyggda appar, som mer direkt kan hantera de specifika funktionerna på varje plattform. Många utvecklare har emellertid funnit att sådana ramverk dramatiskt kan påskynda plattformsutveckling, särskilt när de används tillsammans med saker som PhoneGap, ett mobilt ramverk med öppen källköp som köps av Adobe och öppnas i Apache Cordova-projektet.

Mobil ger naturligtvis sina egna begränsningar, inklusive processorns hastighet, och kanske viktigare, hastigheten på - och ibland brist på - anslutning. En anledning till att människor gillar appar via webbsidor är att man ofta kan ladda ner den grundläggande funktionaliteten via Wi-Fi eller en snabb anslutning och bara få de data du behöver laddas ner, inte hela designen. Paket som PhoneGap löser problemet genom att lägga in JavaScript i en nedladdad app.

Det finns dock andra problem med sådana ramverk. Per definition gör mer datorarbete på klientsidan ökad komplexitet gentemot en enkel server-endast-app, och faktiskt kommer vissa av nackdelarna med den gamla klient-servermodellen tillbaka. Utvecklare måste hantera staten på båda sidor. Kod på två platser betyder att du måste fokusera på säkerhet på båda platserna. Eftersom ett utvecklingslag ofta har några personer som arbetar med klienten och andra på servern får du ytterligare kommunikationsproblem. Å andra sidan kommer några av de äldre problemen med klientserver inte tillbaka och du behåller istället fördelarna med webbprogramvara. Detta är en mycket mer standarddriven, samhällsstyrd värld, så du är inte lika beroende av en enda egenmiljö. Genom att dela klient- och serversidan delar kan du också ha en renare, enklare implementering på serversidan som bara gör bearbetning och inte UI och som kan kräva färre resurser som resultat. Ändå har du fortfarande fördelen att kunna uppdatera alla klienter samtidigt, eftersom webbläsaren vanligtvis laddar koden från servern när appen startas.

Vi ser tydligt att vi går mot mer intelligenta webbklienter - inte i alla fall utan i många nya applikationer. Det är mycket svårare att ta äldre applikationer och flytta dem till den här modellen, men vi ser också något av det. Det är inte riktigt den gamla klient-servermodellen, men den kommer mycket närmare.

Återlämnande av klient-server datoranvändning?