Sviluppo Web Agile con 
Castle MonoRail 
Diego Guidi 
diegoguidi@gmail.com 
1° Workshop “DotNetMarche.Start ()” 
Giovedì 12 ottobre 2006
Sono io? 
Diego Guidi 
 
http://dotnetmarche.org/members/D_Guidi.asp 
x 
 http://nts.sourceforge.net 
 http://blogs.ugidotnet.org/GisSharpBlog 
 http://lacorrente.blogspot.com 
 diegoguidi@gmail.com
Oggi parliamo di… 
MonoRail 
 Agile Web Application Framework MVC-Based 
 Porting di Ruby On Rails 
 Basato su architettura .NET e ASP.NET 
 Parte del “Castle Project” 
 Licenza: “Apache License, Version 2.0” 
 Non legato a MONO!
Ruby On Rails 
 Buzzword del 2006 - dopo Web 2.0 ovviamente! 
 Ha imposto all’attenzione di tutti Ruby 
come linguaggio di programmazione 
 Ha imposto all’attenzione di tutti un modello 
di programmazione “agile” 
 MonoRail recepisce ed estende Ruby On Rails 
Fonte: http://radar.oreilly.com/archives/2006/08/programming_language_trends_1.html
Molti nemici, molto onore… 
 DJango: Python based 
 GRails: Java based 
 Akelos: PHP based 
 Flex On Rails: Flash/Flex based 
 SubSonic: The Zero Code DAL 
 .NET based 
 Estremamente automatizzato 
 Poco flessibile (al momento…) 
 http://www.codeplex.com/Wiki/View.aspx?ProjectName=actionpack
Agile Web Application Framework 
MVC-Based 
 MVC-Based: 
 Model: mantiene lo stato dell’applicazione e si occupa della 
persistenza sul database. 
 View: responsabile della presentazione dei dati del modello e 
dell’interfaccia utente. 
 Controller: gestisce le richieste dell’utente, interagisce con il 
modello e richiama la vista corretta, a cui fornisce i dati 
da visualizzare. 
Separazione dei compiti 
Ogni cosa al suo posto!
Agile Web Application Framework 
MVC-Based 
 MVC-Based: http://localhost:81/home/index.rails 
- home: controller 
- index: action (metodo) 
del controller home 
- index: view associata 
al controller home
Agile Web Application Framework 
MVC-Based 
 AGILE: promuove un modello di sviluppo che, automatizzando 
i task ripetitivi, permette allo sviluppatore di 
concentrarsi sull’applicazione e non sull’infrastruttura. 
 Convention Over Configuration: limitare al minimo la 
necessità di file di configurazione, favorendo al contrario le 
convenzioni. 
 DRY (Don’t Repeate Yourself): evitare le ripetizioni di codice 
favorendo la condivisione. 
 Test Support: supporto per i test funzionali (controller).
MonoRail components: 
ActiveRecord 
 Rappresenta la parte Model di MonoRail 
 Implementazione del pattern ActiveRecord: 
“An object that wraps a row in a database table, encapsulates the database 
access, and adds domain logic on that data.” (Fowler, Patterns of EAA) 
 Basato su NHibernate 
 Persistenza gestita tramite meta-programmazione (attributi) 
 Non è necessario scriversi i file di mapping! 
 Validazione semi-automatica, gestita tramite attributi. 
 Operazioni CRUD automatiche 
 Disponibile anche separatamente da MonoRail
MonoRail components: 
ActionPack 
 Rappresenta la parte View e Controller: 
 Controller: 
 Funzionalità di base per la gestione del flusso 
dell’applicazione 
 Gestione automatica e trasparente della sessione 
 View: 
 Motore “ufficiale”: basato su NVelocity 
 Motori in sviluppo: WebForm, StringTemplate, Boo… 
 Strumenti per la generazione di html
MonoRail vs WebForms 
 WebForms: 
 +: Infrastruttura basata su .NET 
 +: Supporto, documentazione, comunità di sviluppatori, ecc… 
 – : Complessità nella creazione e manutenzione delle applicazioni 
http://hammett.castleproject.org/?p=59 
“…my problem is that to do something that is more complex than just simply displaying 
one form on a page ASP.NET gets pretty complicated. Events are firing all over the 
place. I have to take viewstate into account… and then it became even more difficult 
to get stuff to respond the way I want them to respond. All in all it takes a really long 
time before I get something done properly….”
MonoRail vs WebForms 
 MonoRail: 
 +: Infrastruttura basata su ASP.NET, .NET e Castle 
 +: Semplicità nella creazione e manutenzione delle applicazioni 
http://www.brianromanko.com/2006/10/aspnet-on-rails.html 
Part of the reason for Ruby on Rails' quick adoption is that it provides a solid 
framework for development that has enough features to keep us framework quasi-developers 
happy while staying out of the way enough to make the framework work for 
the developer instead of against them (CSLA anyone?). It's slick and sexy. 
 – : Supporto, documentazione, comunità di sviluppatori, ecc… 
 – : View basate su NVelocity (ma è davvero un problema?...)
Tutorial.Start() 
DotNetMarche BookStore
Tutto qui? 
 MonoRail è in continua evoluzione… 
 Caching 
 Generator 
 Migrate 
 Dynamic compiling 
Occhio a Marc-Andre! http://macournoyer.wordpress.com 
Ed a Ayende! http://www.ayende.com/blog 
Oltre ovviamente a… http://www.castleproject.org
Domande?
Slide e Materiale 
www.dotnetmarche.org 
Grazie!

Sviluppo Web Agile con Castle Monorail

  • 1.
    Sviluppo Web Agilecon Castle MonoRail Diego Guidi diegoguidi@gmail.com 1° Workshop “DotNetMarche.Start ()” Giovedì 12 ottobre 2006
  • 2.
    Sono io? DiegoGuidi  http://dotnetmarche.org/members/D_Guidi.asp x  http://nts.sourceforge.net  http://blogs.ugidotnet.org/GisSharpBlog  http://lacorrente.blogspot.com  diegoguidi@gmail.com
  • 3.
    Oggi parliamo di… MonoRail  Agile Web Application Framework MVC-Based  Porting di Ruby On Rails  Basato su architettura .NET e ASP.NET  Parte del “Castle Project”  Licenza: “Apache License, Version 2.0”  Non legato a MONO!
  • 4.
    Ruby On Rails  Buzzword del 2006 - dopo Web 2.0 ovviamente!  Ha imposto all’attenzione di tutti Ruby come linguaggio di programmazione  Ha imposto all’attenzione di tutti un modello di programmazione “agile”  MonoRail recepisce ed estende Ruby On Rails Fonte: http://radar.oreilly.com/archives/2006/08/programming_language_trends_1.html
  • 5.
    Molti nemici, moltoonore…  DJango: Python based  GRails: Java based  Akelos: PHP based  Flex On Rails: Flash/Flex based  SubSonic: The Zero Code DAL  .NET based  Estremamente automatizzato  Poco flessibile (al momento…)  http://www.codeplex.com/Wiki/View.aspx?ProjectName=actionpack
  • 6.
    Agile Web ApplicationFramework MVC-Based  MVC-Based:  Model: mantiene lo stato dell’applicazione e si occupa della persistenza sul database.  View: responsabile della presentazione dei dati del modello e dell’interfaccia utente.  Controller: gestisce le richieste dell’utente, interagisce con il modello e richiama la vista corretta, a cui fornisce i dati da visualizzare. Separazione dei compiti Ogni cosa al suo posto!
  • 7.
    Agile Web ApplicationFramework MVC-Based  MVC-Based: http://localhost:81/home/index.rails - home: controller - index: action (metodo) del controller home - index: view associata al controller home
  • 8.
    Agile Web ApplicationFramework MVC-Based  AGILE: promuove un modello di sviluppo che, automatizzando i task ripetitivi, permette allo sviluppatore di concentrarsi sull’applicazione e non sull’infrastruttura.  Convention Over Configuration: limitare al minimo la necessità di file di configurazione, favorendo al contrario le convenzioni.  DRY (Don’t Repeate Yourself): evitare le ripetizioni di codice favorendo la condivisione.  Test Support: supporto per i test funzionali (controller).
  • 9.
    MonoRail components: ActiveRecord  Rappresenta la parte Model di MonoRail  Implementazione del pattern ActiveRecord: “An object that wraps a row in a database table, encapsulates the database access, and adds domain logic on that data.” (Fowler, Patterns of EAA)  Basato su NHibernate  Persistenza gestita tramite meta-programmazione (attributi)  Non è necessario scriversi i file di mapping!  Validazione semi-automatica, gestita tramite attributi.  Operazioni CRUD automatiche  Disponibile anche separatamente da MonoRail
  • 10.
    MonoRail components: ActionPack  Rappresenta la parte View e Controller:  Controller:  Funzionalità di base per la gestione del flusso dell’applicazione  Gestione automatica e trasparente della sessione  View:  Motore “ufficiale”: basato su NVelocity  Motori in sviluppo: WebForm, StringTemplate, Boo…  Strumenti per la generazione di html
  • 11.
    MonoRail vs WebForms  WebForms:  +: Infrastruttura basata su .NET  +: Supporto, documentazione, comunità di sviluppatori, ecc…  – : Complessità nella creazione e manutenzione delle applicazioni http://hammett.castleproject.org/?p=59 “…my problem is that to do something that is more complex than just simply displaying one form on a page ASP.NET gets pretty complicated. Events are firing all over the place. I have to take viewstate into account… and then it became even more difficult to get stuff to respond the way I want them to respond. All in all it takes a really long time before I get something done properly….”
  • 12.
    MonoRail vs WebForms  MonoRail:  +: Infrastruttura basata su ASP.NET, .NET e Castle  +: Semplicità nella creazione e manutenzione delle applicazioni http://www.brianromanko.com/2006/10/aspnet-on-rails.html Part of the reason for Ruby on Rails' quick adoption is that it provides a solid framework for development that has enough features to keep us framework quasi-developers happy while staying out of the way enough to make the framework work for the developer instead of against them (CSLA anyone?). It's slick and sexy.  – : Supporto, documentazione, comunità di sviluppatori, ecc…  – : View basate su NVelocity (ma è davvero un problema?...)
  • 13.
  • 14.
    Tutto qui? MonoRail è in continua evoluzione…  Caching  Generator  Migrate  Dynamic compiling Occhio a Marc-Andre! http://macournoyer.wordpress.com Ed a Ayende! http://www.ayende.com/blog Oltre ovviamente a… http://www.castleproject.org
  • 15.
  • 16.
    Slide e Materiale www.dotnetmarche.org Grazie!