Quando si decide di fare un sito web, per prima cosa bisogna decidere il tipo di "stumento" da utilizzare. Principalmente ci si orienta tra l'affidarsi ad un CMS e l'affidarsi a un Frameworks1 ( tralasciamo i classici siti web statici fati solamente in HTML e CSS in quanto obsoleti). Per capire di cosa stiamo parlando iniziamo con il dire che i CMS (Sistemi di gestione dei contenuti) riducono, per l'utente che lo usa, la necessità di avere conoscenze specifiche di programmazione, mentre un frameworks fornisce una serie funzionalità che è possibile utilizzare per creare un sito personalizzato.
Cosa sono i CMS
I CMS, come abbiamo detto sopra, sono un sistema che permette di gestire i contenuti senza la necessità di una conoscenza specifica. Tra i Content Management Systems più famosi spiccano Wordpress, Joomla!, Drupal, Magneto, Wix.
Le caratteristiche di ogni CMS sono diverse ma il loro nucleo e metodo di utilizzo è suppergiù il medesimo:
- l'utente installa sul suo server il CMS tramite semplici passaggi (solitamente 1 o 2)
- sceglie un template2 tra quelli disponibili
- Inserisce i contenuti
- Attiva eventuali Plug-in3
Da questi passaggi si evince che un CMS non necessita di nessuna conoscenza di programmazione in quanto si bassa su moduli preinstallati.
Cos'è un Frameworks
Un framework è un'architettura logica di supporto su cui un software può essere progettato e realizzato (quindi non è un linguaggio di programmazione!). La sua funzione è quella di creare una infrastruttura generale, lasciando al programmatore il contenuto vero e proprio dell'applicazione. Lo scopo di un framework è infatti quello di risparmiare allo sviluppatore la riscrittura di codice già scritto in precedenza per compiti simili.
Un Framework permette di interagire con un linguaggio di programmazione (e, come nel caso di .Net, di compilarne il codice).
I frameworks più famosi per la creazione di applicazioni web sono:
- .Net ,che può interagire con diversi linguaggi che vanno dal C# al Vb.Net
- Laravel e Symfony, che interagisce con PHP
- Angular e Node.js, ottimi per Jscript
- Django, creato per Phyton
- Ruby on Rails, ottimo per usare Ruby
Si capisce subito che utilizzare un Frameworks richiede conoscenze specifiche e necessita di più tempo per la realizzazione di un progetto.
Personalizzazione
A chi utilizza principalmente i CMS per creare siti web piace molto il motto "perché reinventare la ruota se esiste già?" per riferirsi al fatto che per i CMS esistono centinaia di migliaia di templates disponibili (gratis o a pagamento) tra i quali scegliere e quindi non ha senso sforzarsi nel creare del nuovo codice e dei nuovi layout per un progetto web. In realtà la maggior parte di chi utilizza i CMS non ha molte conoscenze di programmazione e tende a nascondersi dietro questo modo di pensare.
Tramite un CMS, infatti si hanno a disposizione, come già accennato sopra, tutta una serie di strumenti, tools e plug-in tra i quali scegliere e facilmente installabili e configurabili ma…
Potrebbero insorgere complicazioni quando è necessario che il sito web si adatti alle proprie esigenze specifiche.
Con un framework, invece, si deve creare un progetto da zero, il che porta a realizzare caratteristiche uniche e distintive: i framework sono altamente personalizzabili mentre un CMS ha in genere dei limiti.
Con un CMS, ad esempio, non è possibile modificare la funzionalità di base o non si aggiornerà correttamente, mentre un framework non ha limiti!
La realizzazione di un progetto web tramite un frameworks anziché di un CMS comporta, quindi, dei tempi di lavorazione più lunghi (tenendo conto della progettazione, debug4, ecc.) ma un grado di personalizzazione maggiore.
Sicurezza
Sucuri (azienda leader nel monitoraggio e protezione dei siti web) ha rilevato che nel 2018 la maggior parte dei siti web hackerati (90%) erano fatti tramite Wordpress (che è il CMS più utilizzato), seguiti da Magneto e Joomla!.
Gli esperti hanno rilevato che la maggior parte degli attacchi avvenivano tramite plug-in o non aggiornamenti dei sistemi stessi.
Il motivo di questa grande quantità di attacchi è presto chiarita: i CMS ed i relativi Plug-in, sono per la maggior parte progetti Open Source5 e quindi chiunque ne può vedere il codice sorgente ed eventualmente le vulnerabilità (così come chiunque può correggerle!)
Un progetto che utilizza un frameworks, invece, è quasi sempre scritto tramite un codice personalizzato e specifico da chi lo crea e quindi (a parte le vulnerabilità delle infrastrutture) risulta meno soggetto ad attacchi hacker.
Un framework ben sviluppato è molto più sicuro di un CMS generico, anche se i sistemi di gestione dei contenuti hanno spesso plug-in scritti per rafforzare la loro sicurezza.
Flessibilità
Indipendentemente dal tipo di progetto che si vuole creare può nascere la necessità di dover integrare lo stesso con delle funzionalità non previste come ad sistemi di CMR (customer relationship management ovvero la gestione dei rapporti con i clienti) che possano interagire con altri strumenti e/o siti, come nel caso di Salesforce6.
Un progetto sviluppato tramite un framework sarà benissimo in grado di integrarsi e modellarsi con ogni necessità, mentre un progetto creato tramite un CMS dovrà "adattarsi" in base ai plug-in disponibili oppure affidarsi alla realizzazione dei plug-in personalizzati tramite un programmatore o un' agenzia con costi molto elevati.
Certo esiste anche la possibilità di creare progetti personalizzati che si basano sul core di un CMS ma in questo caso i costi partono, spesso, dai 5.000 euro superando, a volte, i 10.000, quindi non molto lontani (a volte anzi superiori) da quelli della realizzazione di una piattaforma web tramite l'uso di un frameworks.
Quando si parla di flessibilità, quindi, un frameworks offre un grado di libertà a 360° a fronte di costi di sviluppo più alti, mentre un CMS risulta molto più limitato con un costo minore.
Cosa segliere?
I CMS ed i Frameworks cono strumenti completamente diversi e la scelta di utilizzare l'uno anziché l'altro dipende da vari fattori. Prima di scegliere quale metodo di sviluppo scegliere è bene considerare alcuni punti:
- La quantità di tempo che si è disposti a investire su di un progetto
- La quantità di soldi che si possono/vogliono investire sullo stesso
- L'unicità del progetto ed il suo grado di flessibilità
- Il target al quale il progetto è destinato
- Il grado di sicurezza di cui si necessita
Sicuramente per il blog personale che non necessita di troppe visite o anche di un semplice negozio sotto casa l'utilizzo di un CMS può rappresentare una scelta oculata, laddove, nel caso ci si affidi ad un azienda o a un professionista, i costi non siano troppo elevati.
Se il progetto riguarda invece un progetto web che deve interagire con i clienti, presentare prodotti e come target si designi traguardi elevati è meglio iniziare subito con un Frameworks ( meglio se .net) onde evitare poi di dover ricominciare tutto da capo.
Ricordiamo, infine, che pochissimi degli utenti che accederanno ad un sito web sono in grado di capire con quale tecnologia sia stato sviluppato, ma prestano più attenzione alla fruibilità del sito, ai contenuti e a quanto sia conforme alle sue necessità.
1 Per una spiegazione di cosa sia un frameworks si consiglia di leggere il precedente articolo "Php o .Net? Facciamo Chiarezza"
2 Il template nel web è un modello usato per separare il contenuto dalla presentazione grafica, e per la produzione in massa di pagine Web.
3 Con il termine plug-in, in questo caso, ci si riferisce a programma non autonomo che interagisce con un altro programma per ampliarne o estenderne le funzionalità originarie.
4Nella programmazione informatica il debug è l'attività di ricerca e correzione degli errori (bug) in un programma.
5 Letteralmente "sorgente aperta", indica un software il cui codice sorgente è rilasciato con una licenza che lo rende modificabile o migliorabile da parte di chiunque.
6 Salesforce è la più importante piattaforma per la gestione delle relazioni con i clienti (CRM)