Mokabyte

Dal 1996, architetture, metodologie, sviluppo software

  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti
Menu
  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti
Cerca
Chiudi

Nel numero:

109 luglio
, anno 2006

Device Independence

Approccio server side mediante Cocoon e DELI

Avatar

Angelo Stefani

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 "La Sapienza", sta lavorando alla tesi di laurea "Adattamento di contenuti su dispositivi eterogenei" avente come argomento principale Cocoon.
Informazioni più aggiornate sono disponibili su http://angelostefani.blogspot.com/

MokaByte

Device Independence

Approccio server side mediante Cocoon e DELI

Angelo Stefani

Angelo Stefani

  • Questo articolo parla di: Frameworks & Tools, Programmazione & Linguaggi

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

  • Facebook
    Twitter
    LinkedIn
    Avatar

    Angelo Stefani

    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 "La Sapienza", sta lavorando alla tesi di laurea "Adattamento di contenuti su dispositivi eterogenei" avente come argomento principale Cocoon.
    Informazioni più aggiornate sono disponibili su http://angelostefani.blogspot.com/

    Angelo Stefani

    Angelo Stefani

    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 "La Sapienza", sta lavorando alla tesi di laurea "Adattamento di contenuti su dispositivi eterogenei" avente come argomento principale Cocoon. Informazioni più aggiornate sono disponibili su http://angelostefani.blogspot.com/
    Tutti gli articoli
    Nello stesso numero
    Loading...

    La progettazione di applicazioni web con UML

    III parte: un esempio

    Gestire un database con JavaBeans

    I parte: Il mapping dei record

    SOA: dalla teoria alla pratica

    X parte: Esempio pratico (2)

    Un framework per Web 2.0

    Il nuovo framework di JBoss

    Offshore

    II parte: Best practices per la gestione di progetti offshore (1)

    Nella stessa serie
    Loading...

    Cocoon: una piattaforma di pubblicazione di dati XML

    II parte: esempi di utilizzo

    Cocoon: una piattaforma di pubblicazione di dati XML

    I parte: introduzione al framework

    Mokabyte

    MokaByte è una rivista online nata nel 1996, dedicata alla comunità degli sviluppatori java.
    La rivista tratta di vari argomenti, tra cui architetture enterprise e integrazione, metodologie di sviluppo lean/agile e aspetti sociali e culturali del web.

    Imola Informatica

    MokaByte è un marchio registrato da:
    Imola Informatica S.P.A.
    Via Selice 66/a 40026 Imola (BO)
    C.F. e Iscriz. Registro imprese BO 03351570373
    P.I. 00614381200
    Cap. Soc. euro 100.000,00 i.v.

    Privacy | Cookie Policy

    Contatti

    Contattaci tramite la nostra pagina contatti, oppure scrivendo a redazione@mokabyte.it

    Seguici sui social

    Facebook Linkedin Rss
    Imola Informatica
    Mokabyte