ICEfaces: un framework Ajax basato su componenti JSF

ICEfaces è un framework per applicazioni Ajax che permette agli sviluppatori Java EE di creare e distribuire con facilità applicazioni web 2.0 (rich Internet applications – RIA), thin-client in puro Java. ICEfaces è un prodotto completo che può essere usato su progetti nuovi o preesistenti a costo zero!

ICEfaces fa leva sull’intero ecosistema standard di strumenti e ambienti di esecuzione Java EE. Le funzionalità e l’interattività delle Applicazioni web 2.0 sono sviluppate in Java puro, secondo il modello thin-client. Non sono necessari Applet o plugin dei browser. Le applicazioni ICEfaces sono applicazioni JavaServer Faces (JSF), quindi le competenze di sviluppo Java EE si applicano direttamente e gli sviluppatori Java non devono apprendere nuove tecnologie. Non è necessario sviluppare alcun codice JavaScript.

Architettura

Modello di sviluppo delle applicazioni

Il principale obiettivo dell’architettura ICEfaces è di fornire agli sviluppatori un modello di sviluppo Java Enterprise che sia familiare, e non esporli assolutamente alle complessità dello sviluppo Ajax a basso livello in JavaScript. La chiave dell’architettura ICEfaces è un modello applicativo centrato sul server, dove tutta la logica applicativa è sviluppata in puro Java, e viene eseguita in un ambiente di runtime standard Java Application Server. Questo significa che l’infrastruttura esistente Java EE, gli ambienti di sviluppo, e le “best practices” vengono preservati.

Le ricche funzionalità di presentazione di ICEfaces sono basate sullo standard JavaServer Faces. Lo sviluppo ICEfaces è in sostanza uno sviluppo di JSF, che promuove una architettura basata sui componenti usando definizioni dell’interfaccia basate su tag e data binding dinamico nel modello dell’applicazione residente sul server. Gli sviluppatori possono costruire una applicazione standard JSF che aderisce al ciclo di vita standard server – centrico JSF, e beneficiare automaticamente delle ricche funzionalità Ajax di ICEfaces, che include tutti i componenti standard JSF oltre ad un set di componenti estesi nellaICEfaces Component Suite .

L’architettura di ICEfaces

Le complessità dell’implementazione di ICEfaces sono completamente trasparenti allo sviluppatore; è tuttavia utile comprendere cosa succede dietro le quinte in una applicazione ICEfaces. Ci sono tre elementi chiave nell’architettura ICEfaces, illustrati nel diagramma seguente.

L'architettura di ICEfaces

Il framework di ICEfaces

Il framework di ICEfaces è una estensione del framework standard JSF, con la differenza chiave per quanto riguarda la fase di render. Nello standard JSF, la fase di render produce nuovo codice mark-up (html) per lo stato corrente dell’applicazione, e lo invia al browser, che deve ridisegnare tutta la pagina. Con il framework ICEfaces, il render avviene su una copia lato server del DOM, e vengono inviate al browser solo le modifiche incrementali con un ponte Ajax (Ajax Bridge) dal piccolo peso. Questo risulta in un aggiornamento scorrevole della pagina del browser che deve ri-renderizzare solo le parti modificate.

Ajax Bridge (Connessione Ajax)

L’Ajax Bridge è costituito delle componenti server e client che coordinano la comunicazione Ajax tra il browser e l’applicazione sul server. Il Bridge si occupa di inviare le modifiche incrementali della fase di Render al markup di presentazione sul client, e di riassemblarle nel DOM del browser per visualizzare le modifiche. Il Bridge cattura anche l’interazione dell’utente con la presentazione, e invia gli eventi utente all’applicazione per farli processare nel ciclo di vita standard JSF. I componenti ICEfaces implementano anche il meccanismo partial submit che permette la generazione automatica degli eventi attraverso il bridge, così lo sviluppatore non è esposto al codice a basso livello degli eventi. L’Ajax Bridge viene istanziato automaticamente al caricamento della prima pagina dell’applicazione e coordina tutti gli aggiornamenti della presentazione e la trasmissione degli eventi per tutto il ciclo di vita dell’applicazione.

ICEfaces Component Suite

LaICEfaces Component Suite offre tutti i costrutti per l’interfaccia utente dell’applicazione. Include sia i componenti JSF standard che un’ampia scelta di componenti avanzati e permette allo sviluppatore di assemblare interfacce applicative sofisticate in maniera efficiente. Tutti i componenti ICEfaces sfruttano lato server il meccanismo Direct-to-DOM che è offerto dal framework, e usano l’attributo “partial submit” per facilitare la gestione automatica degli eventi di comunicazione generati dall’interazione utente con l’interfaccia. I componenti ICEfaces possono inoltre essere arricchiti con effetti grafici e di interazione di script.aculo.us come drag and drop.

Ajax Push

Ajax Push è una funzionalità del framwork ICEfaces che permette l’aggiornamento dell’interfaccia utente nel browser a seguito di eventi che avvengono sul server. Ogni applicazione web in cui gli utenti devono consultare dati dinamici può beneficiarne, visto che Ajax Push permette di sincronizzare i dati con aggionamenti istantanei e dinamici. Quando vari utenti stanno interagendo con gli stessi dati, Ajax Push permette funzionalità di collaborazione in tempo reale, visto che ciascuno può istantaneamente essere informato delle azioni degli altri utenti.

Funzionamento di Ajax Push

Il meccanismo che rende possibile l’Ajax Push è l’inversione di protocollo HTTP (anche noto come long polling). Questa tecnica richiede di tenere una connessione aperta dal browser al server con una richiesta bloccante, e quindi soddisfare la richiesta quando qualche cambiamento di stato nell’applicazione richiede un aggiornamento della presentazione. Il meccanismo è illustrato nel diagramma sotto.

L'AjaxPush in ICEfaces

Grazie a questa funzionalità ICEfaces offre le seguenti caratteristiche:

  • Monitoraggio dello stato della connessione: per poter mantenere connessioni affidabili ICEfaces include un meccanismo che controlla attivamente lo stato di salute della connessione, e invia avvisi quando sono rilevati problemi nella stessa..
  • Condivisione della connessione del Browser: Superando il limite di connessioni dei browser più datati, ICEfaces facilita la condivisione di connessioni push tra viste multiple nella stessa istanza del browser. Questo significa che tab o finestre diverse, aperte sulla stessa applicazione push, continuano a funzionare. Inoltre portlet push diverse (singole applicazioni che fanno uso della connessione push) possono coesistere e condividere la stessa connessione.
  • Rendering ottimizzato: ICEfaces utilizza il ciclo di vita JSF per forzare il rendering dei client che richiedono un aggiornamento. Il framework offre le funzionalità necessarie alla sincronizzazione, e ottimizza il rendering unendo le richieste (request coalescing) e grazie ad un pool di thread configurabile.
1 Stella2 Stelle3 Stelle4 Stelle5 Stelle (Nessun voto ancora)
Loading...
You can leave a response, or trackback from your own site.

Leave a Reply

*