Ricerca in FOLBlog

Feb 052009
 
closeQuesto articolo è stato pubblicato 8 anni 7 mesi 21 giorni giorni fa quindi alcuni contenuti o informazioni presenti in esso potrebbero non essere più validi. Questo sito non è responsabile per eventuali errori causati da questo problema.

image

Alcuni mesi orsono ho accennato all’imminente arrivo di un nuovo, rivoluzionario framework per lo sviluppo di applicazioni web complesse.
Con il deposito di brevetto effettuato nel dicembre scorso è ora possibile svelare alcuni aspetti e iniziare ad approfondire l’argomento.

Non ho esitato a definirlo rivoluzionario per ciò che consente di fare e la facilità con cui rende possibile creare applicazioni web complesse in poco tempo, ottenendo risultati quasi impensabili con gli attuali migliori strumenti si sviluppo web.

Oggi ho il piacere e l’onore di pubblicare un’intervista realizzata con l’ideatore del framework, Davide Gaibotti, laurea in Ingegneria Informatica al Politecnico di Milano, che ne ha implementato una versione perfettamente funzionate utilizzata attualmente dalla sua società, Evoluzione Sistemi, per lo sviluppo di applicazioni web.

Enrico: “Innanzitutto complimenti; ho avuto il piacere di vedere all’opera una applicazione realizzata con il tuo framework e ne sono rimasto molto colpito. (vedi snapshot)
Com’è nata l’idea del framework? Qual’è stata la considerazione o la motivazione alla base?”

Interfaccia applicazione WeD

Davide: “Lo sviluppo di applicazioni web è oggi caratterizzato da una molteplicità di tecnologie, sia lato server che lato client.
Quando il progettista inizia a studiare l’architettura di questo tipo di applicazioni, deve ben presto porsi il problema di come disporre le varie parti logiche sui vari livelli dell’infrastruttura web e conseguentemente deve decidere quali tecnologie adottare.
Deve scegliere il tipo di tecnologia server, come ASP, ASP.net, PHP, Java Servlet, etc… il tipo di tecnologia client, come HTML, JavaScript, VBScript, Flash, Applet Java, etc… il tipo di refresh delle pagine: refresh completo o refresh parziale.
Anche se la scelta di una o più di queste tecnologie potrebbe sembrare solo una questione di preferenze del progettista, di fatto, ha un forte impatto sul come devono essere progettate le componenti server e client, sull’usabilità dell’applicazione e sull’adeguamento agli standard.
Durante lo sviluppo di applicazioni desktop, il progettista ha invece normalmente a disposizione un unico framework di riferimento, come Microsoft.NET o J2EE ed un unico linguaggio di programmazione, spesso Object Oriented come C# o Java, sia per realizzare le componenti lato client che per realizzare quelle lato server.

Quasi sempre dispone inoltre di numerose librerie grafiche con oggetti complessi come Form, Button, TextBox, DropDown, ListView, TreeView, Grid ed altri che gli consentono di sfruttare a pieno le potenzialità grafiche dei moderni sistemi operativi, realizzando così applicazioni con una elevata user experience.
Conseguentemente, per il progettista, risulta molto diverso sviluppare un’applicazione web da una desktop.
WDF [questo è il nome del framework n.d.r.] rende invece possibile sviluppare un’applicazione WeD [WeD application, dove WeD è l’acronimo di Web/Desktop, n.d.r.] utilizzando gli stessi strumenti e lo stesso paradigma utilizzato per lo sviluppo di applicazioni stand alone.

Enrico: “In sostanza si scrive il codice in uno dei linguaggi .NET esattamente come si farebbe per realizzare un’applicazione desktop, avendo a disposizione set di controlli simili a quelli che ritroviamo in questo tipo di applicazioni (Form, Button, TextBox, DropDown, ListView, TreeView, Grid, ecc.).?”

Davide: “Esattamente.”

Enrico: “Beh, ma anche con altri framework si possono realizzare delle interfacce con controlli avanzati, simili a quelli presenti nelle applicazioni desktop…”

Davide: “Attualmente, per costruire applicazioni web che seguano le direttive del W3C è necessario appoggiarsi, per la parte di codice residente lato client, alla coppia di tecnologie HTML/JavaScript. Queste tecnologie, per quanto potenti, soffrono tuttavia di una serie di problemi:

  • L’HTML non ha il concetto di finestre, bensì quello di pagine.
  • Il linguaggio JavaScript è un linguaggio interpretato e non appartiene alla categoria dei linguaggi object oriented pur avendo alcune caratteristiche similari.
  • Gli eventi grafici presenti all’interno delle pagine web non sono nativamente correlati con altrettanti eventi lato server.

Ne consegue che in diverse applicazioni risulta decisamente laborioso effettuare dei controlli sull’operatività dell’utente, tenendo conto inoltre che molti di questi controlli richiedono accesso alle componenti della business logic che si trovano lato server.”

Enrico: “Mi pare di capire quindi, che ad aver ispirato la nascita di WDF non sia tanto la necessità di rendere possibile la realizzazione di interfacce con controlli avanzati.
Interfacce complesse possono anche essere realizzate con strumenti come Flash, o framework come  ExtJS ma costringono ad una mole enormemente maggiore di lavoro; di fatto è questo il motivo per cui certe cose, pur tecnicamente realizzabili, non val la pena di implementarle.
Invece il vostro framework rende il processo produttivo delle applicazioni web efficiente quanto quello della realizzazione di applicazioni stand alone, riutilizzando efficacemente strumenti e competenze già in possesso della vostra azienda, facendovi risparmiare un mare di tempo. E’ così?”

Davide: “Si. WDF infatti mette a disposizione del progettista un framework che consente di sviluppare applicazioni web come se fossero applicazioni desktop e quindi modificando di fatto il paradigma di programmazione delle applicazione web stesse.
Il progettista può così ragionare con componenti complesse come Form, Button, TextBox, DropDown, ListView, etc… all’interno di un linguaggio object oriented senza dover pensare a come queste componenti lavoreranno lato client.
WDF nasconde le logiche di comunicazione tra client e server e fa sì che sia il più naturale possibile poter intercettare gli eventi client sul lato server.”

Enrico: “In pratica tutti quei programmatori che fino ad oggi hanno sviluppato applicazioni desktop utilizzando linguaggi tradizionali, con questo nuovo framework possono continuare a fare la stessa cosa essendo ora in grado però di produrre anche applicazioni web complesse?”

Davide: “Diciamo che questo è…un effetto collaterale; a me quel che rodeva è che per realizzare cose relativamente semplici e che con gli strumenti per lo sviluppo di applicazioni desktop non rappresentavano alcuna difficoltà, si era invece costretti a risolvere una montagna di problemi collaterali dilatando enormemente i tempi di realizzazione del prodotto finale”.

Enrico: “In cos’altro si differenzia un’applicazione WeD da un’applicazione web realizzata con gli strumenti attuali e quali sono invece le analogie con le applicazioni desktop?”

Davide: “Nelle applicazioni web tradizionali, l’interfaccia grafica è fortemente orientata sul concetto di pagina e sul concetto di navigazione tra pagine.
Per alcuni tipi di applicazioni questo approccio può risultare appropriato, ma per altri tipi di applicazioni può risultare molto scomodo e decisamente poco appropriato.
Nelle applicazioni desktop complesse infatti l’interfaccia grafica è basata sul concetto di finestra e non su quello di pagina.
Più finestre possono essere aperte contemporaneamente ed ogni finestra può contenere al suo interno molte componenti grafiche.
WDF fornisce allo sviluppatore un ambiente multi-finestra che gli permette di aprire, all’interno di una applicazione WeD, una o più finestre contenenti una o più componenti grafiche interattive come Button, TextBox, InputBox, DropDown, ListView, TreeView, Grid ed altro.

Durante lo sviluppo di applicazioni desktop, ci sono molte situazioni in cui è necessario dover interrompere l’esecuzione del codice per poter richiedere all’utente alcune informazioni prima di proseguire.
Si pensi ad esempio a tutte quelle situazioni in cui chiudendo una finestra si voglia avvertire l’utente di salvare le modifiche appena apportate. In tutte queste occasioni è necessario aprire una richiesta di salvataggio, in cui l’utente si trova obbligato a rispondere, la cui risposta consentirà all’applicazione di intraprendere le azioni più idonee.
WDF, da un lato gestisce l’obbligatorietà della richieste aprendo finestre di tipo pop-up e dall’altro sospende l’esecuzione del processo che ha effettuata la richiesta verso l’utente, così da poter successivamente eseguire le azioni più idonee una volta ottenute le risposte.

Infine, nello sviluppo di applicazioni desktop, si ha la necessità di predisporre del codice che sia attivabile in relazione a determinate azioni intraprese dall’utente sull’interfaccia grafica. Pensando ad esempio ad un controllo di tipo Button, è immediato comprendere la necessità di poter avviare una qualche porzione di codice in risposta alla sua pressione.
WDF
implementa la gestione degli eventi, cioè quei meccanismi che rendono trasparente la comunicazione di un evento grafico (come il click di un pulsante avvenuto all’interno di un web browser) al server e che consentano quindi l’avvio automatico delle porzioni di codice associate all’evento stesso.”

Enrico: “E per poter usufruire di tutto questo ben di Dio, cosa occorre installare, lato client? Quali plugin sono necessari per  poter utilizzare un’applicazione WeD?”

Davide: “Nessun plugin. Nessuna estensione, ne’ alcun controllo ActiveX. Niente di niente.
La tecnologia utilizzata per la gestione dell’interfaccia grafica è l’HTML nella sua versione più estesa nota come HTML 4 o DHTML.
La tecnologia dei CSS è usata da WDF per avere il massimo controllo sulla formattazione grafica dei contenuti visualizzati all’interno della pagina.
WDF usa DOM per costruire e modificare in modo dinamico il contenuto della pagina, evitando così di dover effettuare dei refresh completi dei contenuti ogni qual volta una parte di questi necessiti di un cambiamento.
Per poter riuscire a manipolare la pagina tramite DOM e poter quindi aggiungere, modificare ed eliminare tag e attributi grafici è necessario un linguaggio di programmazione. Per fare questo WDF utilizza JavaScript la cui forza è quella di essere stato standardizzato dalla ECMA.
Per effettuare la comunicazione con il server è utilizzato AJAX che, grazie allo scambio in background di piccoli pacchetti di dati, non costringe a ricaricare l’intera pagina web ogni volta che l’utente effettua una modifica riuscendo quindi ad assicurare una migliore interattività, velocità e usabilità.
In sintesi, per utilizzare un’applicazione WeD occorre un comunissimo browser e nient’altro.

Enrico: Se uno sviluppatore avesse bisogno di costruire nuovi componenti grafici da utilizzare nelle proprie applicazioni potrebbe farlo?”

Davide: “Certamente. Uno dei grossi vantaggi di lavorare con linguaggi object-oriented è proprio quello di poter estendere i componenti di base per crearne di nuovi più specializzati. WDF fornisce già una buona libreria di componenti grafiche di base e queste ricombinate possono essere utilizzate come mattoni per costruirne di nuove, il tutto senza scrivere codice HTML o JavaScript”

Enrico: “Dato che l’architettura di WDF è realizzata tramite il Framework .NET di Microsoft….”

Davide: “Abbiamo iniziata a realizzare anche una versione che si basa su J2EE; ma per motivi contingenti legati a necessità interne alla mia azienda, abbiamo sviluppato maggiormente la versione .NET, che risulta, al momento, molto più evoluta della versione J2EE del framework

Enrico: “Ah, buono a sapersi. Quindi in futuro si potrà avere anche una versione del framework che consenta di sviluppare in Java e non solo in uno dei linguaggi Microsoft .NET.
E quali sono i requisiti lato server?”

Davide: “WDF, nella versione .NET, si appoggia completamente al framework .NET di Microsoft.
Tramite questa tecnologia è possibile sviluppare sia le componenti basate sull’architettura ASP.NET, necessarie alla comunicazione tra il web browser ed il server web funzionante tramite IIS, che le componenti del middle-tier che consentono una gestione centralizzata delle componenti applicative ed una migliore scalabilità delle prestazioni.
WDF sfrutta il framework .NET per entrambi gli scopi.
Tramite le pagine aspx, WDF crea il ponte tra le chiamate AJAX, in arrivo dal client, e le componenti del middle-tier preposte alla risoluzione delle richieste.
La comunicazione tra le componenti ASP.NET e le componenti del middle-tier è effettuata tramite la tecnologia Remoting del framework .NET che consente ai vari processi distribuiti di comunicare attraverso una rete permettendo una migliore distribuzione del carico di elaborazione e consentendo di posizionare le componenti del middle-tier su server differenti rispetto a quello in cui è in esecuzione il web server.

La versione di WDF implementato usando la piattaforma J2EE, si appoggia invece al framework J2EE.
Tramite questa tecnologia è possibile sviluppare sia le componenti basate sull’architettura Java Servlet, che le componenti del middle-tier che consentono una gestione centralizzata delle componenti applicative ed una migliore scalabilità delle prestazioni.
WDF sfrutta J2EE per entrambi gli scopi.
Tramite le servlet, crea il ponte tra le chiamate AJAX, in arrivo dal client, e le componenti del middle-tier preposte alla risoluzione delle richieste.
La comunicazione tra le componenti servlet e le componenti del middle-tier è effettuata tramite la tecnologia RMI, una tecnologia che consente a processi Java distribuiti di comunicare attraverso una rete.
L’utilizzo della tecnologia RMI permette una migliore distribuzione del carico di elaborazione, consentendo di posizionare le componenti del middle-tier su server differenti rispetto a quello in cui è in esecuzione il web server.

Enrico: “Come intendete immettere sul mercato il framework?”

Davide: “Ci sembra naturale tentare di proporre il framework a Microsoft che sarebbe anche il soggetto più adatto per integrare il proprio ambiente di sviluppo in modo da prevedere la realizzazione di applicazioni WeD in modo visuale. Staremo a vedere se a Redmond saranno interessati.”

Enrico:Quindi attualmente non è stato ancora realizzato un apposito IDE con cui creare interfacce WeD in modo visuale, posizionando i vari controlli a disposizione?”

Davide: “No. Attualmente utilizziamo Visual Studio ed i controlli dell’interfaccia li inseriamo manualmente tramite la scrittura di codice C#.”

Per il momento, credo che leggendo le risposte di Davide in molti si possano iniziare a fare un’idea più precisa di cosa sia questo nuovo framework e dell’enorme impatto che può avere in questo settore.
Di colpo una miriade di sviluppatori tagliati fuori dallo sviluppo di applicazioni per il web si ritrovano nuovamente messi in gioco.
Inoltre si apre un ventaglio di possibili evoluzioni la cui portata risulta ancora difficilmente prevedibile.

In conclusione, esistono altri framework che consentono di ottenere analoghi risultati riguardo all’interfaccia (si veda ad esempio ExtJS); la particolarità e la rivoluzione di WDF è nel modo in cui è possibile realizzare l’applicazione:

  • Si utilizza un unico linguaggio object-oriented come C# e non l’ensamble di altri vari linguaggi di scripting sia per gestire la parte grafica dell’applicazione che per gestire le componenti di business;
  • Si utilizza l’ambiente di sviluppo preferito;
  • Si utilizza il medesimo paradigma di programmazione utilizzato per la creazione di applicazioni desktop (stand alone), cosa che consente di realizzare un’applicazione web a tutti quegli sviluppatori che non hanno mai visto PHP, Flash o altri strumenti utilizzati attualmente per sviluppare applicazioni web.

Come si realizza l’applicazione WeD con WDF sarà oggetto del prossimo articolo in cui verrà illustrata la procedura di realizzazione di una semplicissima applicazione WeD.

Articoli simili:

  • Facebook
  • Twitter
  • Delicious
  • StumbleUpon
  • Wikio
  • Reddit
  • Technorati
  • Segnalo
  • Live
  • Add to favorites
  • Email
  • RSS

 Lascia un commento

Puoi usare questi tag e attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(richiesto)

(richiesto)

Pinterest
EmailEmail
PrintPrint
%d blogger hanno fatto clic su Mi Piace per questo: