Struttura web - Web framework
Un framework Web ( WF ) o framework di applicazioni Web ( WAF ) è un framework software progettato per supportare lo sviluppo di applicazioni Web inclusi servizi Web , risorse Web e API Web . I framework Web forniscono un modo standard per creare e distribuire applicazioni Web sul World Wide Web . I framework Web mirano ad automatizzare il sovraccarico associato alle attività comuni eseguite nello sviluppo Web . Ad esempio, molti framework Web forniscono librerie per l' accesso al database , framework di modelli e gestione delle sessioni e spesso promuovono il riutilizzo del codice . Anche se spesso mirano allo sviluppo di siti Web dinamici , sono applicabili anche a siti Web statici .
Storia
Poiché il design del World Wide Web non era intrinsecamente dinamico, i primi ipertesti consistevano in HTML codificato manualmente che veniva pubblicato sui server web . Eventuali modifiche alle pagine pubblicate devono essere eseguite dall'autore delle pagine. Nel 1993, è stato introdotto lo standard Common Gateway Interface (CGI) per interfacciare le applicazioni esterne con i server Web, per fornire una pagina Web dinamica che riflettesse gli input dell'utente.
Tuttavia, le implementazioni originali dell'interfaccia CGI avevano in genere effetti negativi sul carico del server, poiché ogni richiesta avviava un processo separato . Le implementazioni più recenti utilizzano processi persistenti tra le altre tecniche per ridurre l'ingombro nelle risorse del server e offrire un aumento generale delle prestazioni.
Nel 1995, sono emersi per la prima volta ambienti di sviluppo server/lingua completamente integrati e sono stati introdotti nuovi linguaggi specifici per il Web, come ColdFusion , PHP e Active Server Pages .
Sebbene la stragrande maggioranza dei linguaggi per la creazione di pagine Web dinamiche disponga di librerie per aiutare con attività comuni, le applicazioni Web spesso richiedono librerie specifiche per attività particolari, come la creazione di HTML (ad esempio, JavaServer Faces ).
Alla fine degli anni '90 iniziarono a comparire framework maturi e "full stack", che spesso riunivano più librerie utili per lo sviluppo web in un unico stack software coeso che gli sviluppatori web potevano utilizzare. Esempi di questo includono ASP.NET , Java EE , WebObjects , web2py , OpenACS , Catalyst , Mojolicious , Ruby on Rails , Laravel , Grails , Django , Zend Framework , Sails.js , Yii , CakePHP e Symfony .
Tipi di architetture framework
La maggior parte dei framework web sono basati sul Model-View-Controller (MVC) modello .
Modello-vista-controllore (MVC)
Molti framework seguono il modello architetturale MVC per separare il modello di dati con regole di business dall'interfaccia utente . Questa è generalmente considerata una buona pratica in quanto modularizza il codice, promuove il riutilizzo del codice e consente l'applicazione di più interfacce. Nelle applicazioni Web, ciò consente di presentare diverse visualizzazioni, come pagine Web per persone e interfacce di servizi Web per applicazioni remote.
Basato su push vs. basato su pull
La maggior parte dei framework MVC segue un'architettura basata su push chiamata anche "basata sull'azione". Questi framework utilizzano azioni che eseguono l'elaborazione richiesta e quindi "trasmettono" i dati al livello di visualizzazione per eseguire il rendering dei risultati. Django , Ruby on Rails , Symfony , Spring MVC , Stripes , Sails.js , CodeIgniter sono buoni esempi di questa architettura. Un'alternativa a questa è l'architettura pull-based, a volte chiamata anche "component-based". Questi framework iniziano con il livello di visualizzazione, che può quindi "estrarre" i risultati da più controller secondo necessità. In questa architettura, più controller possono essere coinvolti con una singola vista. Lift , Tapestry , JBoss Seam , JavaServer Faces e Wicket sono esempi di architetture pull-based. Play , Struts , RIFE e ZK supportano le chiamate del controller dell'applicazione sia push che pull.
Organizzazione a tre livelli
Nell'organizzazione a tre livelli , le applicazioni sono strutturate su tre livelli fisici: client, applicazione e database. Il database è normalmente un RDBMS . L'applicazione contiene la logica di business, gira su un server e comunica con il client tramite HTTP . Il client sulle applicazioni Web è un browser Web che esegue l'HTML generato dal livello dell'applicazione. Il termine non deve essere confuso con MVC, dove, a differenza dell'architettura a tre livelli, è considerata una buona pratica mantenere la logica di business lontana dal controller, il "livello intermedio".
Applicazioni quadro
I framework sono costruiti per supportare la costruzione di applicazioni Internet basate su un singolo linguaggio di programmazione, che vanno da strumenti generici come Zend Framework e Ruby on Rails, che aumentano le capacità di un linguaggio specifico, a pacchetti programmabili in linguaggio nativo costruiti intorno un'applicazione utente specifica, come i sistemi di gestione dei contenuti , alcuni strumenti di sviluppo mobile e alcuni strumenti del portale.
Framework di siti web generici
I framework Web devono funzionare secondo le regole architetturali dei browser e dei protocolli come HTTP , che è senza stato . Le pagine Web sono servite da un server e possono quindi essere modificate dal browser utilizzando JavaScript . Entrambi gli approcci hanno i suoi vantaggi e svantaggi.
Le modifiche alla pagina lato server in genere richiedono l'aggiornamento della pagina, ma consentono l'utilizzo di qualsiasi lingua e l'utilizzo di una maggiore potenza di calcolo. Le modifiche lato client consentono di aggiornare la pagina in piccoli blocchi che sembrano un'applicazione desktop, ma sono limitate a JavaScript e vengono eseguite nel browser dell'utente, che potrebbe avere una potenza di calcolo limitata. In genere viene utilizzato un mix dei due. Le applicazioni che fanno un uso massiccio di JavaScript sono chiamate applicazioni a pagina singola e in genere utilizzano un framework Web JavaScript lato client per organizzare il codice.
Lato server
- Wicket Apache
- ASP.NET Core
- tortaPHP
- Catalizzatore
- CodiceIgniter
- CppCMS
- Django
- Borraccia
- Jam.py
- Yii
- Laravel
- Mojolicious
- Ruby on Rails
- Sails.js
- Symfony
- Primavera MVC
- Peso (kit di strumenti web)
- Zend Framework
Dalla parte del cliente
Gli esempi includono Backbone.js , AngularJS , angolare , EmberJS , ReactJS e Vue.js .
Dash è un framework Python , R e Julia open source per la creazione di applicazioni analitiche basate sul Web . Lo stesso JavaScript (cioè React) viene utilizzato sul lato client, indipendentemente dal linguaggio di back-end.
Forum di discussione, wiki e weblog
- WikiBase/ WikiWikiWeb
Caratteristiche
I framework in genere impostano il flusso di controllo di un programma e consentono all'utente del framework di "agganciarsi" a quel flusso esponendo vari eventi. Questo modello di progettazione " inversione del controllo " è considerato un principio che definisce un framework e avvantaggia il codice applicando un flusso comune per un team che tutti possono personalizzare in modi simili. Ad esempio, alcuni popolari "microframework" come Sinatra di Ruby (che ha ispirato Express.js ) consentono hook "middleware" prima e dopo le richieste HTTP. Queste funzioni middleware possono essere qualsiasi cosa e consentono all'utente di definire la registrazione, l'autenticazione, la gestione delle sessioni e il reindirizzamento.
Sistema di modelli web
memorizzazione nella cache
La memorizzazione nella cache Web è la memorizzazione nella cache dei documenti Web al fine di ridurre l' utilizzo della larghezza di banda , il carico del server e il " ritardo " percepito . Una cache web memorizza le copie dei documenti che la attraversano; richieste successive possono essere soddisfatte dalla cache se vengono soddisfatte determinate condizioni. Alcuni framework applicativi forniscono meccanismi per memorizzare nella cache i documenti e aggirare varie fasi della preparazione della pagina, come l'accesso al database o l'interpretazione del modello.
Sicurezza
Alcuni framework Web sono dotati di framework di autenticazione e autorizzazione , che consentono al server Web di identificare gli utenti dell'applicazione e limitare l'accesso alle funzioni in base ad alcuni criteri definiti. Drupal è un esempio che fornisce l'accesso basato sui ruoli alle pagine e fornisce un'interfaccia basata sul Web per la creazione di utenti e l'assegnazione dei ruoli.
Accesso al database, mappatura e configurazione
Molti framework Web creano un'API unificata per un backend di database, consentendo alle applicazioni Web di funzionare con una varietà di database senza modifiche al codice e consentendo ai programmatori di lavorare con concetti di livello superiore. Inoltre, alcuni framework orientati agli oggetti contengono strumenti di mappatura per fornire mappatura relazionale agli oggetti , che mappa gli oggetti alle tuple .
Alcuni framework riducono al minimo la configurazione delle applicazioni web attraverso l'uso dell'introspezione e/o seguendo convenzioni ben note. Ad esempio, molti framework Java utilizzano Hibernate come livello di persistenza, che può generare uno schema di database in fase di esecuzione in grado di mantenere le informazioni necessarie. Ciò consente al progettista dell'applicazione di progettare oggetti di business senza dover definire in modo esplicito uno schema di database. Framework come Ruby on Rails possono anche funzionare al contrario, ovvero definire le proprietà degli oggetti del modello in fase di esecuzione in base a uno schema di database.
Altre funzionalità che i framework Web possono fornire includono il supporto transazionale e gli strumenti di migrazione del database .
Mappatura URL
La mappatura degli URL di un framework o la funzione di routing è il meccanismo con cui il framework interpreta gli URL. Alcuni framework, come Drupal e Django, abbinano l'URL fornito a modelli predeterminati utilizzando espressioni regolari , mentre altri utilizzano tecniche di riscrittura per tradurre l'URL fornito in uno che il motore sottostante riconoscerà. Un'altra tecnica è quella del graph traversal come quella usata da Zope , dove un URL viene scomposto in passaggi che attraversano un oggetto grafico (di modelli e viste).
Un sistema di mappatura degli URL che utilizza il pattern matching o la riscrittura per instradare e gestire le richieste consente di utilizzare URL più brevi e " amichevoli ", aumentando la semplicità del sito e consentendo una migliore indicizzazione da parte dei motori di ricerca. Ad esempio, un URL che termina con "/page.cgi?cat=science&topic=physics" potrebbe essere modificato semplicemente in "/page/science/physics". Ciò rende l'URL più facile da ricordare, leggere e scrivere per le persone e fornisce ai motori di ricerca informazioni migliori sul layout strutturale del sito. Un approccio di attraversamento del grafico tende anche a portare alla creazione di URL amichevoli. Un URL più breve come "/page/science" tende ad esistere per impostazione predefinita in quanto è semplicemente una forma più breve dell'attraversamento più lungo a "/page/science/physics".
AJAX
Ajax , abbreviazione di " JavaScript asincrono e XML ", è una tecnica di sviluppo web per la creazione di applicazioni web. L'intento è quello di rendere le pagine Web più reattive scambiando piccole quantità di dati con il server dietro le quinte, in modo che l'intera pagina Web non debba essere ricaricata ogni volta che l'utente richiede una modifica. Questo ha lo scopo di aumentare l'interattività, la velocità e l' usabilità di una pagina web .
A causa della complessità della programmazione Ajax in JavaScript, esistono numerosi framework Ajax che si occupano esclusivamente del supporto Ajax. Alcuni framework Ajax sono persino incorporati come parte di framework più grandi. Ad esempio, la libreria JavaScript jQuery è inclusa in Ruby on Rails.
Con il crescente interesse per lo sviluppo di applicazioni web avanzate " Web 2.0 " , la complessità della programmazione direttamente in Ajax e JavaScript è diventata così evidente che è intervenuta la tecnologia dei compilatori, per consentire agli sviluppatori di codificare in linguaggi di alto livello come Java, Python e Rubino. Il primo di questi compilatori è stato Morfik seguito da Google Web Toolkit , con i port su Python e Ruby sotto forma di Pyjs e RubyJS che sono seguiti qualche tempo dopo. Questi compilatori e le librerie di set di widget associate rendono lo sviluppo di applicazioni Ajax rich media molto più simile a quello di sviluppo di applicazioni desktop.
servizi web
Alcuni framework forniscono strumenti per creare e fornire servizi web. Queste utilità possono offrire strumenti simili al resto dell'applicazione web.
Risorse web
Un certo numero di nuovi framework Web 2.0 RESTful ora forniscono un'infrastruttura di architettura orientata alle risorse (ROA) per la creazione di raccolte di risorse in una sorta di ontologia del Web semantico , basata sui concetti del Resource Description Framework (RDF).
Guarda anche
- Confronto tra framework web
- Ricca applicazione web
- Elenco di framework di applicazioni Web avanzate
- Elenco dei framework dei servizi Web
- Server delle applicazioni
- Confronto tra i server delle applicazioni
- Quadro dell'applicazione
- Sicurezza delle applicazioni
- Convenzione sulla configurazione
- Non ripeterti (DRY)
- Stack di soluzioni
- Framework di applicazioni basate su Web per più telefoni