SlideShare a Scribd company logo
Hands on MVC
 Mastering the Web
Chi siamo?
Michele Capra
 sviluppatore freelance
 .Net
 mail: michele@orangecode.it
 twitter: @piccoloaiutante



Claudio Gandelli
 sviluppatore freelance
 PHP
 mail: claudio@bitcandies.com
 twitter: @cgandelli
www.flickr.com/photos/justinbaeder/5317820857
Hands on MVC - Mastering the Web
WEB
www.flickr.com/photos/loungerie/1471835306




                                             Web
Web
1990 - Tim Berners-Lee
 Pool of Human Knowledge

Web Browser WorldWideWeb
       Web Server
        Web Page
Web
Internet
URL Uniform resource locator
HTTP Hypertext Tranfer Protocol
HTML Hypertext Markup Language
CSS Cascading Stylesheet
HTTP




       www.flickr.com/photos/kryptyk/125244997
HTTP

REQUEST | RESPONSE
HTTP
HTTP
www.flickr.com/photos/tz1_1zt/3202641220




                                           HTML
HTML
             Linguaggio di markup
     Annotation & Presentation Semantic
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
          <head>
                     <title>Html</title>
          </head>
          <body>
                     <h1 id=“header”>HTML</h1>
                     <div class=“slide”>
                        <h2>Linguaggio di markup</h2>
                        <p>Annotation &amp; presentation semantic</p>
                     </div>
          </body>
</html>
HTML
                    Document Type Declaration
                    Attributi
                    Entità
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
          <head>
                     <title>Html</title>
          </head>
          <body>
                     <h1 id=“header”>HTML</h1>
                     <div class=“slide”>
                        <h2>Linguaggio di markup</h2>
                        <p>Annotation &amp; presentation semantic</p>
                     </div>
          </body>
</html>
CSS




      www.flickr.com/photos/r80o/43381087
CSS

Regole per la formattazione
          Selettori
     Override a cascata
   Priorità dei selettori
www.flickr.com/photos/90921086@N00/56844581
WEB 2.0
WEB 2.0
http://www.flickr.com/photos/respres/3231178720




WEB 2.0
?
Progettazione
Integrare servizi disponibili
Progettazione
Scelta degli strumenti adatti
     Valutare alternative
www.flickr.com/photos/tuinkabouter/497701866




Linguaggi di Programmazione
Definire l’architettura del sistema
  Realizzare codice   modulare   e


    riusabile
  Riutilizzare codice già scritto
    Non “reinventare la ruota”
Architettura Software

www.flickr.com/photos/thomashawk/43213643
Identificare i dati in gioco
Persistere i dati in maniera intelligente
       Utilizzo di storage online
  Alternative ai DB relazionali: NoSQL
www.flickr.com/photos/thomashawk/24089964




Storage
Cloud Computing or not Cloud Computing?
Cloud




        www.flickr.com/photos/8525214@N06/3884240503
Lavoro di squadra
Rispettare la pianificazione
    Gestire le risorse
Team




       www.flickr.com/photos/atomicshed/161716498
Produrre software di qualità
Robustezza Affidabilità Correttezza
www.flickr.com/photos/jeffkrause/5636722378




                                              Test
Benchmarking
Ottimizzazione
www.flickr.com/photos/luciano_meirelles/3461860276




                                                     Performance
Cavalcare il cambiamento
Adattare alle innovazioni
www.flickr.com/photos/jdhancock/3420540107




Mobile
Caso di studio
Realizzare un guestbook


1   La pagina deve mostrare i messaggi
dei visitatori



2   Gli utenti devono poter inserire i
propri messaggi
Mock up
Il prototipo HTML
Hands on MVC - Mastering the Web
Mock up
Il foglio di stile
Mock up
Il foglio di stile
Mock up
Il foglio di stile
Hands on MVC - Mastering the Web
Caso di studio

 La programmazione
www.flickr.com/photos/36182550@N08/3347465868
Spaghetti Code
          Devo realizzare il blog
        Preparo l’html necessario
 Introduco le interrogazioni al database
  Realizzo la gestione degli inserimenti
                    ==
Una pagina di codice per realizzare il blog
Spaghetti Code


    DEMO
Spaghetti Code
          Pro
   Veloce da scrivere
   Veloce da eseguire

        Contro
   Scarsa manutenibilità
    Scarsa espressività
Difficile riuso del codice
  Impossibile il Testing
Separiamo




www.flickr.com/photos/bitzcelt/3892962709
Separiamo
          Business Logic
           Presentazione

Separiamo il layer logico (ASP .net)
da quello di presentazione (HTML)
Separiamo
Logica e presentazione in file distinti
Separiamo


  DEMO
Separiamo
Abbiamo ottenuto:


Controller     contiene la logica
               dell'applicazione


  Vista        presenta i
               risultati forniti
               dal controller
Separiamo

  Percorso Request – Response
Con architettura View - Controller
www.flickr.com/photos/19724636@N00/3297328910




Refactoring MVC
Refactoring MVC
Modello   gestisce il comportamento e i dati del
    dominio applicativo, risponde a richieste di
    informazioni di stato e a istruzioni di cambio
    di stato.

Vista     traduce le informazioni ottenute dal
    modello in un formato adatto all'interazione.

Controller      serve a coordinare il processo di
    interazione: riceve gli input dell'utente e
    scatena le chiamate verso gli oggetti del
    modello, per poi passare alla vista il
    necessario a fornire l'output corretto.
Refactoring MVC
MVC


DEMO
Refactoring MVC
                Pro
       Riusabilità del codice
        Astrazione dei dati
               Ordine

             Contro
            Numero di file
          Codice da scrivere
Pattern architetturale da implementare
ASP .Net MVC
ASP .Net MVC

Primo esperimento open source di Microsoft


             Nasce da Asp.net


    Implementazione nel .Net Framework
             del pattern   MVC.
ASP .Net MVC
       Sistema di   routing
           Scaffolding

             Template

           ActionFilter

Validazione automatica lato client

      Caching delle pagine
ASP .Net MVC


    DEMO
ASP .Net MVC

Richiesta   Url Routing   Mvc Route    Mvc Handler
              Module       Handler


                                        Controller
                                         Factory



Risposta                  ViewEngine   Controller
              View
ASP .Net MVC

   Ottima testabilità del codice


Separazione delle responsabilità di
              ogni layer


    Completo controllo dell’html
PHP Way




www.flickr.com/photos/dragonbe/3411273755
Approccio Naive
         Devo realizzare il blog
       Preparo l’html necessario
Introduco le interrogazioni al database
 Realizzo la gestione degli inserimenti
                   ==
 Una pagina di codice per realizzare il blog


                                               www.flickr.com/photos/lrargerich/3187525211
Approccio Naive


     DEMO


            http://webprog.php.local/
Refactoring MVC




www.flickr.com/photos/nrivera/3988954350
Refactoring MVC
Separazione View - Controller
Refactoring MVC
   Aggiunta del Model
Refactoring MVC
 Un semplice Framework MVC
MVC


DEMO


 http://webprog.mvc.local/messages/show
Symfony Framework
Symfony
 Web Application Framework per progetti PHP
 Setup semplice
 Design “pulito”
 Tools di Testing, Debugging, Documentazione
 Generatori automatici di codice
 Gratuito e licenziato   MIT

Symfony 1 (1.4)
Symfony 2
Symfony
Setup
Si scarica il Framework o si clona
dall’SVN
Si genera un nuovo progetto con gli
strumenti CLI messi a disposizione

   $ php lib/vendor/symfony/data/bin/symfony
   generate:project webprog-symfony

   $ php symfony generate:app frontend

Si configura il webserver per puntare
alla catella pubblica “web”
Struttura del Progetto
Cartella Web

      Contiente i Front
        Controller per
            ciascuna
          applicazione

         Contiene le
       risorse pubbliche
            del sito
Cartella Apps
Contiente le applicazioni web che insistono
         sul modello di riferimento
Ogni applicazione contiene le configurazioni
     (e.g. routing) e tutti i Controller
Cartella Config
    Configurazione del progetto

Configurazione di accesso al database

      Schema dei dati per l’ORM
Creazione del modello
Grazie all’ORM a partire dalla descrizione dello schema il
modello e la persistenza verranno generati automaticamente

            $ php symfony doctrine:build –model
            $ php symfony doctrine:build --sql
Creazione di un modulo
Un modulo suddivide l’applicazione per
  “funzionalità”
Per introdurre la funzionalità di gestione dei
  nostri messaggi creiamo il modulo “message”

$ php symfony doctrine:generate-module frontend
  message Message
Elenco dei messaggi


 Controller
              View


Model
Routing
Il documento di Routing permette al
  Front Controller di indirizzare al
  Controller corretto le richieste
Symfony


 DEMO


    http://webprog.symfony.local/
Generazione di Codice
L’Admin-Generator è lo strumento
  fondamentale per il RAD

Permette la creazione di un pannello
  di amministrazione dal Modello dei
  dati
$ php symfony generate:app admin

$ php symfony doctrine:generate-admin admin
  Message --module=message
Admin Generator


        DEMO


   http://webprog.symfony.local/admin.php/message
Hands on MVC
                             Mastering the Web
                                      Grazie


Michele Capra                Claudio Gandelli
 michele@orangecode.it         claudio@bitcandies.com
 twitter: @piccoloaiutante     twitter: @cgandelli




                                                www.flickr.com/photos/donbuciak/3151055123
Hands on MVC - Mastering the Web

More Related Content

What's hot (20)

ODP
Spring Framework
NaLUG
 
PPS
Sviluppo Web Agile Con MonoRail
Stefano Ottaviani
 
PDF
Modulo 6 Spring Framework Core E Aop
jdksrl
 
PPTX
ASP.NET MVC
Raffaele Fanizzi
 
PPT
Utilizzare Windows Vista come Software Developer
Stefano Ottaviani
 
PPT
Spring 2.5
Pasquale Paola
 
PDF
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Andrea Picchi
 
PPTX
DotNetCampus 2014 - BING e Windows Store App
Massimo Bonanni
 
PPTX
Cert03 70-486 developing asp.net mvc 4 web applications
DotNetCampus
 
PDF
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
Alessandro Nadalin
 
PPT
What's New in ASP.NET 4.5 and Visual Studio 2012
Andrea Dottor
 
PPTX
ASP.NET MVC 2.0
XeDotNet
 
PPTX
Win02 bing e windows store apps
DotNetCampus
 
PPT
Introduzione a JavaScript e jQuery (2/2)
Giuseppe Vizzari
 
PPTX
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte
 
PDF
Corso WebApp iOS - Lezione 08: Optimize iOS WebApp
Andrea Picchi
 
ODP
Sviluppo applicazioni in Ruby on Rails
NERDYDOG Web Agency
 
PDF
Sviluppo web con Ruby on Rails
jekil
 
PPTX
Mvc e di spring e angular js
Riccardo Cardin
 
PPTX
Integrazione continua con TFS Build
Gian Maria Ricci
 
Spring Framework
NaLUG
 
Sviluppo Web Agile Con MonoRail
Stefano Ottaviani
 
Modulo 6 Spring Framework Core E Aop
jdksrl
 
ASP.NET MVC
Raffaele Fanizzi
 
Utilizzare Windows Vista come Software Developer
Stefano Ottaviani
 
Spring 2.5
Pasquale Paola
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Andrea Picchi
 
DotNetCampus 2014 - BING e Windows Store App
Massimo Bonanni
 
Cert03 70-486 developing asp.net mvc 4 web applications
DotNetCampus
 
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
Alessandro Nadalin
 
What's New in ASP.NET 4.5 and Visual Studio 2012
Andrea Dottor
 
ASP.NET MVC 2.0
XeDotNet
 
Win02 bing e windows store apps
DotNetCampus
 
Introduzione a JavaScript e jQuery (2/2)
Giuseppe Vizzari
 
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte
 
Corso WebApp iOS - Lezione 08: Optimize iOS WebApp
Andrea Picchi
 
Sviluppo applicazioni in Ruby on Rails
NERDYDOG Web Agency
 
Sviluppo web con Ruby on Rails
jekil
 
Mvc e di spring e angular js
Riccardo Cardin
 
Integrazione continua con TFS Build
Gian Maria Ricci
 

Similar to Hands on MVC - Mastering the Web (20)

PDF
ASP.NET
Manuel Scapolan
 
PDF
ASP.NET MVC Intro
Manuel Scapolan
 
PDF
Smau milano 2012 massimiliano del cero
SMAU
 
ODP
ConfSL: Sviluppo Applicazioni web con Symfony
Luca Saba
 
PPTX
8 - Web app e CMS - 17/18
Giuseppe Vizzari
 
PPTX
8 - Web App e CMS - 16/17
Giuseppe Vizzari
 
PPTX
7 - Web application e CMS
Giuseppe Vizzari
 
PDF
Html e Css - 1 | WebMaster & WebDesigner
Matteo Magni
 
PPTX
14 - Web designer vs Web developer ...
Giuseppe Vizzari
 
PDF
Html e Css - 1 | WebMaster & WebDesigner
Matteo Magni
 
PDF
Web 2.0 sviluppare e ottimizzare oggi
Alessandro Cinelli (cirpo)
 
PPTX
C’ era una volta il sito
Gianluigi Cogo
 
PPTX
Applicazioni web based
Marco Liverani
 
PPTX
Asp.NET MVC Framework
DotNetMarche
 
PDF
Progettazione e realizzazione di siti web, a.a. 2013-2014
Paolo Sordi
 
PPTX
Web designer vs Web developer
Giuseppe Vizzari
 
PPT
Presentazione Corso - Parte 1
Giorgio Carpoca
 
PPTX
15 - Web designer vs Web developer
Giuseppe Vizzari
 
PPTX
Le applicazioni web e i CMS (18/19)
Giuseppe Vizzari
 
PDF
Symfony va a Skuola
Fabio Giannese (Diodœ)
 
ASP.NET MVC Intro
Manuel Scapolan
 
Smau milano 2012 massimiliano del cero
SMAU
 
ConfSL: Sviluppo Applicazioni web con Symfony
Luca Saba
 
8 - Web app e CMS - 17/18
Giuseppe Vizzari
 
8 - Web App e CMS - 16/17
Giuseppe Vizzari
 
7 - Web application e CMS
Giuseppe Vizzari
 
Html e Css - 1 | WebMaster & WebDesigner
Matteo Magni
 
14 - Web designer vs Web developer ...
Giuseppe Vizzari
 
Html e Css - 1 | WebMaster & WebDesigner
Matteo Magni
 
Web 2.0 sviluppare e ottimizzare oggi
Alessandro Cinelli (cirpo)
 
C’ era una volta il sito
Gianluigi Cogo
 
Applicazioni web based
Marco Liverani
 
Asp.NET MVC Framework
DotNetMarche
 
Progettazione e realizzazione di siti web, a.a. 2013-2014
Paolo Sordi
 
Web designer vs Web developer
Giuseppe Vizzari
 
Presentazione Corso - Parte 1
Giorgio Carpoca
 
15 - Web designer vs Web developer
Giuseppe Vizzari
 
Le applicazioni web e i CMS (18/19)
Giuseppe Vizzari
 
Symfony va a Skuola
Fabio Giannese (Diodœ)
 
Ad

Recently uploaded (20)

PDF
Annual Review Of Cultural Heritage Informatics 2015 Jennifer Weil Arns
whnbxck093
 
PDF
Charlees Choices Dreamcatchers Mc Liberty Parker
nkqnohnveu1806
 
PDF
Test bank Health Assessment for Nursing Practice 6th Edition Wilson
tevbdxjqt378
 
PDF
Computer Accounting with QuickBooks Online 1st Edition Kay Test Bank
hkmqlqbqch8824
 
PDF
Macroeconomics Principles Applications and Tools 8th Edition OSullivan Soluti...
dvbnrnua706
 
PDF
Test Bank for Database Concepts, 5th Edition: Kroenke
zzpnrfsj4905
 
PDF
Scripture Discernment Johnson Luke Timothy
avzoldx633
 
PDF
Groovecoordination For Drum Set Volume 1 Andr Oettel
nhneghzysj938
 
PDF
Principles of Macroeconomics 6th Edition Mankiw Solutions Manual
sxibiti690
 
PDF
Maternity and Women’s Health Care 10th Edition by Lowdermilk Test Bank
cuaykqg6027
 
PDF
Macroeconomics 13th Edition Parkin Test Bank
dfehpsepb7021
 
PDF
Computer Security Principles And Practice 2nd Edition Stallings Solutions Manual
fkadqvqtu4098
 
PDF
Microelettronica 5th Edition Richard C. Jaeger
ierumjlbao1610
 
PDF
Test Bank for Biology: Concepts and Investigations, 4th Edition, Mariëlle Hoe...
acdzlaffy1625
 
PDF
Becker's World of the Cell 8th Edition Hardin Test Bank
umungkh255
 
PDF
Star Trek Open A Channel A Womans Trek Nana Visitor
egnpfirmf5086
 
PDF
Test Bank for Organizational Behavior, 10th Edition: Schermerhorn
gxjouyv985
 
PDF
Biotechnology Of Aquatic Animals 1st Edition R Nagabhushanam Editor
mcbyxelqr492
 
PDF
(eBook PDF) Organizational Behaviour Concepts, Controversies, Applications, 8...
oquupwilm583
 
PDF
In The Convent Of Little Flowers Stories Sundaresan Indu
antcdkern346
 
Annual Review Of Cultural Heritage Informatics 2015 Jennifer Weil Arns
whnbxck093
 
Charlees Choices Dreamcatchers Mc Liberty Parker
nkqnohnveu1806
 
Test bank Health Assessment for Nursing Practice 6th Edition Wilson
tevbdxjqt378
 
Computer Accounting with QuickBooks Online 1st Edition Kay Test Bank
hkmqlqbqch8824
 
Macroeconomics Principles Applications and Tools 8th Edition OSullivan Soluti...
dvbnrnua706
 
Test Bank for Database Concepts, 5th Edition: Kroenke
zzpnrfsj4905
 
Scripture Discernment Johnson Luke Timothy
avzoldx633
 
Groovecoordination For Drum Set Volume 1 Andr Oettel
nhneghzysj938
 
Principles of Macroeconomics 6th Edition Mankiw Solutions Manual
sxibiti690
 
Maternity and Women’s Health Care 10th Edition by Lowdermilk Test Bank
cuaykqg6027
 
Macroeconomics 13th Edition Parkin Test Bank
dfehpsepb7021
 
Computer Security Principles And Practice 2nd Edition Stallings Solutions Manual
fkadqvqtu4098
 
Microelettronica 5th Edition Richard C. Jaeger
ierumjlbao1610
 
Test Bank for Biology: Concepts and Investigations, 4th Edition, Mariëlle Hoe...
acdzlaffy1625
 
Becker's World of the Cell 8th Edition Hardin Test Bank
umungkh255
 
Star Trek Open A Channel A Womans Trek Nana Visitor
egnpfirmf5086
 
Test Bank for Organizational Behavior, 10th Edition: Schermerhorn
gxjouyv985
 
Biotechnology Of Aquatic Animals 1st Edition R Nagabhushanam Editor
mcbyxelqr492
 
(eBook PDF) Organizational Behaviour Concepts, Controversies, Applications, 8...
oquupwilm583
 
In The Convent Of Little Flowers Stories Sundaresan Indu
antcdkern346
 
Ad

Hands on MVC - Mastering the Web