sviluppo web agile con castle monorail

16
Sviluppo Web Agile con Sviluppo Web Agile con Castle MonoRail Castle MonoRail Diego Guidi Diego Guidi [email protected] [email protected] 1° Workshop 1° Workshop “DotNetMarche.Start ()” “DotNetMarche.Start ()” Giovedì 12 ottobre 2006 Giovedì 12 ottobre 2006

Upload: dotnetmarche

Post on 19-Jun-2015

95 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sviluppo Web Agile con Castle Monorail

Sviluppo Web Agile con Sviluppo Web Agile con

Castle MonoRailCastle MonoRail

Diego GuidiDiego [email protected]@gmail.com

1° Workshop 1° Workshop “DotNetMarche.Start ()”“DotNetMarche.Start ()”Giovedì 12 ottobre 2006Giovedì 12 ottobre 2006

Page 2: Sviluppo Web Agile con Castle Monorail

Sono io?Sono io?

Diego GuidiDiego Guidi

http://dotnetmarche.org/members/D_Guhttp://dotnetmarche.org/members/D_Guidi.aspxidi.aspx http://nts.sourceforge.nethttp://nts.sourceforge.net http://blogs.ugidotnet.org/GisSharpBloghttp://blogs.ugidotnet.org/GisSharpBlog http://http://lacorrente.blogspot.comlacorrente.blogspot.com [email protected]@gmail.com

Page 3: Sviluppo Web Agile con Castle Monorail

Agile Web Application Framework MVC-BasedAgile Web Application Framework MVC-Based

Porting di Ruby On RailsPorting di Ruby On Rails

Basato su architettura .NET e ASP.NETBasato su architettura .NET e ASP.NET

Parte del “Castle Project”Parte del “Castle Project”

Licenza: “Apache License, Version 2.0”Licenza: “Apache License, Version 2.0”

Non legato a MONO!Non legato a MONO!

Oggi parliamo di…Oggi parliamo di…MonoRailMonoRail

Page 4: Sviluppo Web Agile con Castle Monorail

Ruby On RailsRuby On Rails Buzzword del 2006 - dopo Web 2.0 ovviamente!Buzzword del 2006 - dopo Web 2.0 ovviamente!

Ha imposto all’attenzione di tutti Ruby Ha imposto all’attenzione di tutti Ruby come linguaggio di programmazionecome linguaggio di programmazione

Ha imposto all’attenzione di tutti un modello Ha imposto all’attenzione di tutti un modello di programmazione “agile”di programmazione “agile”

MonoRail recepisce ed estende Ruby On RailsMonoRail recepisce ed estende Ruby On Rails

Fonte: http://radar.oreilly.com/archives/2006/08/programming_language_trends_1.html

Page 5: Sviluppo Web Agile con Castle Monorail

Molti nemici, molto onore…Molti nemici, molto onore…

DJangoDJango: : Python basedPython based GRailsGRails: : Java basedJava based AkelosAkelos: : PHP basedPHP based Flex On RailsFlex On Rails::Flash/Flex basedFlash/Flex based

SubSonicSubSonic: The Zero Code DAL: The Zero Code DAL .NET based.NET based Estremamente automatizzatoEstremamente automatizzato Poco flessibile (al momento…)Poco flessibile (al momento…) http://www.codeplex.com/Wiki/View.aspx?http://www.codeplex.com/Wiki/View.aspx?

ProjectName=actionpackProjectName=actionpack

Page 6: Sviluppo Web Agile con Castle Monorail

Agile Web Application Agile Web Application Framework MVC-BasedFramework MVC-Based

MVC-BasedMVC-Based::

ModelModel: mantiene lo stato dell’applicazione e si occupa della : mantiene lo stato dell’applicazione e si occupa della persistenza sul database.persistenza sul database.

ViewView: responsabile della presentazione dei dati del modello : responsabile della presentazione dei dati del modello e dell’interfaccia utente.e dell’interfaccia utente.

ControllerController: gestisce le richieste dell’utente, interagisce con : gestisce le richieste dell’utente, interagisce con il modello e richiama la vista corretta, a cui fornisce i dati il modello e richiama la vista corretta, a cui fornisce i dati da visualizzare.da visualizzare.

Separazione dei compiti

Ogni cosa al suo posto!

Page 7: Sviluppo Web Agile con Castle Monorail

Agile Web Application Agile Web Application Framework MVC-BasedFramework MVC-Based

MVC-BasedMVC-Based: http://localhost:81/home/index.rails: http://localhost:81/home/index.rails

- - homehome: controller: controller

- - indexindex: action (metodo) : action (metodo) del controller homedel controller home

- - indexindex: view associata : view associata al controller homeal controller home

Page 8: Sviluppo Web Agile con Castle Monorail

Agile Web Application Agile Web Application Framework MVC-BasedFramework MVC-Based

AGILEAGILE:: promuove un modello di sviluppo che, promuove un modello di sviluppo che, automatizzando automatizzando i task ripetitivi, permette allo i task ripetitivi, permette allo sviluppatore di sviluppatore di concentrarsi concentrarsi sull’applicazione e non sull’infrastruttura.sull’applicazione e non sull’infrastruttura.

Convention Over ConfigurationConvention Over Configuration: limitare al minimo la : limitare al minimo la necessità di file di configurazione, favorendo al contrario necessità di file di configurazione, favorendo al contrario le convenzioni.le convenzioni.

DRY (Don’t Repeate Yourself)DRY (Don’t Repeate Yourself): evitare le ripetizioni di : evitare le ripetizioni di codice favorendo la condivisione.codice favorendo la condivisione.

Test SupportTest Support: supporto per i test : supporto per i test funzionalifunzionali (controller).(controller).

Page 9: Sviluppo Web Agile con Castle Monorail

Rappresenta la parte Rappresenta la parte ModelModel di MonoRail di MonoRail Implementazione del pattern ActiveRecord:Implementazione del pattern ActiveRecord:

““An object that wraps a row in a database table, encapsulates the An object that wraps a row in a database table, encapsulates the database access, and adds domain logic on that data.” (Fowler, database access, and adds domain logic on that data.” (Fowler, Patterns of EAA)Patterns of EAA)

Basato su NHibernateBasato su NHibernate Persistenza gestita tramite meta-programmazione Persistenza gestita tramite meta-programmazione

(attributi)(attributi) Non è necessario scriversi i file di mapping!Non è necessario scriversi i file di mapping! Validazione semi-automatica, gestita tramite attributi.Validazione semi-automatica, gestita tramite attributi. Operazioni CRUD automaticheOperazioni CRUD automatiche

Disponibile anche separatamente da MonoRailDisponibile anche separatamente da MonoRail

MonoRail components:MonoRail components:

ActiveRecordActiveRecord

Page 10: Sviluppo Web Agile con Castle Monorail

Rappresenta la parte Rappresenta la parte ViewView e e ControllerController:: ControllerController::

Funzionalità di base per la gestione del flusso Funzionalità di base per la gestione del flusso dell’applicazionedell’applicazione

Gestione automatica e trasparente della sessioneGestione automatica e trasparente della sessione

ViewView::

Motore “ufficiale”: basato su NVelocityMotore “ufficiale”: basato su NVelocity

Motori in sviluppo: WebForm, StringTemplate, Boo…Motori in sviluppo: WebForm, StringTemplate, Boo…

Strumenti per la generazione di htmlStrumenti per la generazione di html

MonoRail components:MonoRail components:

ActionPackActionPack

Page 11: Sviluppo Web Agile con Castle Monorail

WebFormsWebForms:: ++: Infrastruttura basata su .NET: Infrastruttura basata su .NET

++: Supporto, documentazione, comunità di sviluppatori, ecc…: Supporto, documentazione, comunità di sviluppatori, ecc…

– – : Complessità nella creazione e manutenzione delle : Complessità nella creazione e manutenzione delle applicazioniapplicazioni

http://hammett.castleproject.org/?p=59http://hammett.castleproject.org/?p=59

“…“…my problem is that to do something that is more complex than just 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. 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… 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 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 want them to respond. All in all it takes a really long time before I get something done properly….”something done properly….”

MonoRail vs WebFormsMonoRail vs WebForms

Page 12: Sviluppo Web Agile con Castle Monorail

MonoRailMonoRail:: ++: Infrastruttura basata su ASP.NET, .NET e Castle: Infrastruttura basata su ASP.NET, .NET e Castle

++: Semplicità nella creazione e manutenzione delle : Semplicità nella creazione e manutenzione delle applicazioniapplicazioni

http://www.brianromanko.com/2006/10/aspnet-on-rails.htmlhttp://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 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 framework for development that has enough features to keep us framework quasi-developers happy while staying out of the way enough to make the quasi-developers happy while staying out of the way enough to make the framework work for the developer instead of against them (CSLA anyone?). framework work for the developer instead of against them (CSLA anyone?). It's slick and sexy.It's slick and sexy.

– – : Supporto, documentazione, comunità di sviluppatori, ecc…: Supporto, documentazione, comunità di sviluppatori, ecc…

– – : View basate su NVelocity (ma è davvero un problema?...): View basate su NVelocity (ma è davvero un problema?...)

MonoRail vs WebFormsMonoRail vs WebForms

Page 13: Sviluppo Web Agile con Castle Monorail

DotNetMarche BookStoreDotNetMarche BookStore

Tutorial.Start()Tutorial.Start()

Page 14: Sviluppo Web Agile con Castle Monorail

MonoRail è in continua evoluzione…MonoRail è in continua evoluzione…

CachingCaching

GeneratorGenerator

MigrateMigrate

Dynamic compilingDynamic compiling

Occhio a Marc-Andre!Occhio a Marc-Andre! http://macournoyer.wordpress.comhttp://macournoyer.wordpress.com

Ed a Ayende! Ed a Ayende! http://www.ayende.com/bloghttp://www.ayende.com/blog

Oltre ovviamente a…Oltre ovviamente a… http://www.castleproject.orghttp://www.castleproject.org

Tutto qui?Tutto qui?

Page 15: Sviluppo Web Agile con Castle Monorail

Domande?Domande?

Page 16: Sviluppo Web Agile con Castle Monorail

Slide e MaterialeSlide e Materiale

www.dotnetmarche.orgwww.dotnetmarche.org

Grazie!Grazie!