SlideShare ist ein Scribd-Unternehmen logo
1 von 16
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!

Weitere ähnliche Inhalte

Was ist angesagt?

Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreAndrea Dottor
 
MEAN: il nuovo stack di sviluppo per il futuro del web
MEAN: il nuovo stack di sviluppo per il futuro del webMEAN: il nuovo stack di sviluppo per il futuro del web
MEAN: il nuovo stack di sviluppo per il futuro del webEugenio Minardi
 
Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuniCreare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuniAndrea Dottor
 
ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesAndrea Dottor
 
Creare API pubbliche, come evitare gli errori comuni
 Creare API pubbliche, come evitare gli errori comuni Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuniAndrea Dottor
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webLuca Milan
 
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NETLe novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NETEmanuele Bartolesi
 
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiAndrea Dottor
 
Blazor Focus Week Bari
Blazor Focus Week BariBlazor Focus Week Bari
Blazor Focus Week BariMichele Aponte
 
Selenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiSelenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiGiuneco S.r.l
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Andrea Agnoletto
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiAndrea Dottor
 
Dal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developersDal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developersAndrea Dottor
 
Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5Emanuele Bartolesi
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld DevicesGWTcon
 

Was ist angesagt? (20)

Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET Core
 
MEAN: il nuovo stack di sviluppo per il futuro del web
MEAN: il nuovo stack di sviluppo per il futuro del webMEAN: il nuovo stack di sviluppo per il futuro del web
MEAN: il nuovo stack di sviluppo per il futuro del web
 
Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuniCreare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuni
 
ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor Pages
 
Rich Internet Application
Rich Internet ApplicationRich Internet Application
Rich Internet Application
 
Creare API pubbliche, come evitare gli errori comuni
 Creare API pubbliche, come evitare gli errori comuni Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuni
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NETLe novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
 
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi reali
 
Blazor Focus Week Bari
Blazor Focus Week BariBlazor Focus Week Bari
Blazor Focus Week Bari
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Selenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiSelenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio Benedetti
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivati
 
Php for ASP.NET Developers
Php for ASP.NET DevelopersPhp for ASP.NET Developers
Php for ASP.NET Developers
 
Vaadin7
Vaadin7Vaadin7
Vaadin7
 
Dal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developersDal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developers
 
Silex, iniziamo
Silex, iniziamoSilex, iniziamo
Silex, iniziamo
 
Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
 

Andere mochten auch

Accessibilità: tecniche e validazione
Accessibilità: tecniche e validazioneAccessibilità: tecniche e validazione
Accessibilità: tecniche e validazioneDotNetMarche
 
Esempi di AOP (Gian Maria Ricci)
 Esempi di AOP (Gian Maria Ricci) Esempi di AOP (Gian Maria Ricci)
Esempi di AOP (Gian Maria Ricci)DotNetMarche
 
CruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeCruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeDotNetMarche
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in ActionDotNetMarche
 
Installing and Administering MOSS
Installing and Administering MOSSInstalling and Administering MOSS
Installing and Administering MOSSDotNetMarche
 
NHibernate in Action (Parte 1)
NHibernate in Action (Parte 1)NHibernate in Action (Parte 1)
NHibernate in Action (Parte 1)DotNetMarche
 
CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilit...
CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilit...CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilit...
CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilit...DotNetMarche
 
Potenza e controllo con le Parallel Libraries (Raffaele Rialdi)
Potenza e controllo con le Parallel Libraries (Raffaele Rialdi)Potenza e controllo con le Parallel Libraries (Raffaele Rialdi)
Potenza e controllo con le Parallel Libraries (Raffaele Rialdi)DotNetMarche
 
Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0
Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0
Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0DotNetMarche
 
Introduzione al Testing
Introduzione al TestingIntroduzione al Testing
Introduzione al TestingDotNetMarche
 
Open Web Studio (Roberto Caporale)
Open Web Studio (Roberto Caporale)Open Web Studio (Roberto Caporale)
Open Web Studio (Roberto Caporale)DotNetMarche
 
Introduzione a Workflow Foundation
Introduzione a Workflow FoundationIntroduzione a Workflow Foundation
Introduzione a Workflow FoundationDotNetMarche
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModelDotNetMarche
 
UI Composition - Prism
UI Composition - PrismUI Composition - Prism
UI Composition - PrismDotNetMarche
 
C4021 Séance 8: Réseaux Sociaux
C4021 Séance 8: Réseaux SociauxC4021 Séance 8: Réseaux Sociaux
C4021 Séance 8: Réseaux SociauxAlexandru Panican
 

Andere mochten auch (18)

Accessibilità: tecniche e validazione
Accessibilità: tecniche e validazioneAccessibilità: tecniche e validazione
Accessibilità: tecniche e validazione
 
Esempi di AOP (Gian Maria Ricci)
 Esempi di AOP (Gian Maria Ricci) Esempi di AOP (Gian Maria Ricci)
Esempi di AOP (Gian Maria Ricci)
 
UI Composition
UI CompositionUI Composition
UI Composition
 
CruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeCruiseControl.net in un progetto reale
CruiseControl.net in un progetto reale
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in Action
 
Installing and Administering MOSS
Installing and Administering MOSSInstalling and Administering MOSS
Installing and Administering MOSS
 
Open XML & MOSS
Open XML & MOSSOpen XML & MOSS
Open XML & MOSS
 
NHibernate in Action (Parte 1)
NHibernate in Action (Parte 1)NHibernate in Action (Parte 1)
NHibernate in Action (Parte 1)
 
CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilit...
CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilit...CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilit...
CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilit...
 
Potenza e controllo con le Parallel Libraries (Raffaele Rialdi)
Potenza e controllo con le Parallel Libraries (Raffaele Rialdi)Potenza e controllo con le Parallel Libraries (Raffaele Rialdi)
Potenza e controllo con le Parallel Libraries (Raffaele Rialdi)
 
Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0
Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0
Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0
 
Introduzione al Testing
Introduzione al TestingIntroduzione al Testing
Introduzione al Testing
 
Open Web Studio (Roberto Caporale)
Open Web Studio (Roberto Caporale)Open Web Studio (Roberto Caporale)
Open Web Studio (Roberto Caporale)
 
Introduzione a Workflow Foundation
Introduzione a Workflow FoundationIntroduzione a Workflow Foundation
Introduzione a Workflow Foundation
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModel
 
UI Composition - Prism
UI Composition - PrismUI Composition - Prism
UI Composition - Prism
 
Journée ASIT VD 2014 - session 2
Journée ASIT VD 2014 - session 2Journée ASIT VD 2014 - session 2
Journée ASIT VD 2014 - session 2
 
C4021 Séance 8: Réseaux Sociaux
C4021 Séance 8: Réseaux SociauxC4021 Séance 8: Réseaux Sociaux
C4021 Séance 8: Réseaux Sociaux
 

Ähnlich wie Sviluppo Web Agile con Castle Monorail

Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailStefano Ottaviani
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAXTommaso Torti
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoGiuneco S.r.l
 
Infrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on RailsInfrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on Railsguestfe3e15
 
I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)Diego La Monica
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web AppsAndrea Dottor
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the WebClaudio Gandelli
 
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webAndrea Dottor
 
Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di riaLorenzo Bortolotto
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...Codemotion
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
 
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!Salvatore Laisa
 
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!Appsterdam Milan
 
Yii Framework - yes it is rapid web application development (Parte 1)
Yii Framework - yes it is rapid web application development (Parte 1)Yii Framework - yes it is rapid web application development (Parte 1)
Yii Framework - yes it is rapid web application development (Parte 1)brossi676
 

Ähnlich wie Sviluppo Web Agile con Castle Monorail (20)

Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAX
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo Greco
 
Infrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on RailsInfrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on Rails
 
I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the Web
 
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
 
Link. javascript ajax
  Link. javascript ajax  Link. javascript ajax
Link. javascript ajax
 
Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di ria
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
 
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
 
Yii Framework - yes it is rapid web application development (Parte 1)
Yii Framework - yes it is rapid web application development (Parte 1)Yii Framework - yes it is rapid web application development (Parte 1)
Yii Framework - yes it is rapid web application development (Parte 1)
 

Mehr von DotNetMarche

Creare una community dal basso ed arrivare ad un'azienda milionaria - Emanue...
Creare una community dal basso ed arrivare ad un'azienda milionaria  - Emanue...Creare una community dal basso ed arrivare ad un'azienda milionaria  - Emanue...
Creare una community dal basso ed arrivare ad un'azienda milionaria - Emanue...DotNetMarche
 
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...DotNetMarche
 
Refactoring ASP.NET and beyond
Refactoring ASP.NET and beyondRefactoring ASP.NET and beyond
Refactoring ASP.NET and beyondDotNetMarche
 
Refactoring 2TheMax (con ReSharper)
Refactoring 2TheMax (con ReSharper)Refactoring 2TheMax (con ReSharper)
Refactoring 2TheMax (con ReSharper)DotNetMarche
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in ActionDotNetMarche
 
Soluzioni Microsoft per l'e-Learning
Soluzioni Microsoft per l'e-LearningSoluzioni Microsoft per l'e-Learning
Soluzioni Microsoft per l'e-LearningDotNetMarche
 
Microsoft SharePoint Server 2007 Technical Overview
Microsoft SharePoint Server 2007 Technical OverviewMicrosoft SharePoint Server 2007 Technical Overview
Microsoft SharePoint Server 2007 Technical OverviewDotNetMarche
 
[Hands on] testing asp.net mvc
[Hands on] testing asp.net mvc[Hands on] testing asp.net mvc
[Hands on] testing asp.net mvcDotNetMarche
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC FrameworkDotNetMarche
 
Introduzione a CardSpace
Introduzione a CardSpaceIntroduzione a CardSpace
Introduzione a CardSpaceDotNetMarche
 
Domain Model e SOA (Service Oriented Architecture)
Domain Model e SOA (Service Oriented Architecture)Domain Model e SOA (Service Oriented Architecture)
Domain Model e SOA (Service Oriented Architecture)DotNetMarche
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)DotNetMarche
 
NHibernate in Action (Parte 2)
NHibernate in Action (Parte 2)NHibernate in Action (Parte 2)
NHibernate in Action (Parte 2)DotNetMarche
 
Source control system
Source control systemSource control system
Source control systemDotNetMarche
 

Mehr von DotNetMarche (18)

Creare una community dal basso ed arrivare ad un'azienda milionaria - Emanue...
Creare una community dal basso ed arrivare ad un'azienda milionaria  - Emanue...Creare una community dal basso ed arrivare ad un'azienda milionaria  - Emanue...
Creare una community dal basso ed arrivare ad un'azienda milionaria - Emanue...
 
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...
 
WPF 4 fun
WPF 4 funWPF 4 fun
WPF 4 fun
 
WPF basics
WPF basicsWPF basics
WPF basics
 
Refactoring ASP.NET and beyond
Refactoring ASP.NET and beyondRefactoring ASP.NET and beyond
Refactoring ASP.NET and beyond
 
Refactoring 2TheMax (con ReSharper)
Refactoring 2TheMax (con ReSharper)Refactoring 2TheMax (con ReSharper)
Refactoring 2TheMax (con ReSharper)
 
jQuery Loves You
jQuery Loves YoujQuery Loves You
jQuery Loves You
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in Action
 
Soluzioni Microsoft per l'e-Learning
Soluzioni Microsoft per l'e-LearningSoluzioni Microsoft per l'e-Learning
Soluzioni Microsoft per l'e-Learning
 
Microsoft SharePoint Server 2007 Technical Overview
Microsoft SharePoint Server 2007 Technical OverviewMicrosoft SharePoint Server 2007 Technical Overview
Microsoft SharePoint Server 2007 Technical Overview
 
[Hands on] testing asp.net mvc
[Hands on] testing asp.net mvc[Hands on] testing asp.net mvc
[Hands on] testing asp.net mvc
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
Introduzione a CardSpace
Introduzione a CardSpaceIntroduzione a CardSpace
Introduzione a CardSpace
 
Domain Model e SOA (Service Oriented Architecture)
Domain Model e SOA (Service Oriented Architecture)Domain Model e SOA (Service Oriented Architecture)
Domain Model e SOA (Service Oriented Architecture)
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
Esempi pratici
Esempi praticiEsempi pratici
Esempi pratici
 
NHibernate in Action (Parte 2)
NHibernate in Action (Parte 2)NHibernate in Action (Parte 2)
NHibernate in Action (Parte 2)
 
Source control system
Source control systemSource control system
Source control system
 

Sviluppo Web Agile con Castle Monorail

  • 1. Sviluppo Web Agile con Castle MonoRail Diego Guidi diegoguidi@gmail.com 1° Workshop “DotNetMarche.Start ()” Giovedì 12 ottobre 2006
  • 2. 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
  • 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, 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
  • 6. 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!
  • 7. 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
  • 8. 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).
  • 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?...)
  • 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
  • 16. Slide e Materiale www.dotnetmarche.org Grazie!