SlideShare a Scribd company logo
Claudio Bosticco
Claudio.bosticco@gmail.com
WEB 1.0
 Ad ogni interazione, il browser invia una richiesta ad una
specifica risorsa (URL) con dei parametri associati alla richiesta.
 Il web server risponde con l’intera pagina: HTML+CSS+Javascript
 La pagina contiene sia il codice necessario alla sua
renderizzazione, sia i dati.
 È una caratteristica “storica” di html over http
Inoltre il client è più o meno stupido:
business logic e presentazione sono interamente in mano al server
WEB 1.0: flaws
 I dati non sono trattati come “first class objects”
(non hanno né tipo, né struttura, né vincoli).
 Presentation Flow e Data Interchange, che sono ortogonali,
risultano strettamente accoppiati, uno non può avvenire senza
che avvenga l’altro (Ajax, alternativo a hmtl over http, li
disaccoppia).
 Non supporta server push.
Esiste un web framework server-side che non abbia tali difetti?
RIA (web 2.0)
 Al primo accesso alla web application, viene scaricato il
codice client della webapp stessa.
 Il browser è il contenitore dell’applicazione.
 Da questo punto, se il client ha bisogno di dati che non ha, o
se deve aggiornare/aggiungere dati, invia una richiesta al
server.
 Il server invia/aggiorna i dati (quelli che l’utente è
autorizzato a vedere/aggiornare – solo il server può
garantire la sicurezza).
 La presentazione dei dati all’utente viene gestita lato client.
RIA Architecture
 Un paper illuminante: Life above the Service Tier:
“Had we but invested in clientside JavaScript half the resources we invested in
serverside Java, we could have had AJAX far earlier (and we could have
avoided wasting our time on fifty different Front Controller frameworks).”
 MVC sul client: presentation flow tramite “javascript magic”:
Single Page Application.
 Ajax per disaccoppiare presentation flow e data interchange
 XML o JSON restituiscono dignità ai dati
Life Above the Service Tier
SmartClientTM RIA Framework
 Since 2001, architettura “client side MVC”, “Ajax” da prima che
esistesse l’acronimo.
 LGPL da 11/2007 (parte client).
 Perfettamente in linea con l’architettura SOFEA.
 Componenti client molto ricchi.
 Ampia compatibilità coi browser (IE6 ancora compatibile con la
release 10 uscita a fine 2014), anche sul mobile.
 Sistema di databinding client/server: i “business objects” sono
modellati nelle DataSource che sono condivise tra client e
server.
 Tramite le DataSource stesse è disponibile un motore di
persistenza molto efficace (oppure connettori per
JPA/Hibernate).
SmartClient DataSources
 Il mio consiglio è, se possibile, di usare le SQLDataSource,
possibilmente con licenza Power (ovviamente a patto di
usare un db relazionale).
 La velocità di sviluppo che si ottiene rispetto ad altri
framework e anche rispetto ad altri ORM (Hibernate,
myBatis…) vale la spesa.
 Ovviamente richiede maggiori conoscenze del framework
rispetto ad utilizzare “solo” la versione LGPL ad es.
Licensing
 LGPL -> solo parte client (esclusi alcuni moduli)
A costi crescenti:
 Pro
 Power
 Enterprise
Moduli a parte:
 RealTime Messaging (AKA server push)
 Analytics (OLAP/Datacube)
Exploring SmartClient
 Il pacchetto contiene una SDK con un tomcat e un HSQLDB
embedded con documentazione ed esempi ricercabili ed
editabili.
 La documentazione è molto ben fatta, ma per i principianti è un
po’ difficile visualizzare la “big picture” viste le dimensioni del
framework.
 È consigliabile iniziare dalla “quick start guide”, per poi
approfondire le tematiche nella cartella “Concepts” della
Reference (e nella cartella “Java Server Reference” se si utilizza la
parte server).
 Fondamentale “smanettare” sugli esempi ed iniziare da subito ad
utilizzare la “developer console”.
Un esempio dalla SDK
Coding in SmartClient
 In SmartClient, l’oggetto ClassFactory è alla base di un
meccanismo di vera ereditarietà per oggetti Javascript.
 Questo significa che con gli oggetti SmartClient è possibile
invocare metodi delle superclassi, avere attributi e metodi
di istanza ma anche statici.
 ClassFactory è un sigleton che viene utilizzato
principalmente per definire nuove classi:
 ClassFactory.defineClass("MyClass", “MySuperClass");
 Per creare un’istanza:
 ClassFactory.newInstance(“MyClass”);
Coding – syntactic sugar
isc.defineClass("MyListGrid", "ListGrid").addProperties({
headerHeight: 40, // cambia default per listGrid.headerHeight
// override listGrid.recordClick
recordClick: function (viewer, record) {
isc.say(record.description); // invece di alert()
}
})
isc.MyListGrid.create({ // crea un’instanza della nuova classe
ID: “fooGrid” // variabile globale
});
fooGrid.fetchData(
{STATE: “ACCEPTED”}, // criteria
function(dsResponse, data, dsRequest){ // callback
isc.logEchoAll(data);
}
})
Il prefisso “isc.” è necessario se si usa il “Portal mode”

More Related Content

PPS
Esposizione RIA
PPTX
Asp.NET MVC Framework
PPTX
Web sockets
PDF
Protocolli di comunicazione tra moduli e SOA
PDF
PPT
Inserire servizi
PPTX
PPTX
Что значит девиз «Packaging Simplified» компании Esko? Практические рекоменда...
Esposizione RIA
Asp.NET MVC Framework
Web sockets
Protocolli di comunicazione tra moduli e SOA
Inserire servizi
Что значит девиз «Packaging Simplified» компании Esko? Практические рекоменда...

Similar to SmartClient by Isomorphic - Rich internet applications (20)

PDF
e-SUAP - General software architecture (Italiano)
PPTX
Brokering over WCF @ dotNetMarche
PDF
Corso Java 3 - WEB
PDF
Presentazione tirocinio
PPTX
How create a single page apps using html5 and javascript
PDF
Niccolò Becchi: Introduzione a GWT
PPT
SUE AGILE Framework (Italiano)
PDF
Be01 web devclientvsserver
PPTX
Applicazioni web based
PDF
Framework per la realizzazione di ria
PPTX
Come sviluppare applicazioni cross device con HTML
PDF
Spring e Flex
PPT
Progettazione e sviluppo di applicazioni web di nuova generazione con AJAX
PDF
Data binding libera tutti!
PDF
Data binding libera tutti!
PDF
Lezione 8: Introduzione ai Web Service
PDF
Smau milano 2012 arena social media davide-senatore
PPTX
8 - Web App e CMS - 16/17
PPTX
Dal requisito all'implementazione @ CD2010
PDF
Architetture web - Linguaggi e standard - Web server, application server, dat...
e-SUAP - General software architecture (Italiano)
Brokering over WCF @ dotNetMarche
Corso Java 3 - WEB
Presentazione tirocinio
How create a single page apps using html5 and javascript
Niccolò Becchi: Introduzione a GWT
SUE AGILE Framework (Italiano)
Be01 web devclientvsserver
Applicazioni web based
Framework per la realizzazione di ria
Come sviluppare applicazioni cross device con HTML
Spring e Flex
Progettazione e sviluppo di applicazioni web di nuova generazione con AJAX
Data binding libera tutti!
Data binding libera tutti!
Lezione 8: Introduzione ai Web Service
Smau milano 2012 arena social media davide-senatore
8 - Web App e CMS - 16/17
Dal requisito all'implementazione @ CD2010
Architetture web - Linguaggi e standard - Web server, application server, dat...
Ad

SmartClient by Isomorphic - Rich internet applications

  • 2. WEB 1.0  Ad ogni interazione, il browser invia una richiesta ad una specifica risorsa (URL) con dei parametri associati alla richiesta.  Il web server risponde con l’intera pagina: HTML+CSS+Javascript  La pagina contiene sia il codice necessario alla sua renderizzazione, sia i dati.  È una caratteristica “storica” di html over http Inoltre il client è più o meno stupido: business logic e presentazione sono interamente in mano al server
  • 3. WEB 1.0: flaws  I dati non sono trattati come “first class objects” (non hanno né tipo, né struttura, né vincoli).  Presentation Flow e Data Interchange, che sono ortogonali, risultano strettamente accoppiati, uno non può avvenire senza che avvenga l’altro (Ajax, alternativo a hmtl over http, li disaccoppia).  Non supporta server push. Esiste un web framework server-side che non abbia tali difetti?
  • 4. RIA (web 2.0)  Al primo accesso alla web application, viene scaricato il codice client della webapp stessa.  Il browser è il contenitore dell’applicazione.  Da questo punto, se il client ha bisogno di dati che non ha, o se deve aggiornare/aggiungere dati, invia una richiesta al server.  Il server invia/aggiorna i dati (quelli che l’utente è autorizzato a vedere/aggiornare – solo il server può garantire la sicurezza).  La presentazione dei dati all’utente viene gestita lato client.
  • 5. RIA Architecture  Un paper illuminante: Life above the Service Tier: “Had we but invested in clientside JavaScript half the resources we invested in serverside Java, we could have had AJAX far earlier (and we could have avoided wasting our time on fifty different Front Controller frameworks).”  MVC sul client: presentation flow tramite “javascript magic”: Single Page Application.  Ajax per disaccoppiare presentation flow e data interchange  XML o JSON restituiscono dignità ai dati
  • 6. Life Above the Service Tier
  • 7. SmartClientTM RIA Framework  Since 2001, architettura “client side MVC”, “Ajax” da prima che esistesse l’acronimo.  LGPL da 11/2007 (parte client).  Perfettamente in linea con l’architettura SOFEA.  Componenti client molto ricchi.  Ampia compatibilità coi browser (IE6 ancora compatibile con la release 10 uscita a fine 2014), anche sul mobile.  Sistema di databinding client/server: i “business objects” sono modellati nelle DataSource che sono condivise tra client e server.  Tramite le DataSource stesse è disponibile un motore di persistenza molto efficace (oppure connettori per JPA/Hibernate).
  • 8. SmartClient DataSources  Il mio consiglio è, se possibile, di usare le SQLDataSource, possibilmente con licenza Power (ovviamente a patto di usare un db relazionale).  La velocità di sviluppo che si ottiene rispetto ad altri framework e anche rispetto ad altri ORM (Hibernate, myBatis…) vale la spesa.  Ovviamente richiede maggiori conoscenze del framework rispetto ad utilizzare “solo” la versione LGPL ad es.
  • 9. Licensing  LGPL -> solo parte client (esclusi alcuni moduli) A costi crescenti:  Pro  Power  Enterprise Moduli a parte:  RealTime Messaging (AKA server push)  Analytics (OLAP/Datacube)
  • 10. Exploring SmartClient  Il pacchetto contiene una SDK con un tomcat e un HSQLDB embedded con documentazione ed esempi ricercabili ed editabili.  La documentazione è molto ben fatta, ma per i principianti è un po’ difficile visualizzare la “big picture” viste le dimensioni del framework.  È consigliabile iniziare dalla “quick start guide”, per poi approfondire le tematiche nella cartella “Concepts” della Reference (e nella cartella “Java Server Reference” se si utilizza la parte server).  Fondamentale “smanettare” sugli esempi ed iniziare da subito ad utilizzare la “developer console”.
  • 12. Coding in SmartClient  In SmartClient, l’oggetto ClassFactory è alla base di un meccanismo di vera ereditarietà per oggetti Javascript.  Questo significa che con gli oggetti SmartClient è possibile invocare metodi delle superclassi, avere attributi e metodi di istanza ma anche statici.  ClassFactory è un sigleton che viene utilizzato principalmente per definire nuove classi:  ClassFactory.defineClass("MyClass", “MySuperClass");  Per creare un’istanza:  ClassFactory.newInstance(“MyClass”);
  • 13. Coding – syntactic sugar isc.defineClass("MyListGrid", "ListGrid").addProperties({ headerHeight: 40, // cambia default per listGrid.headerHeight // override listGrid.recordClick recordClick: function (viewer, record) { isc.say(record.description); // invece di alert() } }) isc.MyListGrid.create({ // crea un’instanza della nuova classe ID: “fooGrid” // variabile globale }); fooGrid.fetchData( {STATE: “ACCEPTED”}, // criteria function(dsResponse, data, dsRequest){ // callback isc.logEchoAll(data); } }) Il prefisso “isc.” è necessario se si usa il “Portal mode”