Introduzione alle Single Page Application

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Introduzione alle Single Page Application"

Transcript

1 Introduzione alle Single Page Application Abstract Introduzione al mondo delle Single Page Application attraverso DurandalJS, RequireJS, BreezeJS, QJS, etc.. Alberto Acerbis for TheDiligence - 2 dicembre 2013

2 Sommario Cos è una SPA... 2 DurandalJS... 3 Struttura di una SPA con DurandalJS... 3 Creazione di una pagina... 4 Creazione del ViewModel... 4 Creazione della View... 6 Il Sistema di Routing... 7 BreezeJS... 9 Caratteristiche principali... 9 EntityManager... 9 Entity Data Binding Query Salvataggio dei Dati Metadata Promise Vs Callback Function Modules in RequireJS Fonti... 18

3 Cos è una SPA Una SPA è un'applicazione che prevede un modello di sviluppo completamente diverso dalle classiche applicazioni web. In una SPA l'applicazione è suddivisa in due layer principali con responsabilità ben precise: il client e il server. Il client ha la responsabilità di mostrare i dati all'utente e di permettere a questo di interagire con i dati stessi. Il server ha il compito di fornire le API di accesso ai dati che sono accedute dal client sia per leggere che per scrivere. Il layer client, e questa è la grande novità, è sviluppato completamente in JavaScript, HTML e CSS e quindi gira interamente sul browser. Il layer server può essere invece sviluppato utilizzando qualunque piattaforma server (Web API, ASP.NET MVC, ma anche servizi basati su Java o PHP o altro ancora). Client e server comunicano sfruttando normali richieste AJAX (in genere tramite il protocollo REST). Sviluppare una SPA da zero significa doversi occupare di diversi aspetti come il binding dei dati all interfaccia, e di questo ne abbiamo parlato al primo incontro introducendo KnockoutJS, la navigazione tra le pagine, il download dei file JavaScript e HTML necessari, la compatibilità tra i browser. Tutto questo richiede un approfondita conoscenza di JavaScript, oltre che un buon monte ore di tempo disponibile. La standardizzazione, e la continua diffusione di JavaScript, hanno fortunatamente permesso la creazione di framework che si occupano di gestire la maggior parte delle complessità infrastrutturali di un SPA lasciando a noi il compito di scrivere il codice di business. Di questi framework ne esistono ormai diversi, uno di questi, AngularJS, lo abbiamo visto nella presentazione di Gianni, oggi ci occuperemo di DurandalJS.

4 DurandalJS DurandalJS è un framework sviluppato dal team Caliburn.Micro, tanto per intenderci gli stessi di MVVM. La potenza di questo framework consiste nel fatto che il team non ho reinventato nulla, come cita il sito ufficiale, non hanno reinventato la ruota da zero, bensì ha riutilizzato framework già largamente diffusi sul web, come KnockoutJS, RequireJS e jquery e li ha uniti sotto un unico cappello. 1. JQuery viene sfruttato per le promise e per la manipolazione del DOM. 2. KnockoutJS per l implementazione del pattern MVVM. 3. RequireJS per la modularizzazione del codice. Di suo, DurandalJS, implementa un meccanismo di navigazione e un servizio di messaggistica, oltre che un sistema di routing che mappi gli url alle relative view, un meccanismo di popup, uno splash screen e altri aspetti più o meno secondari. Struttura di una SPA con DurandalJS Il template di DurandalJS nell ambiente di Visual Studio genera una applicazione ASP.NET MVC classica a cui aggiunge HTML, CSS e JavaScript, oltre a classi lato server e lato client. Dal punto di vista del server genera un controller, una view e una classe che genera un bundle. Il controller, con l originale nome di DurandalController, ha un solo metodo (index) che non fa altro che richiamare la view all interno della quale è ospitata la SPA. La view è estremamente semplice <body> <div <script src="/app/durandal/amd/require.js" data-main="app/main"></script> </body>

5 Nella view è dichiarato un tag div all interno del quale verranno visualizzate le pagine dell applicazione, lo script del bundle generato dal template e infine il tag script responsabile dell avvio dell applicazione. Per quanto riguarda il bundle c è poco da aggiungere, la classe generata dal template non fa altro che prendere i file JavaScript necessari al template stesso e includerli nel bundle scripts/vendor.js che è poi quello utilizzato dalla view vista nel codice precedente. Da sottolineare che nel bundle non vi è presenza dei file JavaScript di Durandal questi infatti vengono caricati all occorrenza tramite Require.js. Vedremo in seguito l importanza di questa libreria. Molto più interessante è osservare cosa è successo lato client. I file necessari a Durandal sono inclusi un due cartelle App e Scripts. Nella cartella Scripts sono contenuti i file a cui Durandal si appoggia (RequireJS, KnockoutJS); i file JS strettamente appartenenti a Durandal si trovano in una sottocartella che prende il nome di Durandal. Questa cartella si può trovare nella cartella Scripts, nel caso del template Durandal, nella cartella App nel caso del template HotTowel, di John Papa, che è un implementazione di Durandal. Nella cartella App c è il file che viene lanciato al caricamento della SPA (main.js) e poi ci sono le View, che non sono altro che pagine HTML ridotte, con i relativi viewmodels, contenuti nella cartella ViewModels. Anche in questo caso ci sono alcune piccole differenza fra il template Durandal ed il template HotTowel, il secondo risulta avere una struttura un poco più ordinata e logica a mio avviso. Il nostro codice andrà a popolare sostanzialmente queste due cartelle. Creazione di una pagina La creazione di una pagina si articola in tre azioni 1. Creazione del ViewModel 2. Creazione della View 3. Aggiunta al sistema di routing Creazione del ViewModel Si tratta del file JavaScript contenente la logica della pagina. In esso vengono invocati i servizi per recuperare e/o modificare i dati. Il ViewModel espone anche le proprietà che compongono i dati che successivamente vengono collegati sulla View; in genere si tratta di observable o observabearray di Knockout in modo da poter sfruttare pienamente il relativo meccanismo di routing di quest ultimo.

6 define(['services/datacontext'], function (datacontext) { var coaches = ko.observablearray(); var activate = function () { // go get local data, if we have it return datacontext.getcoachpartials(speakers); ; var refresh = function () { return datacontext.getcoachpartials(speakers, true); ; var vm = { activate: activate, coaches: coaches, title: 'Coaches', refresh: refresh ; ); return vm; Dall esempio di codice possiamo vedere che un ViewModel non è altro che un modulo creato tramite la funzione define di RequireJS. Questa funzione accetta in input una lista di stringhe che rappresentano il riferimento a altri file JavaScript che non sono altro che moduli caricati sempre da RequireJS e sono quelli da cui il nostro ViewModel dipende. L ultimo parametro della funzione define è un callback che viene invocato quando RequireJS finisce di scaricare i file. Ad ogni parametro del callback corrisponde un istanza delle dipendenze specificate prima. Il callback deve restituire un oggetto che è quello che poi viene collegato alla View. Questo oggetto, come anticipato, può contenere sia proprietà che metodi che possono quindi essere invocati dalla View tramite la sintassi di KnockoutJS. Ci sono poi una serie di metodi opzionali che, se presenti, vengono invocati dal motore di DurandalJS, i più importanti sono 1. canactivate: invocato per specificare se la pagina può essere aperta

7 2. activate: invocato quando si naviga verso la pagina legata al ViewModel 3. candeactivate: invocato per specificare se si può abbandonare la pagina 4. deactivate: invocato quando si esce dalla pagina legata al ViewModel. E importante sottolineare che i metodi canactivae e candeactivate possono restituire un boolean o una promise, che a sua volta restituisce un boolean una volta risolta, mentri i metodi activate e deactivate possono o no restituire nulla, oppure una promise. Ovviamente, in accordo con i principi della programmazione asincrona, per tutti i metodi, nel caso venga restituita una promise, DurandalJS attende la risoluzione della stessa prima di proseguire nella pipeline. Fra i metodi elencati quello che praticamente è sempre presente è activate in quanto è il responsabile dei dai che vengono inizialmente visualizzati sulla View. Il file ViewModel, nel nostro caso coaches.js, dev essere salvato nella cartella ViewModels; deve perché, come vedremo, il sistema di routing di DurandalJS prevede questa disposizione dei file. Creazione della View La View è un file HTML, senza i tag di inizializzazione. Ricordiamoci che stiamo sviluppando una SPA, quindi tutta l applicazione è contenuta all interno di una singola pagina, perciò non avrebbe senso continuare a definire nuove pagine che SPA sarebbe!?!?! La View contiene il markup necessario a mostrare all utente i dati esposti dal ViewModel e si trova, fisicamente, nella cartella App/Views. L associazione tra la View ed il ViewModel viene risolta automaticamente da DurandalJS. Innanzitutto Durandal sfrutta il nome dei file per risolvere questa associazione, quindi i file che hanno lo stesso nome che si trovano nelle cartelle Views e ViewModels, vengono automaticamente associati fra loro. In seguito, grazie a KnockoutJS, Durandal associa i dati del ViewModel alla View, quindi è chiaro che noi dobbiamo rispettare la sintassi di KnockoutJS per decidere come visualizzare i nostri dati all utente <section class="view"> <header> <a class="btn btn-info btn-force-refresh pull-right" data-bind="click: refresh" href="#"><i class="icon-refresh"></i> Refresh</a> <h3 class="page-title" data-bind="text: title"></h3> <div class="article-counter"> <address data-bind="text: speakers().length"></address> <address>found</address>

8 </div> </header> <section class="view-list" data-bind="foreach: coaches"> <article class="article-container-full-width"> <div> <img data-bind="attr: { src: imagename " class="img-polaroid"/> <address data-bind="text: firstname"></address> <address data-bind="text: lastname"></address> </div> </article> </section> </section> Come si può vedere il codice delle View è estremamente semplice. Non abbiamo fatto altro che sfruttare Knockout per legare le proprietà del ViewMode agli oggetti della View e viceversa Le complessità ovviamente possono aumentare con l aumentare della complessità dell interfaccia, ma KnockoutJS mette a disposizione diversi meccanismi per semplificare lo sviluppo dell interfaccia, primo fra tutti il meccanismo dei custom binding dove i binding di base non siano applicabili; ovviamente l obiettivo è mantenere il codice delle interfacce il più pulito possibile. Il Sistema di Routing Di cosa stiamo parlando? Del modulo di DurandalJS che si occupa di trasformare un url in una richiesta a una specifica associazione View/ViewModels nella nostra SPA. Nel template originale la configurazione del routing è contenuta nel file shell.js, io preferisco creare un file separato, in genere config.js, dove specificare i parametri di configurazione della mia SPA. In ogni caso, al di là delle scelte personali di ognuno di noi, vediamo come si configura questo modulo var routes = [{ url: 'sessions', moduleid: 'viewmodels/sessions', name: 'Sessions', visible: true,

9 caption: 'Sessions', settings: { caption: '<i class="icon-book"></i> Sessions', { url: 'coaches', moduleid: 'viewmodels/coaches', name: 'Coaches', caption: 'Coaches', visible: true, settings: { caption: '<i class="icon-user"></i> Coaches', { url: 'sessiondetail/:id', moduleid: 'viewmodels/sessiondetail', name: 'Edit Session', caption: 'Edit Session', visible: false, { url: 'sessionadd', moduleid: 'viewmodels/sessionadd', name: 'Add Session', visible: false, caption: 'Add Session', settings: { admin: true, caption: '<i class="icon-plus"></i> Add Session' ];

10 BreezeJS Breeze è una libreria JavaScript che consente di gestire i dati nelle applicazioni Rich Client. L obiettivo principale di Breeze è quello di permettere la condivisione dei dati fra una pagina ed un altra senza necessariamente passare sempre dal server, e la navigabilità in essi, ossia fornire oggetti grafici complessi. Caratteristiche principali Creare oggetti lato client che rispecchiano il modello lato server. Breeze crea questi oggetti dinamicamente e lega le proprietà di questi oggetti alla UI della nostra applicazione (KnockuotJS nel nostro caso). In questo modo ogni oggetto di Breeze sa quando e quale dato è cambiato al suo interno. Permette la scrittura di Query in JavaScript, con tutte le fetures del caso, come ordinamento, filtro, raggruppamento, etc. Implementa OData (Open Data Protocol) in modo da poter espandere il risultato di una query con entità correlate. Permette di salvare un oggetto, o un gruppo di più entità, con una sola transizione. Crea una cache dei dai lato Client riducendo drasticamente la necessità di continui round-trip clientserver per recuperare dati già presenti lato Client alla transizione da una pagina ad un altra. Permette di estendere il modello con metodi, proprietà ed eventi personalizzati, è opensource cos altro volete? EntityManager E l oggetto che permette, lato Client, di accedere ai dati e crearne una cache Breeze si crea una sua struttura di Metadati, un file json che ricava con l Action Metadata nel controller che si crea, per poter navigare all interno della struttura dei dati che preleva Tipicamente si recuperano i dati da un database, o da un qualsiasi servizio di persistenza remoto, tramite una query eseguita con EntityManager; si presentano questi dati all utente tramite i meccanismi messi a disposizione dalle View, KnockouJS è uno di questi; si abilita la possibilità di manipolare questi dati con tutte le operazioni CRUD possibili e periodicamente si salvano le modifiche in sospeso con una sola transizione verso il database. EntityManager è sia un gateway per il servizio di persistenza dei dati che una cache delle entità su cui si intende lavorare lato Client. Gli oggetti interrogati e salvati sono entità mantenute nella Cache di EntityManager; queste entità possono entrare nel nostro EntityManager a seguito di una query, oppure a seguito di un operazione di inserimento lato client, o da un altro EntityManager della nostra App.

11 Queste entità liberano la cache, escono dal nostro EntityManager a seguito di un intervento da parte nostra, oppure perché contrassegnate come cancellate dopo un operazione di persistenza dei dati. La cache di EntityManager è interrogabile allo stesso modo in cui si interrogano i dati sul server remoto, con la sola unica grande differenza che è locale, quindi nessun round-trip Client-Server! Entity Un entità rappresenta un oggetto significativo nel modello della nostra applicazione. Potrebbe trattarsi di semplici dati, di relazioni fra entità (Cliente e relativi Ordini), di regole (una proprietà richiesta per convalidare il dato). Un entità in Breeze è un oggetto con le proprietà dei dati e le proprietà di navigazione che restituiscono entità correlate. Oltre alle normali proprietà relative ai dati, stringhe numeri, valori in genere, sono presente proprietà di navigazione fra le entità correlate nella cache di EntityManager. L esempio classico è costituito dall anagrafica Cliente con i relativi Ordini. Un entità Breeze è costituita anche da un suo kernel, una entity-ness, che rappresenta il suo entityaspect che serve al motore di Breeze per gestire l entità stessa. E possibile intervenire su questo kernel e influenzare il comportamento di Breeze nel manipolare l Entity stessa (a vostro rischio e pericolo). L aspetto più importante di una Entity è il suo EntityState. Questa proprietà indica se si tratta di un nuovo oggetto che è stato aggiunto, oppure se si tratta di un oggetto già presente ma che è stato modificato. E possibile esaminare i valori originali di un oggetto preesistente e ripristinare l entità al suo stato originale chiamando l istruzione entityaspect.rejectchanges(). Data Binding Breeze si basa principalmente sulle proprietà di Binding per intercettare le modifiche apportare lato client alle entità, il che significa che le proprietà che si vogliono trattare devono essere di tipo observable. Le proprietà in Breeze ovviamente lo sono. In ambito.net, lo sappiamo, questo meccanismo è garantito dall evento PropertyChanged, ma in JavaScript non vi è alcun meccanismo standard che implementi questa funzionalità. Ogni framework adotta la propria implementazione (KnockuotJS, AngularJS, BackboneJS, etc.). Breeze è in grado di lavorare con tutti questi framework, lasciando a noi la libertà di scegliere quello che più ci aggrada.

12 Query E possibile recuperare i dati da un server remoto componendo una query nella sintassi indicata da Breeze ed eseguendola attraverso un oggetto EntityManager var query = breeze.entityquery().from("coaches").where("name", "startswith", "A").orderBy("Name"); var manager = new breeze.entitymanager(servicename); manager.executequery(query).then(querysucceeded).fail(queryfailed); La prima cosa che possiamo notare è che si tratta di una chiamata asincrona, il metodo executequery restituisce una promise e invoca il metodo querysucceded nel caso l operazione vada a buon fine, oppure il metodo queryfailed in caso contrario. Breeze risolve questa query dentro con una richiesta HTTP GET, tipicamente si tratta di un servizio WebAPI con endpoint opportunamente configurato verso il nostro servizio di persistenza dei dati (SQL Server, MongoDB,..). La sintassi O-Data della query è supportata da WebAPI, ma anche da WCF e altri servizi non necessariamente.net compatibili. Ovviamente è possibile scrivere anche query complesse, sempre sfruttando la sintassi indicata da Breeze Salvataggio dei Dati Breeze aggiunge, modifica, elimina le entity nella cache di un EntityManager, mai direttamente sulla fonte dati remota. Tutto quello che fa è modificare l EntityState di una Entity. Tutte le modifiche vengono conservate e gestite nella cache sino alla chiamata del metodo SaveChanges() del nostro EntityManager.

13 manager.savechanges().then(savesucceeded).fail(savefailed); Ancora una volta possiamo notare che si tratta di un metodo asincrono che restituisce una promise, nel modo del tutto equivalente a quanto visto in precedenza per il recupero dei dati attraverso l esecuzione di una query. Ho già detto in precedenza che Breeze è in grado di persistere dati di una singola entità, o un batch di più entità fra loro relazionate, tutto in un unica transizione, consentendo un notevole risparmio di tempo ed un inutile round trip. Metadata Il Metadata di Breeze descrive i tipi di entità, e le relative relazioni fra di esse, in un modello di dati. Breeze necessita di questi metadati per comunicare con il servizio di persistenza durante l esecuzione di query. Si tratta di un insieme di informazioni che Breeze richiede autonomamente al server e che vengono restituite in formato json puro. Grazie a questi metadati creare un nuovo oggetto all interno di un entità diventa un operazione estremamente semplice con Breeze var newcoach = manager.createentity('coach', {CoachName='New Hero');

14 Promise Vs Callback Chiunque abbia scritto un minimo di codice JavaScript avrà scritto qualcosa di simile function getarticoli(callback, errorback){ $.ajax({ ); url: "/mywebapp/allspares.json", datatype: "json", success: function(data) {, // Sfrutto la callback per gestire la risposta della chiamamta ajax if (data.spares) { // OK: Abbiamo recuperato i dati, quindi possiamo invocare la callback if (typeof callback == "function" { callback(data.spares); else if (typeof errorback == "function") { errorback(new Error("Nessun Articolo Trovato"); error: function(jqxhr, textstatus, errorthrown) if (typeof errorback == "function") { errorback(errorthrown); La funzione getarticoli() dell esempio non ritorna nessun valore. L uso delle callback ci obbliga a scrivere codice strettamente accoppiato; dobbiamo conoscere esattamente dove inserire la chiamata alla callback per sortire l effetto desiderato e questo ci preclude la strada al riutilizzo del codice che stiamo scrivendo, cosa che a noi programmatori sfaticati e pigri non piace affatto! Per nostra fortuna le nuove librerie JavaScript ci offrono un alternativa alle callback, ovvero le promise, una promessa.

15 Una promise è un oggetto che rappresenta il valore di un azione asincrona, una cambiale per informazioni. Lo strumento messo a disposizione da jquery per implementare il meccanismo delle promise è l oggetto Deferred. L esempio riportato sopra, con l uso delle promise diventa function getarticoli(){ // Creo un'istanza dell'oggetto Deferred var deferred = new $.Deferred(); // Non faccio altro che invocare la mia funzione tramite Ajax... esattamente come prima $.ajax({ url: "/mywebapp/allspares.json", datatype: "json", success: function(data) { if (data.spares) { deferred.resolve(data.spares); else { deferred.reject(new Error("Nessun Articolo Trovato"));, error: function(jqxhr, textstatus, errorthrown) { deferred.reject(errorthrown); ); // Restituisco la promessa che rappresenta l'anagrafica articoli return deferred.promise(); La differenza fondamentale rispetto al primo approccio è la presenza di un valore di ritorno, cosa assolutamente non prevista nella versione basata sulle callback.

16 L oggetto che viene restituito è la cambiale, ovvero la promessa che il nostro utente potrà utilizzare per ottenere le informazioni che appunto gli abbiamo promesso, non appena queste saranno disponibili. La Deferred è il meccanismo con cui gestisco la promessa; posso creare una promessa che poi restituisco al mio utente, proprio come se lavorassi in maniera asincrona. Sarà l utente, avendo ora a disposizione questo oggetto, a collegare ad esso una callback per accedere ai valori richiesti: getarticoli().then (function (spare) { for (var i = 0, l = spares.length, i <l, i + +) { //... code code code and code more ); Si potrebbe obiettare dicendo che alla fine è ancora una callback quella che mi serve. Certamente! Ma a invocare e consumare la callback ora è il codice che ha invocato il tutto, la mia funzione non è assolutamente accoppiata con esso; in questo modo abbiamo astratto la funzione di estrazione articoli e possiamo riutilizzarla ognivolta che ci tornerà comodo, decidendo di volta in volta quale funzione attaccare tramite callback. La libreria che ci permette di gestire le promise è Q.js

17 Function Modules in RequireJS La caratteristica principale di RequireJS è la possibilità di definire un modulo come funzione. Se in un primo momento questo può sembrare una caratteristica piuttosto semplice, come in effetti lo è, ci sono alcuni aspetti pratici in cui tornare una funzione come modulo può rivelarsi piuttosto utile. L implementazione di una funzione come modulo è piuttosto semplice // random.js define(function(){ ); return function(min, max){ return Math.floor((Math.random()*max)+min); Dopo di che il modulo può essere richiamato nel modo seguente: require(['random'], function(random){ console.log(random(1,10)): ); Un modulo può essere utilizzato come mezzo conveniente per creare uno specifico tipo di oggetto su una entità in base a determinate condizioni. Prendiamo questo semplice esempio che, dato uno specifico ruolo, restituisce un implementazione corrispondente della View // app/views/editors/editorfactory.js define(function(require){ var editors = { 'admin' : require('editors/admineditorview'), 'user' : require('editors/usereditorview'), 'guest' : require('editors/guesteditorview'), // additional implementations... ; return function(role){ try {

18 ); return new editors[role]; catch(error) { throw new Error('Unknown Role Specified.'); Il ViewModels può semplicemente invocare il modulo per recuperare l appropriata implementazione della View in base al ruolo specificato define(function(require){ var factory = require('editors/editorfactory'); return Backbone.View.extend({ render: function(){ //... view rendering this.editor = factory(this.model.get('role')); this.editor.render(); ); ); La definizione di funzioni come modulo semplifica notevolmente l implementazione del codice, consentendo una scrittura del codice più semplice, facilmente testabile e manutenibile.

19 Fonti

Introduzione ad AJAX

Introduzione ad AJAX Introduzione ad AJAX Asynchronous Javascript And XML (PWLS 6.9, 6.10) Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 1 Limitazioni delle applicazioni web tradizionali

Dettagli

MODEL-VIEW-CONTROLLER PROBLEMA

MODEL-VIEW-CONTROLLER PROBLEMA MODEL VIEW CONTROLLER DESIGN PATTERN MODEL-VIEW-CONTROLLER INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2013 2014 rcardin@math.unipd.it

Dettagli

Sviluppo di applicazioni web con il pattern Model-View-Controller. Gabriele Pellegrinetti

Sviluppo di applicazioni web con il pattern Model-View-Controller. Gabriele Pellegrinetti Sviluppo di applicazioni web con il pattern Model-View-Controller Gabriele Pellegrinetti 2 MVC: come funziona e quali sono vantaggi che derivano dal suo utilizzo? La grande diffusione della tecnologia

Dettagli

CakePHP - 101 Creare un'applicazione con CakePHP. massimoi@impronta48.it http://impronta48.it

CakePHP - 101 Creare un'applicazione con CakePHP. massimoi@impronta48.it http://impronta48.it CakePHP - 101 Creare un'applicazione con CakePHP massimoi@impronta48.it http://impronta48.it Come Installare cakephp 1.3.x 1) Mi collego a https://github.com/cakephp/cakephp/archives/1.3 2) Salvo il file

Dettagli

Corso Analista Programmatore Java Corso Online Analista Programmatore Java

Corso Analista Programmatore Java Corso Online Analista Programmatore Java Corso Analista Programmatore Java Corso Online Analista Programmatore Java Accademia Futuro info@accademiafuturo.it Programma Generale del Corso Analista Programmatore Java Tematiche Trattate Modulo Uno

Dettagli

AJAX. Goy - a.a. 2006/2007 Servizi Web 1. Cos'è il Web 2.0

AJAX. Goy - a.a. 2006/2007 Servizi Web 1. Cos'è il Web 2.0 AJAX Goy - a.a. 2006/2007 Servizi Web 1 Cos'è il Web 2.0 Web 2.0 = termine introdotto per la prima volta nel 2004 come titolo di una conferenza promossa dalla casa editrice O Reilly L'idea è che ci si

Dettagli

Flavio De Paoli depaoli@disco.unimib.it

Flavio De Paoli depaoli@disco.unimib.it Flavio De Paoli depaoli@disco.unimib.it 1 Il web come architettura di riferimento Architettura di una applicazione web Tecnologie lato server: Script (PHP, Pyton, Perl), Servlet/JSP, ASP Tecnologie lato

Dettagli

aggiunge del testo nella parte finale del tag, in questo caso la stringa da controllare.

aggiunge del testo nella parte finale del tag, in questo caso la stringa da controllare. Capitolo 6 jquery Negli ultimi anni è stata rilasciata una mole incalcolabile di framework JavaScript, più o meno completi, realizzati per supportare nel miglior modo possibile lo sviluppatore web aiutandolo

Dettagli

Corso analista programmatore Java. Corso analista programmatore Java Programma

Corso analista programmatore Java. Corso analista programmatore Java Programma Corso analista programmatore Java Programma 1.1 Obiettivo e modalità di fruizione L obiettivo del corso è di fornire le conoscenze tecniche e metodologiche per svolgere la professione di Programmatore

Dettagli

Corso di Applicazioni Telematiche

Corso di Applicazioni Telematiche Asynchronous JavaScript Technology and XML: Ajax Corso di Applicazioni Telematiche A.A. 2010-11 Prof. Simon Pietro Romano Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rich Internet

Dettagli

Tecnologie e Programmazione Web

Tecnologie e Programmazione Web Presentazione 1 Tecnologie e Programmazione Web Html, JavaScript e PHP RgLUG Ragusa Linux Users Group SOftware LIbero RAgusa http://www.solira.org - Nunzio Brugaletta (ennebi) - Reti 2 Scopi di una rete

Dettagli

Design Patterns. Sommario. Architettura a 3 Livelli Concetti Generali Presentazione Dominio Sorgente Dati DIB 1. Design Patterns DIB 2

Design Patterns. Sommario. Architettura a 3 Livelli Concetti Generali Presentazione Dominio Sorgente Dati DIB 1. Design Patterns DIB 2 DIB 1 Sommario Architettura a 3 Livelli Concetti Generali Presentazione Dominio Sorgente Dati DIB 2 Architettura a 3 Livelli DIB 3 Architettura a 3 Livelli Presentazione Gestione dell interazione degli

Dettagli

Integrazione della piattaforma Ajax in un sistema web multi-agente realizzato col framework applicativo Spring

Integrazione della piattaforma Ajax in un sistema web multi-agente realizzato col framework applicativo Spring dott. Longari Michele Matricola: 180852 Ingegneria informatica spec. E-mail: longari@ce.unipr.it Integrazione della piattaforma Ajax in un sistema web multi-agente realizzato col framework applicativo

Dettagli

Port Community System del Porto di Ravenna CONFIGURAZIONE

Port Community System del Porto di Ravenna CONFIGURAZIONE Port Community System del Porto di Ravenna CONFIGURAZIONE SOMMARIO Indicazioni generali... 3 Dipendenze software... 4 Lato server... 4 Lato client... 4 Organizzazione del sistema... 5 Struttura delle directory...

Dettagli

Corso di Informatica Modulo T3 B1 Programmazione web

Corso di Informatica Modulo T3 B1 Programmazione web Corso di Informatica Modulo T3 B1 Programmazione web 1 Prerequisiti Architettura client/server Elementi del linguaggio HTML web server SQL server Concetti generali sulle basi di dati 2 1 Introduzione Lo

Dettagli

Tecnologie per il Web. Il web: Architettura HTTP HTTP. SSL: Secure Socket Layer

Tecnologie per il Web. Il web: Architettura HTTP HTTP. SSL: Secure Socket Layer Tecnologie per il Web Il web: architettura e tecnologie principali Una analisi delle principali tecnologie per il web Tecnologie di base http, ssl, browser, server, firewall e proxy Tecnologie lato client

Dettagli

Siti interattivi e dinamici. in poche pagine

Siti interattivi e dinamici. in poche pagine Siti interattivi e dinamici in poche pagine 1 Siti Web interattivi Pagine Web codificate esclusivamente per mezzo dell HTML non permettono alcun tipo di interazione con l utente, se non quella rappresentata

Dettagli

PROGRAMMA DEL CORSO MASTER WEB DEVELOPER

PROGRAMMA DEL CORSO MASTER WEB DEVELOPER PROGRAMMA DEL CORSO MASTER WEB DEVELOPER Il corso Master Web Developer con Certificazione internazionale Adobe Dreamweaver prepara lo studente a entrare nel mondo dello sviluppo Web (blog, siti, portali).

Dettagli

Corso Android Corso Online Sviluppo su Cellulari con Android

Corso Android Corso Online Sviluppo su Cellulari con Android Corso Android Corso Online Sviluppo su Cellulari con Android Accademia Futuro info@accademiafuturo.it Programma Generale del Corso di Sviluppo su Cellulari con Android Programma Base Modulo Uno - Programmazione

Dettagli

Una soluzione WEB-GIS per la pubblicazione di dati statistici della Regione Sardegna

Una soluzione WEB-GIS per la pubblicazione di dati statistici della Regione Sardegna Una soluzione WEB-GIS per la pubblicazione di dati statistici della Regione Sardegna Sergio Loddo, Luca Devola GFOSS - Cagliari, 27 febbraio 2009 Indice 1. Presentazione 2. Progetto 3. Architettura, metodologia

Dettagli

Open Web Studio un altro modo per sviluppare rapidamente con DotNetNuke. Roberto Caporale roberto@bizcomit.it

Open Web Studio un altro modo per sviluppare rapidamente con DotNetNuke. Roberto Caporale roberto@bizcomit.it Open Web Studio un altro modo per sviluppare rapidamente con DotNetNuke Roberto Caporale roberto@bizcomit.it Cos e OWS Un modulo di DotNetNuke Un ambiente di sviluppo Rad Un framework estendibile Cos era?

Dettagli

La tecnica AJAX. Progettazione di Sistemi Interattivi. Implementazione di sistemi interattivi web-based (seconda parte) Esempio: Google Maps

La tecnica AJAX. Progettazione di Sistemi Interattivi. Implementazione di sistemi interattivi web-based (seconda parte) Esempio: Google Maps Progettazione di Sistemi Interattivi Implementazione di sistemi interattivi web-based (seconda parte) Docente: Daniela Fogli La tecnica AJAX AJAX: Asynchronous Javascript and XML Tecnica (insieme di tecnologie)

Dettagli

Lezione di Basi di Dati 1 18/11/2008 - TECNOLOGIE PER IL WEB: CGI - AJAX SERVLETS & JSP

Lezione di Basi di Dati 1 18/11/2008 - TECNOLOGIE PER IL WEB: CGI - AJAX SERVLETS & JSP EVOLUZIONE DEL WEB: PAGINE STATICHE vs PAGINE DINAMICHE Il Web è nato a supporto dei fisici, perché potessero scambiare tra loro le informazioni inerenti le loro sperimentazioni. L HTTP è nato inizialmente

Dettagli

Implementazione di MVC. Gabriele Pellegrinetti

Implementazione di MVC. Gabriele Pellegrinetti Implementazione di MVC Gabriele Pellegrinetti 2 Come implementare il pattern Model View Controller con le tecnologie JSP, ASP e XML Implementazione del pattern MVC in Java (JSP Model 2) SUN è stato il

Dettagli

ASP.NET MVC: non solo «tennologgia»

ASP.NET MVC: non solo «tennologgia» ASP.NET MVC: non solo «tennologgia» Andrea Saltarello (Solution) Architect @ Managed Designs S.r.l. http://www.manageddesigns.it andysal@gmail.com http://blogs.ugidotnet.org/pape http://twitter.com/andysal74

Dettagli

Nicolò Carandini HTTP, Web Services e RestSharp (II parte) 1

Nicolò Carandini HTTP, Web Services e RestSharp (II parte) 1 Nicolò Carandini HTTP, Web Services e RestSharp (II parte) 1 HTTP, Web Services e RestSharp Dopo aver descritto nella prima parte di quest articolo 1 le basi su cui poggia la comunicazione nel Word Wide

Dettagli

Mobile & Technology. Area di formazione. Corso ios base. Corso ios avanzato. Il mondo delle App: idee, creatività, business.

Mobile & Technology. Area di formazione. Corso ios base. Corso ios avanzato. Il mondo delle App: idee, creatività, business. Area di formazione Mobile & Technology 01 02 03 04 05 Corso ios base Corso ios avanzato Il mondo delle App: idee, creatività, business Progetto App AngularJS - Up and running 01 Corso ios base Ore: 24

Dettagli

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database Corso di Informatica Modulo T3 B3 Programmazione lato server 1 Prerequisiti Architettura client/server Conoscenze generali sui database 2 1 Introduzione Lo scopo di questa Unità è descrivere gli strumenti

Dettagli

OSSIF WEB. Manuale query builder

OSSIF WEB. Manuale query builder OSSIF WEB Manuale query builder - Maggio 2010 1) Sommario 1) SOMMARIO... 2 INTRODUZIONE... 3 Scopo del documento... 3 Struttura del documento... 3 Descrizione dell interfaccia grafica... 3 SELEZIONE DI

Dettagli

UNIVERSITA DI FIRENZE Facoltà di Ingegneria. Persistenza Applicazioni Enterprise Uso dei modelli

UNIVERSITA DI FIRENZE Facoltà di Ingegneria. Persistenza Applicazioni Enterprise Uso dei modelli UNIVERSITA DI FIRENZE Facoltà di Ingegneria Persistenza Applicazioni Enterprise Uso dei modelli 1 IL problema della persistenza APPLICAZIONE (programmi) (oggetti) DATI PERSISTENTI (file, record) (basi

Dettagli

Attacchi alle applicazioni web: SQL injection e Cross-site scripting (XSS)

Attacchi alle applicazioni web: SQL injection e Cross-site scripting (XSS) UNIVERSITÀ DEGLI STUDI DI CATANIA Facoltà di Ingegneria Corso di laurea Specialistica in Ingegneria Informatica Tesina di Sicurezza nei Sistemi informativi Simona Ullo Attacchi alle applicazioni web: SQL

Dettagli

Componenti Web: client-side e server-side

Componenti Web: client-side e server-side Componenti Web: client-side e server-side side Attività di applicazioni web Applicazioni web: un insieme di componenti che interagiscono attraverso una rete (geografica) Sono applicazioni distribuite logicamente

Dettagli

Guida Utente della PddConsole. Guida Utente della PddConsole

Guida Utente della PddConsole. Guida Utente della PddConsole Guida Utente della PddConsole i Guida Utente della PddConsole Guida Utente della PddConsole ii Copyright 2005-2014 Link.it srl Guida Utente della PddConsole iii Indice 1 Introduzione 1 2 I protocolli di

Dettagli

Guida pratica all utilizzo di Zeroshell

Guida pratica all utilizzo di Zeroshell Guida pratica all utilizzo di Zeroshell Il sistema operativo multifunzionale creato da Fulvio.Ricciardi@zeroshell.net www.zeroshell.net Proteggere una piccola rete con stile ( Autore: cristiancolombini@libero.it

Dettagli

Guida Utente della PddConsole. Guida Utente della PddConsole

Guida Utente della PddConsole. Guida Utente della PddConsole Guida Utente della PddConsole i Guida Utente della PddConsole Guida Utente della PddConsole ii Copyright 2005-2015 Link.it srl Guida Utente della PddConsole iii Indice 1 Introduzione 1 2 I protocolli di

Dettagli

Esercitazione 8. Basi di dati e web

Esercitazione 8. Basi di dati e web Esercitazione 8 Basi di dati e web Rev. 1 Basi di dati - prof. Silvio Salza - a.a. 2014-2015 E8-1 Basi di dati e web Una modalità tipica di accesso alle basi di dati è tramite interfacce web Esiste una

Dettagli

Analisi e utilizzo di un framework per lo sviluppo di applicazioni web

Analisi e utilizzo di un framework per lo sviluppo di applicazioni web tesi di laurea Anno Accademico 2011/2012 relatore Ch.mo prof. Marcello Cinque correlatore Ing. Fabio De Paolis candidato Michele Basile Matr. 534/3239 Web Development Frameworks Nella realizzazione di

Dettagli

Area di formazione. Mobile & Technology. Ingolosito dalle nuove tecnologie? Appassionato di sviluppo App e Mobile? Corso ios avanzato Swift

Area di formazione. Mobile & Technology. Ingolosito dalle nuove tecnologie? Appassionato di sviluppo App e Mobile? Corso ios avanzato Swift Area di formazione Mobile & Technology Ingolosito dalle nuove tecnologie? Appassionato di sviluppo App e Mobile? 01 02 03 04 05 Corso ios base Swift Corso ios avanzato Swift AngularJS Up and running Ideare

Dettagli

Corso Android Corso Online Programmatore Android

Corso Android Corso Online Programmatore Android Corso Android Corso Online Programmatore Android Accademia Domani Via Pietro Blaserna, 101-00146 ROMA (RM) info@accademiadomani.it Programma Generale del Corso Modulo Uno - Programmazione J2ee 1) Programmazione

Dettagli

Introduzione al linguaggio Java: Servlet e JSP

Introduzione al linguaggio Java: Servlet e JSP Introduzione al linguaggio Java: Servlet e JSP Corso di Gestione della Conoscenza d Impresa A. A. 2006/2007 Dipartimento di Informatica Università degli Studi di Bari 1 Servlet e JSP: il contesto Un applicazione

Dettagli

Corso Programmazione Java Android. Programma

Corso Programmazione Java Android. Programma Corso Programmazione Java Android Programma 1.1 Obiettivo e modalità di fruizione L obiettivo del corso è di fornire le conoscenze tecniche e metodologiche per svolgere la professione di Programmatore

Dettagli

Esploriamo Javascript! 1 di Ivan Venuti

Esploriamo Javascript! 1 di Ivan Venuti Esploriamo Javascript! 1 di Ivan Venuti L Html è stato pensato (e creato) per presentare contenuti statici che, visualizzati da utenti diversi, diano sempre lo stesso risultato. Per sopperire a questa

Dettagli

UNIVERSITA' DEGLI STUDI DELL'INSUBRIA. Facoltà di Informatica

UNIVERSITA' DEGLI STUDI DELL'INSUBRIA. Facoltà di Informatica UNIVERSITA' DEGLI STUDI DELL'INSUBRIA Facoltà di Informatica Anno accademico 2009/2010 Corso di Web 2.0 Barboni Stefano 702499 Castiglioni Andrea 700484 Modugno Manlio 701896 Sommario Introduzione... 3

Dettagli

Event loop. Event Loop. Carica il programma, quindi. Finché c è altro da fare. Attendi che qualcosa accada. Termina, a meno che non ci sia altro

Event loop. Event Loop. Carica il programma, quindi. Finché c è altro da fare. Attendi che qualcosa accada. Termina, a meno che non ci sia altro NODE.JS Node.js Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight

Dettagli

Architetture Web I Server Web e gli Standard della Comunicazione

Architetture Web I Server Web e gli Standard della Comunicazione Architetture Web I Server Web e gli Standard della Comunicazione Alessandro Martinelli alessandro.martinelli@unipv.it 1 Aprile 2014 Architetture Web I Server Web e gli Standard della Comunicazione Il Server

Dettagli

Corso Online. We Train Italy info@wetrainitaly.it

Corso Online. We Train Italy info@wetrainitaly.it Corso Online Programmatore Java New Edition We Train Italy info@wetrainitaly.it Programma Generale del Corso Programmatore Java New Edition 1. Introduzione al corso Java da 0 al web Presentazione del corso

Dettagli

Capitolo 1. Hello, {{name}}

Capitolo 1. Hello, {{name}} Capitolo 1 Hello, {{name}} Il modo migliore per imparare a programmare è scrivere codice, ed è proprio questo ciò che faremo. Per comprendere quanto è facile essere subito operativi con Bootstrap e AngularJS,

Dettagli

Telematica II 7. Introduzione ai protocolli applicativi

Telematica II 7. Introduzione ai protocolli applicativi Indice Standard ISO/OSI e TCP/IP Telematica II 7. Introduzione ai protocolli applicativi Modello Client / Server I Socket Il World Wide Web Protocollo HTTP Corso di Laurea in Ingegneria Informatica A.A.

Dettagli

Programmazione Java Avanzata

Programmazione Java Avanzata Programmazione Java Avanzata Accesso ai Dati Ing. Giuseppe D'Aquì Testi Consigliati Eclipse In Action Core J2EE Patterns - DAO [http://java.sun.com/blueprints/corej2eepatterns/patterns/dataaccessobject.html]

Dettagli

Sviluppare applicazioni per Windows Phone

Sviluppare applicazioni per Windows Phone Sviluppare applicazioni per Windows Phone Daniele Bochicchio - Cristian Civera - Marco De Sanctis - Alessio Leoncini - Marco Leoncini ISBN: 9788820347697 http://books.aspitalia.com/windows-phone/ Contenuti

Dettagli

Guida Utente della PddConsole. Guida Utente della PddConsole

Guida Utente della PddConsole. Guida Utente della PddConsole Guida Utente della PddConsole i Guida Utente della PddConsole Guida Utente della PddConsole ii Copyright 2005-2014 Link.it srl Guida Utente della PddConsole iii Indice 1 Introduzione 1 2 Prerequisiti per

Dettagli

Ministero dell Istruzione dell Università e della Ricerca M070 ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE

Ministero dell Istruzione dell Università e della Ricerca M070 ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE Pag. 1/1 Sessione ordinaria 2010 Seconda prova scritta Ministero dell Istruzione dell Università e della Ricerca M070 ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE CORSO DI ORDINAMENTO Indirizzo: INFORMATICA

Dettagli

Architettura del software: dai Casi d Uso al Modello

Architettura del software: dai Casi d Uso al Modello Architettura del software: dai Casi d Uso al Modello Lorenzo Barbieri Sono un Senior Trainer/Consultant in ObjectWay SpA (www.objectway.it), specializzato in architetture Microsoft.NET, Windows, SQL Server,

Dettagli

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML Reti Linguaggio HTML 1 HTML = Hypertext Markup Language E il linguaggio usato per descrivere documenti ipertestuali Ipertesto = Testo + elementi di collegamento ad altri testi (link) Linguaggio di markup:

Dettagli

JUG Ancona Italy. Andrea Del Bene. Jug Marche

JUG Ancona Italy. Andrea Del Bene. Jug Marche JUG Ancona Italy SpringMVC AndreaDelBene JugMarche Cos'èSpringMVC? Spring MVC è il sotto-framework di Spring che permetti di servirsi del Framework Spring per realizzare applicazioni web. Possiamo quindi

Dettagli

Indice generale. Introduzione...xv. Parte I Per iniziare Capitolo 1 Introduzione allo sviluppo ios con tecnologie web...3

Indice generale. Introduzione...xv. Parte I Per iniziare Capitolo 1 Introduzione allo sviluppo ios con tecnologie web...3 Introduzione...xv A chi si rivolge questo libro...xv Gli argomenti trattati...xv Com è organizzato il libro...xvi Cosa occorre per utilizzare il libro...xvii Convenzioni adottate...xvii Il codice sorgente...xviii

Dettagli

Appunti della lezione del 8/10/2008 del corso di Basi di dati I - Università del Salento

Appunti della lezione del 8/10/2008 del corso di Basi di dati I - Università del Salento Appunti della lezione del 8/10/2008 del corso di Basi di dati I - Università del Salento Tecnologie per lo sviluppo di applicazioni La tendenza attuale dell'ingegneria è quella dell'integrazione di componenti

Dettagli

Protocolli e architetture per WIS

Protocolli e architetture per WIS Protocolli e architetture per WIS Web Information Systems (WIS) Un Web Information System (WIS) usa le tecnologie Web per permettere la fruizione di informazioni e servizi Le architetture moderne dei WIS

Dettagli

Corso di Web programming Modulo T3 A2 - Web server

Corso di Web programming Modulo T3 A2 - Web server Corso di Web programming Modulo T3 A2 - Web server 1 Prerequisiti Pagine statiche e dinamiche Pagine HTML Server e client Cenni ai database e all SQL 2 1 Introduzione In questa Unità si illustra il concetto

Dettagli

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 12 JDBC + Cosa vediamo nella lezione di oggi Oggi analizzeremo insieme una specifica tecnologia Java per l accesso e la manipolazione di basi di dati relazionali

Dettagli

SOFTWARE DEVELOPMENT JUNIOR SPECIALIST

SOFTWARE DEVELOPMENT JUNIOR SPECIALIST SKILL4YOU ACADEMY MICROSOFT SOFTWARE DEVELOPMENT JUNIOR SPECIALIST PERCORSO ACADEMY MICROSOFT SOFTWARE DEVELOPMENT JUNIOR SPECIALIST A CHI E RIVOLTO IL CORSO ACADEMY MICROSOFT SOFTWARE DEVELOPMENT JUNIOR

Dettagli

A LAP AROUND WEB APPLICATIONS WITH.NET 4.0

A LAP AROUND WEB APPLICATIONS WITH.NET 4.0 A LAP AROUND WEB APPLICATIONS WITH.NET 4.0 ASP.NET, MVC, Ajax Ugo Lattanzi Software Architect @ Gaia Microsoft MVP, MCP Twitter: @imperugo Blog: http://tostring.it E-mail: imperugo@gmail.com Agenda ASP.NET

Dettagli

MetaMAG METAMAG 1 IL PRODOTTO

MetaMAG METAMAG 1 IL PRODOTTO METAMAG 1 IL PRODOTTO Metamag è un prodotto che permette l acquisizione, l importazione, l analisi e la catalogazione di oggetti digitali per materiale documentale (quali immagini oppure file di testo

Dettagli

WEB TECHNOLOGY. Il web connette. LE persone. E-book n 2 - Copyright Reserved

WEB TECHNOLOGY. Il web connette. LE persone. E-book n 2 - Copyright Reserved WEB TECHNOLOGY Il web connette LE persone Indice «Il Web non si limita a collegare macchine, ma connette delle persone» Il Www, Client e Web Server pagina 3-4 - 5 CMS e template pagina 6-7-8 Tim Berners-Lee

Dettagli

Indice generale. Le persone dietro questo libro...xi. Introduzione...xv. Innamorarsi di jquery...1

Indice generale. Le persone dietro questo libro...xi. Introduzione...xv. Innamorarsi di jquery...1 Indice generale Le persone dietro questo libro...xi Introduzione...xv A chi si rivolge questo libro...xvi Contenuti del libro...xvi Dove trovare informazioni...xviii Il sito web del libro...xix Le newsletter

Dettagli

Quando si sa chiaramente come si deve comportare l applicazione si può analizzare una possibile soluzione applicativa.

Quando si sa chiaramente come si deve comportare l applicazione si può analizzare una possibile soluzione applicativa. Introduzione alla tecnologia JMX 1 Viene analizzata l architettura sottostante le Java Managment Extensions (JMX) mostrandone un utilizzo applicativo e analizzando altri possibili scenari d uso di Ivan

Dettagli

Sviluppo di un applicazione mobile per la gestione degli interventi tecnici tramite geolocalizzazione

Sviluppo di un applicazione mobile per la gestione degli interventi tecnici tramite geolocalizzazione UNIVERSITA DEGLI STUDI DI FERRARA Corso di Laurea in informatica Anno Accademico 2011-2012 Sviluppo di un applicazione mobile per la gestione degli interventi tecnici tramite geolocalizzazione Relatore:

Dettagli

Architetture Software

Architetture Software Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Ingegneria del Software Architetture Software Giulio Destri Ing. del Sw: Architettura - 1 Scopo del modulo

Dettagli

APPENDICE 4 AL CAPITOLATO SPECIFICHE TECNICHE - MODALITÀ ELETTRONICHE DI PAGAMENTO

APPENDICE 4 AL CAPITOLATO SPECIFICHE TECNICHE - MODALITÀ ELETTRONICHE DI PAGAMENTO APPENDICE 4 AL CAPITOLATO SPECIFICHE TECNICHE - MODALITÀ ELETTRONICHE DI PAGAMENTO I POS NEGLI UFFICI DELATE - TERRITORIO RMINALI POS NEGLI UFFICI - TERRITORIO INDICE 1. Premessa... 3 2. Requisiti tecnici...

Dettagli

Manuale Gestione di OpenSPCoop 1.4 i. Manuale Gestione di OpenSPCoop 1.4

Manuale Gestione di OpenSPCoop 1.4 i. Manuale Gestione di OpenSPCoop 1.4 i Manuale Gestione di OpenSPCoop 1.4 ii Copyright 2005-2011 Link.it srl iii Indice 1 Introduzione 1 2 Prerequisiti per la Configurazione della Porta di Dominio 1 2.1 Verifica dell applicazione di gestione

Dettagli

Componenti di una applicazione. Un programma applicativo è strutturato come un insieme organizzato di tre componenti funzionali:

Componenti di una applicazione. Un programma applicativo è strutturato come un insieme organizzato di tre componenti funzionali: Componenti di una applicazione Un programma applicativo è strutturato come un insieme organizzato di tre componenti funzionali: Un sottosistema di interfaccia con l utente (IU, user interface o anche presentation

Dettagli

Stack protocolli TCP/IP

Stack protocolli TCP/IP Stack protocolli TCP/IP Application Layer Transport Layer Internet Layer Host-to-Nework Layer DNS SMTP Telnet HTTP TCP UDP IP Insieme di eterogenei sistemi di rete... 1 Concetti base Differenza tra i concetti

Dettagli

I linguaggi di programmazione per i servizi in multicanalità

I linguaggi di programmazione per i servizi in multicanalità I linguaggi di programmazione per i servizi in multicanalità Gianluca Daino Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione daino@unisi.it I servizi delle reti Un servizio

Dettagli

CORSO DI PROGRAMMAZIONE JAVA

CORSO DI PROGRAMMAZIONE JAVA CORSO DI PROGRAMMAZIONE JAVA Corso di Programmazione Java Standard Edition ( MODULO A) OBIETTIVI ll corso ha come obiettivo quello di introdurre la programmazione a oggetti (OOP) e di fornire solide basi

Dettagli

MEGA Advisor Architecture Overview MEGA 2009 SP5

MEGA Advisor Architecture Overview MEGA 2009 SP5 Revisione: August 22, 2012 Creazione: March 31, 2010 Autore: Jérôme Horber Contenuto Riepilogo Il documento descrive i requisiti sistema e le architetture di implementazione possibili per MEGA Advisor.

Dettagli

Concetti fondamentali

Concetti fondamentali Node.js Concetti fondamentali by Stefano Burigat Esecuzione asincrona Quasi tutte le funzioni in node vengono eseguite in modo asincrono (a tal punto che molte funzioni hanno una versione sincrona che

Dettagli

UNIVERSITÀ DEGLI STUDI DI FIRENZE. Relazione elaborato di progettazione e produzione multimediale

UNIVERSITÀ DEGLI STUDI DI FIRENZE. Relazione elaborato di progettazione e produzione multimediale UNIVERSITÀ DEGLI STUDI DI FIRENZE Relazione elaborato di progettazione e produzione multimediale AllPainters.Net SISTEMA PER LA GENERAZIONE DI SITI GRATUITI PER PITTORI Autori: - Bandini Roberto - Ercoli

Dettagli

Concetti base. Impianti Informatici. Web application

Concetti base. Impianti Informatici. Web application Concetti base Web application La diffusione del World Wide Web 2 Supporto ai ricercatori Organizzazione documentazione Condivisione informazioni Scambio di informazioni di qualsiasi natura Chat Forum Intranet

Dettagli

PROGETTI DISPONIBILI IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI

PROGETTI DISPONIBILI IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI PROGETTI DISPONIBILI IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI 1 Web Link Monitor... 2 2 Database Browser... 4 3 Network Monitor... 5 4 Ghost Site... 7 5 Copy Search... 9 6 Remote Audio Video

Dettagli

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment Obiettivi d esame PHP Developer Fundamentals on MySQL Environment 1.0 Ambiente di sviluppo 1.1 Web server e database MySQL Comprendere la definizione dei processi che si occupano di fornire i servizi web

Dettagli

Framework Rich Client Application

Framework Rich Client Application Framework Rich Client Application RELATORE: Paolo Giardiello Savona, 30 settembre 2010 Agenda La Sogei Le applicazioni client Sogei Le caratteristiche Le soluzioni possibili Java Web Start Eclipse La scelta:

Dettagli

Le funzionalità principali della piattaforma

Le funzionalità principali della piattaforma Istituto di Scienza e Tecnologie dell'informazione A Faedo (ISTI) - Laboratorio di domotica Quimby: Le funzionalità principali della piattaforma Dario Russo (dario.russo@isti.cnr.it) Obiettivi del progetto

Dettagli

BrightSync: progetto di un middleware di sincronizzazione per ambienti eterogenei

BrightSync: progetto di un middleware di sincronizzazione per ambienti eterogenei Corso di Laurea Specialistica in Ingegneria Informatica Reti di Calcolatori LS prof. Antonio Corradi BrightSync: progetto di un middleware di sincronizzazione per ambienti eterogenei di Emanuele Crescentini

Dettagli

Primi passi con Jamio Composer. Dall idea applicativa alla soluzione in pochi minuti

Primi passi con Jamio Composer. Dall idea applicativa alla soluzione in pochi minuti Primi passi con Jamio Composer Dall idea applicativa alla soluzione in pochi minuti Comporre una nuova soluzione applicativa Jamio Composer è l ambiente di modellazione della piattaforma Jamio. Le soluzioni

Dettagli

Come funziona internet

Come funziona internet Come funziona internet Architettura client server URL/URI Richiesta (Request) Risposta (Response) Pagina url e uri Uno Uniform Resource Identifier (URI, acronimo più generico rispetto ad "URL") è una stringa

Dettagli

Laboratorio di reti II: Java Server Pages

Laboratorio di reti II: Java Server Pages Laboratorio di reti II: Java Server Pages Stefano Brocchi brocchi@dsi.unifi.it 6 aprile, 2009 Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 1 / 34 JSP - Java Server Pages Le

Dettagli

LBINT. http://www.liveboxcloud.com

LBINT. http://www.liveboxcloud.com 2014 LBINT http://www.liveboxcloud.com LiveBox Srl non rilascia dichiarazioni o garanzie in merito al contenuto o uso di questa documentazione e declina qualsiasi garanzia espressa o implicita di commerciabilità

Dettagli

Nozioni di base sull utilizzo di PHP e di MySQL

Nozioni di base sull utilizzo di PHP e di MySQL Nozioni di base sull utilizzo di PHP e di MySQL Che cos è PHP? Mi sento in dovere prima di iniziare ad illustrare le nozioni di base di PHP introdurre dicendo PHP che cos è in sostanza; fino a qualche

Dettagli

*** QUESTO DOCUMENTO E' INCOMPLETO ED IN FASE AMPLIAMENTO CONTINUO. ***

*** QUESTO DOCUMENTO E' INCOMPLETO ED IN FASE AMPLIAMENTO CONTINUO. *** *** QUESTO DOCUMENTO E' INCOMPLETO ED IN FASE AMPLIAMENTO CONTINUO. *** PREFAZIONE Questo progetto nasce perchè mi sono reso conto dell'importanza che i motori di ricerca hanno su Internet. Internet rappresenta

Dettagli

Corso Creare Siti WEB

Corso Creare Siti WEB Corso Creare Siti WEB INTERNET e IL WEB Funzionamento Servizi di base HTML CMS JOOMLA Installazione Aspetto Grafico Template Contenuto Articoli Immagini Menu Estensioni Sito di esempio: Associazione LaMiassociazione

Dettagli

FileMaker 13. Guida di WebDirect

FileMaker 13. Guida di WebDirect FileMaker 13 Guida di WebDirect 2014 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker e Bento sono marchi di FileMaker,

Dettagli

ProgettAzione V anno Unità 3 - Architetture per applicazioni web Lezione: Esempio sviluppo applicazioni

ProgettAzione V anno Unità 3 - Architetture per applicazioni web Lezione: Esempio sviluppo applicazioni Unità 3 - Architetture per applicazioni web Lezione: Esempio sviluppo applicazioni Web service Hello world con Visual Studio 2012 Si tratta di un semplice esempio di web service, infatti come tutti I programmi

Dettagli

potere I efficienza I produttività Drivve Image per scansioni efficienti e controllo dei documenti

potere I efficienza I produttività Drivve Image per scansioni efficienti e controllo dei documenti potere I efficienza I produttività Drivve Image per scansioni efficienti e controllo dei documenti Drivve Image: un modo di lavorare più intelligente Drivve Image è una suite di potenti strumenti software

Dettagli

QlikView 11. qlikview.com/it. di QlikView 11

QlikView 11. qlikview.com/it. di QlikView 11 le novità di QlikView 11 QlikView 11 porta la Business Discovery a un livello superiore in quanto consente agli utenti di condividere in modo ancora più facile le informazioni con i colleghi, supportando

Dettagli

Progettazione Web Applicazioni client-server

Progettazione Web Applicazioni client-server Progettazione Web Applicazioni client-server Sviluppo di un'applicazione Web integrando: HTML MySQL PHP Apache Applicativi utilizzabili: gestione database: JDER, MySQL Workbench, HeidiSQL (Win), DBeaver

Dettagli

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi Applicazioni web Parte 6 Java Alberto Ferrari 1 Sommario Introduzione alle API ed esempi Tomcat Server per applicazioni web Alberto Ferrari 2 Alberto Ferrari 1 Java: da applet a servlet In origine Java

Dettagli

Il Web-Service SDMX dell ISTAT

Il Web-Service SDMX dell ISTAT Il Web-Service SDMX dell ISTAT Versione: 1.0.0 Data: 26/06/2014 Autore: Approvato da: Modifiche Versione Modifiche Autore Data Indice dei contenuti 1 Introduzione... 4 2 Esempio d uso... 5 2.1 Riferimento

Dettagli

Applicazione: GAS - Gestione AcceSsi

Applicazione: GAS - Gestione AcceSsi Riusabilità del software - Catalogo delle applicazioni Gestione ICT Applicazione: GAS - Gestione AcceSsi Amministrazione: Consiglio Nazionale delle Ricerche (CNR) Responsabile dei sistemi informativi Nome

Dettagli

Tratte da (18. TECNICHE DI ACCESSO AI DATABASE IN AMBIENTE INTERNET)

Tratte da (18. TECNICHE DI ACCESSO AI DATABASE IN AMBIENTE INTERNET) Tratte da (18. TECNICHE DI ACCESSO AI DATABASE IN AMBIENTE INTERNET) Ipotesi di partenza: concetti di base del networking Le ipotesi di partenza indispensabili per poter parlare di tecniche di accesso

Dettagli

PHP e MySQL. Guida scaricata da www.webstyling.it

PHP e MySQL. Guida scaricata da www.webstyling.it Home -> Manuali & Tutorials -> Guida PHP PHP e MySQL E' possibile realizzare delle applicazioni in php appoggiandosi ad un database, quale ad esempio MySQL. Con le novità introdotte ai tempi di MySQL 4.1

Dettagli