Device Independence

Approccio server side mediante Cocoon e DELIdi

Come si può realizzare un‘applicazione Web indipendente dal dispositivo destinatario? DELI è una libreria open-source che consente alle servlet Java di risolvere richieste HTTP contenenti informazioni CC/PP o UAProf e di interrogare il profilo ottenuto.

Introduzione

Fino ad alcuni anni fa il modo più diffuso per accedere al Web era attraverso un personal computer o una workstation. Dalla metà  del 2000 il numero delle differenti tipologie di dispositivi che possono accedere al Web è cresciuto molto rapidamente. Si è passati da una situazione dove si avevano poche classi di dispositivi con, sostanzialmente, le stesse caratteristiche e capacità  di base ad un elevato numero di dispositivi aventi una varietà  di caratteristiche molto ampia.
Questa evoluzione ha portato alla luce la necessità  di realizzare contenuti per il Web tenendo in forte considerazione il problema dell‘indipendenza dal dispositivo finale.
Con l‘espressione "indipendenza dal dispositivo finale" si cerca di definire le logiche e le pratiche di interazione tra client e server tali da consentire un‘esperienza d‘uso del web efficiente e soddisfacente a prescindere dallo strumento tecnico utilizzato per l‘accesso.

Approcci per realizzare applicazioni indipendenti dal dispositivo

Come si può realizzare un‘applicazione Web indipendente dal dispositivo destinatario?
Gli approcci esistenti per ottenere una migliore indipendenza dal dispositivo si suddividono in tre categorie:

  • Intermediate adaption
  • Client-side adaption
  • Server-side adaption

La distinzione viene fatta in base a dove avviene il controllo del processo di adattamento.
Gli adattamenti server-side offrono il massimo controllo sui contenuti inviati, includendo anche la possibilità  di poter cambiare radicalmente la quantità  di contenuti, lo stile, la modalità  di navigazione e l‘impaginazione. Per poter effettuare l‘adattamento più appropriato, tuttavia, il server deve avere informazioni sufficienti sul delivery context, includendo le capacità  del dispositivo ricevente.

Delivery Context

Indipendentemente da dove avvengano gli adattamenti, questi devono essere basati sulle informazioni riguardanti il delivery context. Tali informazioni possono includere le delivery device‘s capabilities, le caratteristiche della rete, le preferenze dell‘utente, e altri parametri opzionali riguardanti le applicazioni come la lingua prescelta dall‘utente e la localizzazione.
Alcune di queste informazioni sono disponibili nell‘intestazione standard del protocollo HTTP della richiesta della pagina Web.
Sono stati definiti due standard per la descrizione del delivery context basati sul Resource Description Framework (RDF):

  • Composite Capabilities / Preferences Profile (CC/PP) definito dal W3C
  • User Agent Profile (UAProf) definito dal WAP Forum

Questi standard consentono la trasmissione efficiente delle informazioni riguardanti il delivery context al server persino tramite reti wireless con una ridotta larghezza di banda. Anzichà© inviare un profilo intero per ogni richiesta, il client invia soltanto un riferimento ad un profilo, il quale, è memorizzato all‘interno di un terzo dispositivo noto come profile repository. Inoltre, viene anche inviata una lista di differenze specifiche per il client in questione. Il processo di riassemblamento finale del profilo, il quale è costituito dalle profile references e dalle differenze, è meglio noto come profile resolution.

Utilizzare DELI in ambiente Apache Cocoon

Come abbiamo visto, per fornire contenuti ottimizzati per client differenti, un Web server ha bisogno della descrizione delle caratteristiche del client.
HP Labs ha realizzato una libreria open-source chiamata DELI, la quale consente alle servlet Java di risolvere richieste HTTP contenenti informazioni CC/PP o UAProf e di interrogare il profilo ottenuto.
Utilizzata in ambiente Apache Cocoon, DELI rende disponibili gli attributi CC/PP o UAProf come parametri di ingresso all‘interno di stylesheet XSLT.
Andiamo ora a vedere in pratica come tutto questo sia possibile mediante un semplice esempio di utilizzo di DELI in ambiente Apache Cocoon.
Vedremo come sia possibile ottenere all‘interno di stylesheet XSLT utili informazioni sul client richiedente. Utilizzeremo queste informazioni per adattare i contenuti delle pagine sia in formato HTML che WML.
Per rendere disponibili le informazioni riguardanti i profili all‘interno degli stylesheet, si deve aggiungere la clausola al match che specifica lo stylesheet all‘interno del file sitemap.xmap di Cocoon.

Vediamo il codice sorgente del file sitemap.xmap:

Vediamo il codice sorgente del file index.xml:

DELIEsempio di utilizzo di DELISe il client supporta le immagini vedrete il logo di CocoonAltrimenti non inserisco l‘immagine. Eviterò cosଠdi utilizzare inutilmente la banda della connessione.

Per ottenere le informazioni sulle caratteristiche del client è necessario specificare in parametro all‘interno degli stylesheet XSLT utilizzati.
Utilizzeremo le informazioni acquisite per adattare i contenuti delle pagine sia in formato HTML che WML.
Nel procedimento seguito per ottenere tutto ciò, DELI "appiattisce" i profili omettendo le informazioni inerenti i componenti. Perciò, per esempio, per ottenere l‘attributo CcppAccept è necessario utilizzare l‘espressione XPath deli-capabilities/browser/CcppAccept mentre per ottenere l‘attributo ScreenSize si deve utilizzare l‘espressione XPath deli-capabilities/browser/ScreenSize. Inoltre, nel caso in cui gli attributi contengano valori multipli, ad esempio Bags o Sequences, questi valori vengono separati utilizzando elementi

  • .
    Perciò, per ottenere gli elementi individualmente, si deve utilizzare, ad esempio, la seguente espressione XPath deli-capabilities/browser/CcppAccept/li.

    Vediamo il codice sorgente del file xml2html.xsl:

    DELI - esempio

    immagini non supportate!
    Elenco di alcune delle caratteristiche del client:
    ColorCapable:
    ImageCapable:
    TablesCapable:
    TextInputCapable:
    FramesCapable:
    SoundOutputCapable:

    Vediamo il codice sorgente del file xml2wml.xsl:

    immagini non supportate!
    Elenco di alcune delle caratteristiche del client:
    ColorCapable:
    ImageCapable:
    TablesCapable:
    TextInputCapable:
    FramesCapable:
    SoundOutputCapable:


    Conclusione

    Dopo aver introdotto le problematiche principali riguardanti la realizzazione di un‘applicazione Web indipendente dal dispositivo destinatario, abbiamo introdotto gli approcci e gli standard attualmente esistenti in materia.
    Abbiamo poi visto come DELI in ambiente Apache Cocoon consenta di adattare i contenuti su dispositivi eterogenei in maniera molto semplice.

    Riferimenti

    [1]
    Massimo Canducci, "XML", Apogeo, 2005

    [2]
    Aaron Skonnard - Martin Gudgin, "Essential XML Quick Reference", Addison-Wesley, 2002

    [3]
    Doug Tidwell "Mastering XML Transformations", O‘Reilly, 2003

    [4]
    http://www.w3.org/Style/XSL/

    [5]
    http://cocoon.apache.org/

    [6]
    Matthew Langham, Carsten Ziegeler,"Cocoon: Building XML Applications", New Riders, 2002

  • Condividi

    Pubblicato nel numero
    109 luglio 2006
    Angelo Stefani, nato a Vetralla (VT) il 30/03/1978. Dal 1992 al 1997 frequenta l‘ ITIS Leonardo da Vinci di Viterbo dove consegue il Diploma di Perito Industriale Capotecnico spec. Informatica. Attualmente iscritto al corso di laurea in Ingegneria Informatica della facoltà di Ingegneria presso l‘ Università degli studi di Roma…
    Articoli nella stessa serie
    Ti potrebbe interessare anche