Video: Il ritorno dell’uomo da sei milioni di dollari (Novembre 2024)
Una delle cose che ho trovato interessante nel mondo dello sviluppo negli ultimi mesi è il modo in cui le moderne applicazioni stanno tornando a mettere più intelligenza nel client anziché nel server. Il modello client-server non è certo una novità: è il modo in cui le applicazioni tradizionali sono state costruite per anni, con applicazioni client avanzate che parlano con applicazioni lato server. Ma nell'era del Web, e persino del Web 2.0, l'attenzione si è spostata sulle applicazioni Web in cui la maggior parte dell'intelligence era sul server Web (in genere nei server di applicazioni basati su Java) e il client era solo una semplice pagina Web in un browser in cui ogni volta che hai fatto clic, hai caricato una nuova pagina.
Ma recentemente la maturazione di HTML5, CSS e in particolare JavaScript sta portando gli sviluppatori a mettere vera intelligenza ed elaborazione reale nella stessa pagina Web. In particolare, abbiamo assistito alla nascita di una varietà di framework basati su JavaScript sul lato client che semplificano la creazione di front-end intelligenti eseguiti completamente all'interno di un moderno browser Web. I browser coinvolti sono in genere quelli basati sul motore Webkit, inclusi Chrome e Safari, ma la maggior parte delle app sembra funzionare bene anche nelle versioni correnti di Firefox e Internet Explorer. Si finisce con una pagina Web più complessa che cambia in modo dinamico, estraendo i dati dal server secondo necessità.
Tre framework MVC in particolare sembrano attirare la maggior parte dell'attenzione: Backbone.js, Ember.js e Angular.js. (MVC sta per model-view-controller - è essenzialmente l'architettura alla base del computing client Web. Il "js" sta per JavaScript.) Fondamentalmente si tratta di una crescita dell'approccio AJAX (Asynchronous JavaScript e XML) popolare negli ultimi dieci anni o così, ma diventando molto più maturo e quasi standardizzato. L'idea è quella di mettere più stato e intelligenza nel browser, quindi collegare il browser con le API REST sul lato server.
Backbone è forse il più semplice e minimale di questi framework; è utilizzato in vari modi da molti siti popolari. Ember è nato da un framework chiamato Sproutcore supportato da Apple ed è un framework molto più completo progettato per consentirti di realizzare applicazioni in stile desktop. Viene spesso utilizzato con Bootstrap, un insieme di modelli per HTML e CSS originariamente creati da dipendenti Twitter. Angolare è l'alternativa di Google che sembra essere nel mezzo: alcune persone pensano che sia un po 'più flessibile o almeno "meno supponente" di Ember ma più completo di Backbone. (Nota Google sta spingendo gli sviluppatori a utilizzare Angular per migliorare la qualità della codifica, ma internamente utilizza effettivamente un diverso set proprietario di framework.) Anche Microsoft ha aggiunto hook in Visual Studio per questi framework.
Essendo il Web, ci sono dozzine di alternative. Uno dei più interessanti di cui ho sentito parlare recentemente è Meteor, progettato per funzionare con JavaScript sia sul lato client che sul lato server. Ma questo è ancora molto presto e non conosco ancora nessun utente reale. Nel frattempo più sviluppatori stanno giocando con Node.js, spesso usato per implementazioni JavaScript sul lato server.
Il vantaggio di tali quadri sembra evidente. Le applicazioni Web-client avanzate sono più potenti delle applicazioni thin client in cui tutto viene eseguito sul server, possono fornire una migliore interfaccia utente e offrire la possibilità di informazioni offline. Usando questi framework puoi creare ricche applicazioni client Web molto più velocemente di quanto potresti costruendo tutto da zero e sfruttare le comunità che si sviluppano intorno a ciascuna di esse.
Forse ancora più importante, puoi creare applicazioni mobili che si adattano a dispositivi diversi senza dover scrivere applicazioni native specifiche. C'è ancora un buon argomento da fare per le app native, che possono indirizzare più direttamente le funzionalità specifiche di ciascuna piattaforma. Tuttavia, molti sviluppatori hanno scoperto che tali framework possono accelerare notevolmente lo sviluppo multipiattaforma, in particolare se utilizzati insieme a cose come PhoneGap, un framework mobile open source acquistato da Adobe e open source nel progetto Apache Cordova.
Ovviamente, il mobile porta i propri limiti, inclusa la velocità dei processori e, forse, ancora più importante, la velocità e talvolta la mancanza di connettività. Uno dei motivi per cui alle persone piacciono le app su pagine Web è che spesso è possibile scaricare le funzionalità di base tramite Wi-Fi o una connessione veloce e ottenere semplicemente i dati necessari per il download, non l'intero progetto. Pacchetti come PhoneGap risolvono questo problema inserendo JavaScript in un'app scaricata.
Vi sono tuttavia altri problemi con tali quadri. Per definizione, fare più elaborazione sul lato client aumenta la complessità rispetto a una semplice app solo per server e, in effetti, alcuni degli svantaggi del vecchio modello client-server ritornano. Gli sviluppatori devono gestire lo stato da entrambe le parti. Il codice in due punti significa che devi concentrarti sulla sicurezza in entrambi i luoghi. Poiché un team di sviluppo ha spesso alcune persone che lavorano sul client e altre sul server, si verificano ulteriori problemi di comunicazione. D'altra parte, alcuni dei problemi più vecchi del client-server non ritornano e tu mantieni i vantaggi del software Web. Questo è un mondo molto più guidato dagli standard, guidato dalla comunità, quindi non sei dipendente da un singolo ambiente proprietario. Dividendo le porzioni lato client e lato server è anche possibile avere un'implementazione lato server più chiara e semplice che esegue solo l'elaborazione e non l'interfaccia utente e, di conseguenza, può richiedere meno risorse. Tuttavia, hai ancora il vantaggio di poter aggiornare tutti i client contemporaneamente, poiché in genere il browser carica il codice dal server quando viene invocata l'app.
Stiamo chiaramente vedendo una svolta verso client Web più intelligenti, non in tutti i casi, ma in molte nuove applicazioni. È molto più difficile prendere le applicazioni più vecchie e spostarle su questo modello, ma ne stiamo vedendo anche alcune. Non è proprio il vecchio modello client-server, ma si sta avvicinando molto di più.