Invia ad un amico



-->

Apps

altri articoli nella sezione:

Realizzare un Content Management System con Flash

di Filippo Gregoretti
Pubblicato il 11 Ottobre 2003

Non è facile analizzare un tema del genere. La complessità e la vastità di un Content Management System (d’ora in poi CMS) è tale che sarebbe impossibile trattarne la realizzazione nell’ambito di un solo articolo. Vorrei però parlare del perchè, di fronte alla necessità di realizzare un CMS, abbiamo scelto Flash come strumento principale per costruirne l’interfaccia utente.

Cosa è un CMS

Può essere definito CMS qualsiasi strumento che operi modifiche sui contenuti di un progetto di comunicazione (non solo per il web). Paradossalmente, anche degli Editor di file HTML come Dreamweaver o Frontpage posso essere definiti come tali. Un vero CMS, però, deve necessariamente limitare l’utente nelle operazioni che può compiere e, allo stesso tempo, facilitarle al massimo. Un facile esempio di CMS è costituito dai vari servizi di Blog che troviamo in rete. Quando aggiorniamo un blog, è sufficiente selezionare “aggiungi un articolo”, e riempire le varie finestre di testo (titolo, testo, ecc.), per poi vedere modificato sostanzialmente il sito del Blog con l’aggiunta del nuovo articolo. In questo caso usiamo il sistema di CMS del Blog per aggiornare un file di contenuti, e sulla base dei contenuti stessi verrà visualizzato il sito internet del Blog.
Ovviamente il Blog è un esempio molto semplice, ma esistono sistemi di CMS grandi e complessi fino ad arrivare alla gestione multi-utente di diversi siti, con lingue, livelli di accesso, ecc.
Sistemi di CMS di grandi dimensioni (e dai grandissimi costi) sono quelli offerti da Vignette, Informix, ecc. Fino ad arrivare a sistemi open source realizzati in Perl o PHP come Movable type, Cfxml, Nucleus, ecc. (il mio blog su Flash è basato su CFxml).
Quindi, il CMS sostanzialmente è uno strumento che, applicato a siti ben progettati, ne consente la manutenzione e l’aggiornamento con il minimo dispendio di tempo, e senza necessitare di conoscenze tecniche.

Content & Presentation

Nell’evoluzione del web come strumento di comunicazione, siamo arrivati tutti a comprendere che la parte più importante di un progetto risiede nei contenuti. Inoltre, la separazione tra “content” e “presentation”, ossia, tra i contenuti testuali e visivi e l’interfaccia di visualizzazione degli stessi, è un punto cruciale di ogni progetto web di qualità. Come “qualità” intendo la possibilità di gestire aggiornamenti e manutenzione con un ragionevole costo in termini di lavoro e tempo. Mantenere il “content” autonomo ci consente anche di diffonderlo su diverse piattaforme senza duplicati, utilizzando invece come “presentation” standard e comportamenti diversi al fine di visualizzare le informazioni anche su altri dispositivi come un palmare, un telefono, ecc.

Aggiornare i contenuti

Sia come professionisti che nell’ambito di strutture più o meno grandi, tutti ci siamo scontrati con la “rogna” degli aggiornamenti. Aggiornare un progetto web, anche se ben realizzato, può risultare dispendioso sia in termini di tempo che di risorse economiche. Quante volte, nel mezzo di un progetto che ci coinvolge al 100%, abbiamo dovuto interrompere una lunga concentrazione, personale o di gruppo, rimettendo la mani su progetti passati per rispondere a un’emergenza del cliente cui “non si può dire di no”?. Effettuare questi aggiornamenti a mano, peggio ancora se direttamente in HTML o nel file “.fla”, è davvero fastidioso e neanche remunerativo.
Anche per siti di piccole dimensioni la manutenzione può essere delegata a un sistema di CMS.
Il cliente, con a disposizione un CMS molto semplice da usare e a prova di errore, verrà messo in condizione di dedicarsi a ciò che conosce meglio, ossia i contenuti del suo sito, senza dover dipendere dall’agenzia per qualsiasi modifica non sostanziale.
Il CMS può essere anche mantenuto internamente in modo tale che, di fronte alla necessità di un aggiornamento, anche persone senza specifiche conoscenze tecniche possono effettuare modifiche, lasciando le risorse più evolute libere di dedicarsi allo sviluppo di nuovi progetti.

La struttura di un CMS

Come abbiamo già visto, il nucleo centrale del CMS è il content. Il content normalmente risiede su un Server, e può essere immagazzinato sotto forma di un database, di un file di testo (XML o altro), e di tutti gli altri file necessari (immagini, suoni, documenti, ecc.).
Per modificare il content abbiamo bisogno di scrivere sul Server. Per intervenire su un hard disk nel server, ovviamente dobbiamo disporre di un “back end”, ossia, un’applicazione residente sul server da comandare per effettuare modifiche sui file. L’applicazione back end, o Server Side Application (SSA), può essere realizzata con diversi strumenti: Perl, PHP, ColdFusion, .Net, Java, C++, ecc. La scelta dipende dalle nostre esigenze e capacità.
Per “pilotare” l’SSA dobbiamo disporre di un “Front-end”, ossia l’interfaccia tramite cui l’utente può visualizzare, modificare e salvare i contenuti.

L’interfaccia Front-end in JavaScript.

Normalmente l’interfaccia del CMS viene realizzata in JavaScript (il linguaggio che consente di aggiungere interattività e scripting alle pagine HTML), ma tale sistema, oltre alle ovvie limitazioni di visualizzazione offerte dall’HTML, garantisce ore di mal di testa e di combattimento con Bug surreali e problemi di compatibilità tra le varie versioni di browser.
Inoltre, lavorando con pagine e applicazioni in JavaScript residenti sul Server, ogni input dell’utente necessita di risposta da parte del Server, portando a rallentamenti e rischi di sicurezza.

L’interfaccia Front-end in Flash

Flash si è rivelato, e continua a farlo, come lo strumento più indicato per realizzare velocemente interfacce gradevoli e funzionali. La mancanza di limiti nella visualizzazione e nella costruzione di interattività avanzata permette di creare sistemi complessi interamente utilizzando Flash.
Preziose risorse, prima impegnate nel risolvere i bug del JavaScript e nel trovare soluzioni basate sui semplici menu a tendina, possono ora concentrarsi sullo sviluppo avanzato e sulla ricerca.
Inoltre, essendo Flash interpretato da un plugin, una volta sicuri che sia installato il plugin giusto, l’applicazione è a prova di bug, anche se, naturalmente, non dei bug causati da noi ;).

Il CMS “Bonsai” realizzato con Flash

Parte della GUI di bonsaiRealizzando progetti presso Forteyang, la Web Agency di cui faccio parte, ci siamo trovati spesso nella necessità di realizzare CMS per la gestione di sistemi che variano dal piccolo sito corporate fino al portale di grandi dimensioni. Per affrontare queste diverse strutture abbiamo realizzato due sistemi in grado di interagire tra loro: Naga e Bonsai. Il sistema di CMS “Bonsai” è basato sulla semplice struttura Content-Server Side Application-Client Side Application. L’obiettivo è quello di ottenere il massimo delle prestazioni senza la necessità di strutture hardware esagerate. La configurazione attuale (sono in sviluppo sistemi più elaborati) immagazzina i contenuti in alcuni file XML. La scelta dell’XML è basata su alcuni principii: XML è un semplice file di testo; non è necessaria alcuna installazione particolare sul server; il server non viene stressato da richieste a database. Il formato XML presenta molti altri vantaggi che magari approfondiremo in un secondo articolo.

La Server Side Application di Bonsai

Come sappiamo, Flash da solo non può effettuare operazioni di scrittura sul server. Per scrivere su di un server web dobbiamo comunicare con l’applicazione residente sul server stesso, che scriverà i dati su disco locale. La SSA di Bonsai è interamente scritta in Perl, forse uno dei linguaggi di scripting più complessi, ma sicuramente molto snello nell’esecuzione e molto affidabile dal punto di vista della sicurezza. La SSA gestisce l’autenticazione dell’utente, la scrittura dei dati sul disco, e la gestione degli album di file (album di immagini, album di documenti, ecc.).
La SSA viene pilotata dall’interfaccia in Flash attraverso semplicissimo comandi getURL, il cui parametro sarà una chiamata alla SSA

Per esempio:
getURL(“http://www.site.com/cgi-bin/bonsai_manager.cgi?user=pippo”)

La snellezza del Perl consente l’installazione di Bonsai anche su shared hosting, e non necessariamente su server dedicati, senza diminuzione in prestazioni.

La Client Side Application di Bonsai in Flash

Inizialmente le interfaccie CMS in Flash di Bonsai venivano inserite in pagine web da richiamare on-line. Poi gradualmente siamo giunti alla realizzazione di una Stand-alone Application, ossia un eseguibile, in grado di girare indipendentemente dal Browser. In questo modo, oltre a risolvere alcuni problemi legati alla sicurezza, possiamo consegnare ai clienti un vero e proprio “control panel” del sito, dal quale gestirne i contenuti e le varie applicazioni. Bonsai, una volta effettuata l’autenticazione, consente di pilotare tutte le SSA del sito in modo intuitivo, gradevole e velocissimo. Uno dei punti di forza è che non c’è bisogno di interrogare continuamente il server. La prima interrogazione avviene al momento di caricare in memoria il file dei contenuti. Una volta caricato (teniamo presente che un file XML di contenuti di un sito di medie dimensioni raramente supera i 300 Kb), il file verrà “presentato” dall’interfaccia utente in Flash che ci aiuterà a navigarne i contenuti in modo intuitivo. A questo punto possiamo effettuare tutte le modifiche senza fare più chiamate al server, se non quando siamo soddisfatti, e “salviamo” il file.
A quel punto Bonsai chiamerà il server e invierà le modifiche che verranno scritte sul disco dalla SSA. Bonsai, sempre utilizzando Flash, è in grado di importare immagini in 50 formati, convertirle in jpeg, e inviarle via FTP sul server. Il tutto anche se l’utente è privo di conoscenze tecnologiche (l’incubo di noi sviluppatori!).

Un’esempio della Stand-Alone Client Side Application Bonsai, realizzata in Flash

La Stand Alone Application

Aggiungere potenzialità alle applicazioni in Flash non è difficile. Come sappiamo, Flash lavora attraverso un plugin e una “host application”. Normalmente la host è il browser, che attraverso il Plugin ci consente di visualizzare il file Flash. Con il comando “FSCommand” possiamo inviare segnali alla Host Application, ossia il browser.
Immaginiamo di utilizzare come Host Application, anzichè il browser, un’altra applicazione, che estenda le funzionalità di “FSCommand” al punto di farci eseguire compiti complessi come trasferimenti FTP, scrivere file sul disco, interrogare il sistema operativo, ecc.
Ci sono moltissime Host Application che estendono i file Flash e che ci consentono di realizzare, usando il nostro amato ActionScript, vere e proprie applicazioni in grado di compiere operazioni molto complesse, senza però dipendere dalle librerie grafiche del sisema operativo: il plugin Flash è di per sè una libreria grafica!

Estendere le Applicazioni in Flash

Personalmente la Host Application che preferisco è SWF Studio della Northcode che, anche se abbastanza complesso, è quello che più si avvicina alle mie esigenze. Esistono però molti altri “compilatori” per Flash, tra i quali: Flash Studio Pro della MultiDmedia, FlashJester, ecc.
Se siete interessati all’argomento, vi consiglio l’ottimo thread di discussione del forum di FlashKit dedicato appositamente all’argomento.

Altri utilizzi di Flash per CMS

Come abbiamo visto, Flash è molto più versatile del JavaScript nel presentare ed elaborare i dati. Talvolta ci troviamo nella necessità di installare CMS più complessi per i quali usiamo il sistema NAGA, che gira su server dedicati. Un esempio è la realizzazione degli Abstract da parte di utenti di società scientifiche. Senza entrare nel dettaglio (ve lo risparmio) per realizzare un Abstract, oltre ai soliti dati testuali e numerici, c’è bisogno di elaborare tabelle, grafici, ecc.
Il tutto può essere fatto anche tramite JavaScript, ma al costo di innumerevoli chiamate al server e di uno sforzo incredibile nel realizzare un’interfaccia HTML.
A questo punto, all’interno della normale interfaccia HTML che prende i dati testuali e numerici, si inserisce un piccolo filmato Flash, che invece presenta un’interfaccia di disegno potente e veloce da caricare, sicuramente compatibile con tutti i browser, sulla quale l’utente può generare il suo grafico anche complesso. L’idea di fare una cosa del genere in JavaScript mi fa venire i brividi…
Piccoli filmati Flash possono essere inseriti anche per la semplice visualizzazione dei dati. Uso spesso una mappa dell’Italia, che altro non è se non un filmatino flash da 4Kbytes, che legge i dati da un sistema (xml, database, non importa) e li presenta in modo carino e interattivo. (vedi esempio). Inoltre, tutta la configurazione della mappa (comportamenti, colori, animazioni, velocità, font, ecc.) sono immagazzinati in un file esterno, lasciando tutta la libertà ai grafici per adattarla al loro progetto senza coinvolgere gli sviluppatori. Il cliente aggiorna i dati con un sistema di CMS tradizionale (in questo caso NAGA), e l’applicazione Flash li presenta in modo gradevole e intuitivo. Questo, in piccolo, schematizza uno dei motivi per cui abbiamo scelto Flash per realizzare un CMS.

Conclusioni

Realizzare un CMS è solo uno dei tanti usi di Flash. Lo sviluppo di applicazioni in Flash, una volta risolti alcuni problemi di base, è molto semplice. Posso sintetizzare i motivi più importanti che mi hanno spinto in questa direzione in pochi punti:
Finalmente non dobbiamo testare un’interfaccia su decine di browser e sistemi.

Gli eseguibili realizzati con le Host Application esterne si appoggiano su funzioni già sviluppate e testate da altri (come effettuare FTP, scrivere su disco, ecc).
Realizzare un’interfaccia in Flash lascia la libertà totale di sperimentare, e ci affranca dalle brutte e noiose GUI del sistema operativo.
Un Control Panel esterno su Cd-Rom rende molto più “fisico” il progetto al momento della consegna al cliente.
ActionScript è un linguaggio libero, che lascia spazio ad errori di progettazione, ma allo stesso tempo offre creatività totale, ed è per questo che, come me, tanti altri lo amano.