Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoArcangelo Calabrese Modificato 10 anni fa
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.aspx http://dotnetmarche.org/members/D_Guidi.aspxhttp://dotnetmarche.org/members/D_Guidi.aspx http://nts.sourceforge.net http://nts.sourceforge.nethttp://nts.sourceforge.net http://blogs.ugidotnet.org/GisSharpBlog http://blogs.ugidotnet.org/GisSharpBloghttp://blogs.ugidotnet.org/GisSharpBlog http://lacorrente.blogspot.com http://lacorrente.blogspot.comhttp://lacorrente.blogspot.com diegoguidi@gmail.com diegoguidi@gmail.comdiegoguidi@gmail.com
3
Agile Web Application Framework MVC-Based Agile Web Application Framework MVC-Based Porting di Ruby On Rails Porting di Ruby On Rails Basato su architettura.NET e ASP.NET Basato 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… MonoRail
4
Ruby On Rails Buzzword del 2006 - dopo Web 2.0 ovviamente! Buzzword del 2006 - dopo Web 2.0 ovviamente! Ha imposto allattenzione di tutti Ruby come linguaggio di programmazione Ha imposto allattenzione di tutti Ruby come linguaggio di programmazione Ha imposto allattenzione di tutti un modello di programmazione agile Ha imposto allattenzione di tutti un modello di programmazione agile MonoRail recepisce ed estende Ruby On Rails MonoRail recepisce ed estende Ruby On Rails Fonte: http://radar.oreilly.com/archives/2006/08/programming_language_trends_1.htmlhttp://radar.oreilly.com/archives/2006/08/programming_language_trends_1.html
5
Molti nemici, molto onore… DJango: Python based DJango: Python based GRails: Java based GRails: Java based Akelos: PHP based Akelos: PHP based Flex On Rails:Flash/Flex based Flex On Rails:Flash/Flex based SubSonic: The Zero Code DAL SubSonic: The Zero Code DAL.NET based.NET based Estremamente automatizzato Estremamente automatizzato Poco flessibile (al momento…) Poco flessibile (al momento…) http://www.codeplex.com/Wiki/View.aspx?ProjectName=actionpack http://www.codeplex.com/Wiki/View.aspx?ProjectName=actionpack http://www.codeplex.com/Wiki/View.aspx?ProjectName=actionpack
6
Agile Web Application Framework MVC-Based MVC-Based: MVC-Based: Model: mantiene lo stato dellapplicazione e si occupa della persistenza sul database. Model: mantiene lo stato dellapplicazione e si occupa della persistenza sul database. View: responsabile della presentazione dei dati del modello e dellinterfaccia utente. View: responsabile della presentazione dei dati del modello e dellinterfaccia utente. Controller: gestisce l richieste dellutente, interagisce con il modello e richiama la vista corretta, a cui fornisce i dati da visualizzare. Controller: gestisce l richieste dellutente, 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 MVC-Based: http://localhost:81/home/index.railshttp://localhost:81/home/index.rails - home: controller - index: action (metodo) del controller home del controller home - index: view associata al controller home 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 sullapplicazione e non sullinfrastruttura. AGILE: promuove un modello di sviluppo che, automatizzando i task ripetitivi, permette allo sviluppatore di concentrarsi sullapplicazione e non sullinfrastruttura. Convention Over Configuration: limitare al minimo la necessità di file di configurazione, favorendo al contrario le convenzioni. Convention Over Configuration: limitare al minimo la necessità di file di configurazione, favorendo al contrario le convenzioni. DRY (Dont Repeate Yourself): evitare le ripetizioni di codice favorendo la condivisione. DRY (Dont Repeate Yourself): evitare le ripetizioni di codice favorendo la condivisione. Test Support: supporto per i test funzionali (controller). Test Support: supporto per i test funzionali (controller).
9
Costruzione di un progetto di base con Castle MonoRail Applicazione Demo
10
Rappresenta la parte Model di MonoRail Rappresenta la parte Model di MonoRail Implementazione del pattern ActiveRecord: 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)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 Basato su NHibernate Persistenza gestita tramite meta-programmazione (attributi) Persistenza gestita tramite meta-programmazione (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 automatiche Operazioni CRUD automatiche Disponibile anche separatamente da MonoRail Disponibile anche separatamente da MonoRail MonoRail components: ActiveRecord
11
Rappresenta la parte View e Controller: Rappresenta la parte View e Controller: Controller: Controller: Funzionalità di base per la gestione del flusso dellapplicazione Funzionalità di base per la gestione del flusso dellapplicazione Gestione automatica e trasparente della sessione Gestione automatica e trasparente della sessione View: View: Motore ufficiale: basato su NVelocity Motore ufficiale: basato su NVelocity Motori in sviluppo: WebForm, StringTemplate, Boo… Motori in sviluppo: WebForm, StringTemplate, Boo… Strumenti per la generazione di html Strumenti per la generazione di html MonoRail components: ActionPack
12
WebForms: WebForms: +: 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=59 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
13
MonoRail: MonoRail: +: Infrastruttura basata su ASP.NET,.NET e Castle +: Infrastruttura basata su ASP.NET,.NET e Castle +: Semplicità nella creazione e manutenzione delle applicazioni +: Semplicità nella creazione e manutenzione delle applicazioni http://www.brianromanko.com/2006/10/aspnet-on-rails.html http://www.brianromanko.com/2006/10/aspnet-on-rails.html 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… – : Supporto, documentazione, comunità di sviluppatori, ecc… – : View basate su NVelocity (ma è davvero un problema?...) – : View basate su NVelocity (ma è davvero un problema?...) MonoRail vs WebForms
14
DotNetMarche BookStore Tutorial.Start()
15
Generazione automatica dellintelaiatura di base del sito web Task 1: Scaffolding
16
Personalizzazione dellintelaiatura di base generata tramite Scaffolding Task 2: Creazione della parte Admin
17
Introduzione della validazione nel modello dei dati Task 3: Validazione
18
Generazione manuale della parte del sito dedicata alla vendita dei nostri prodotti Task 4: Creazione della parte Store
19
Gestione degli errori e delle eccezioni Task 5: Gestione degli errori
20
Creazione della fase di ordinazione e pagamento Task 6: Gestione degli ordini
21
Una migliore gestione della fase di ordinazione tramite lutilizzo dei ViewComponents Task 7: I componenti di MonoRail
22
Creazione della fase di spedizione degli ordini Task 8: La fase di spedizione
23
Una migliore gestione della fase di spedizione tramite il FormHelper Task 9: La fase di spedizione - 2
24
Creazione e aggiunta degli utenti admin Task 10: Creazione della parte Login
25
Abilitazione della gestione degli utenti Task 11: Gestione del Login
26
Limitazione dellaccesso alla parte di amministrazione ai soli utenti admin Task 12: Introduzione ai Filters
27
Completamento del progetto con la correzione di alcune imperfezioni Task 13: Finalizzazione del sito web
28
Introduzione al supporto per i test offerto da MonoRail Task 14: Testiamo il tutto!
29
Il supporto ad Ajax in MonoRail Task 15: The Web, version 2.0
30
MonoRail è in continua evoluzione… MonoRail è in continua evoluzione… Caching Caching Generator Generator Migrate Migrate Dynamic compiling Dynamic compiling Occhio a Marc-Andre!http://macournoyer.wordpress.com http://macournoyer.wordpress.com Ed a Ayende! http://www.ayende.com/blog http://www.ayende.com/blog Oltre ovviamente a…http://www.castleproject.org http://www.castleproject.org Tutto qui?
31
Domande?
32
Slide e Materiale www.dotnetmarche.org Grazie!
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.