Sviluppo Web Agile con Castle MonoRail Diego Guidi [email protected] DotNetMarche.Start()...
-
Upload
terenzio-marchesi -
Category
Documents
-
view
213 -
download
1
Transcript of Sviluppo Web Agile con Castle MonoRail Diego Guidi [email protected] DotNetMarche.Start()...
Sviluppo Web Agile con Sviluppo Web Agile con
Castle MonoRailCastle MonoRail
Diego GuidiDiego [email protected]@gmail.com
DotNetMarche.Start()DotNetMarche.Start()Giovedì 12 ottobre 2006Giovedì 12 ottobre 2006
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
Porting di Ruby On RailsPorting di Ruby On Rails
Agile Web Application Framework MVC-BasedAgile Web Application Framework MVC-Based
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
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 RoRMonoRail recepisce ed estende RoR
Fonte: http://radar.oreilly.com/archives/2006/08/programming_language_trends_1.html
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
Agile Web Application Agile Web Application Framework MVC-BasedFramework MVC-Based
MVC-BasedMVC-Based::
ModelModel: mantiene lo stato dell’applicazione e si occupa : mantiene lo stato dell’applicazione e si occupa della persistenza sul database.della persistenza sul database.
ViewView: responsabile della presentazione dei dati del : responsabile della presentazione dei dati del modello e dell’interfaccia utente.modello e dell’interfaccia utente.
ControllerController: riceve gli eventi dall’utente, interagisce con : riceve gli eventi dall’utente, interagisce con il modello e richiama la vista corretta.il modello e richiama la vista corretta.
Separazione dei compiti
Ogni cosa al suo posto!
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
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).
Costruzione di un progetto di base Costruzione di un progetto di base con con Castle MonoRailCastle MonoRail
Applicazione DemoApplicazione Demo
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 EEA)Patterns of EEA)
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 ereditate dalle classi base.Operazioni CRUD ereditate dalle classi base.
Disponibile anche separatamente da MonoRailDisponibile anche separatamente da MonoRail
MonoRail components:MonoRail components:
ActiveRecordActiveRecord
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
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 applicazioni: Complessità nella creazione e manutenzione delle applicazioni http://hammett.castleproject.org/?p=59http://hammett.castleproject.org/?p=59
“…“…my problem is that to do something that is more complex than just simply displaying one 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 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 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 respond the way I want them to respond. All in all it takes a really long time before I get something done properly….”something done properly….”
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 framework for 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 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 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. It's the iPod of development frameworks.against them (CSLA anyone?). It's slick and sexy. It's the iPod of development frameworks.
MonoRail vs WebFormsMonoRail vs WebForms
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 framework 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 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 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.instead of against them (CSLA anyone?). It's slick and sexy.
– – : Supporto, documentazione, comunità di sviluppatori, ecc…: Supporto, documentazione, comunità di sviluppatori, ecc… – – : View basate su NVelocity, Model e Controller basate su C# - : View basate su NVelocity, Model e Controller basate su C# -
VB.NETVB.NET
MonoRail vs WebFormsMonoRail vs WebForms
DotNetMarche BookStoreDotNetMarche BookStore
Tutorial.Start()Tutorial.Start()
Domande?Domande?
Slide e MaterialeSlide e Materiale
www.dotnetmarche.orgwww.dotnetmarche.org
Grazie!Grazie!