Sviluppo Web Agile Con MonoRail

0 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
0
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Sviluppo Web Agile Con MonoRail

    1. 1. Sviluppo Web Agile con Castle MonoRail Diego Guidi [email_address] BarCamp 24 febbraio 2007
    2. 2. Sono io? <ul><li>Diego Guidi </li></ul><ul><li>http://dotnetmarche.org/members/D_Guidi.aspx </li></ul><ul><li>http:// nts.sourceforge.net </li></ul><ul><li>http://blogs.ugidotnet.org/GisSharpBlog </li></ul><ul><li>http:// lacorrente.blogspot.com </li></ul><ul><li>[email_address] </li></ul>
    3. 3. <ul><li>Agile Web Application Framework MVC-Based </li></ul><ul><li>Porting di Ruby On Rails </li></ul><ul><li>Basato su architettura .NET e ASP.NET </li></ul><ul><li>Parte del “Castle Project” </li></ul><ul><li>Licenza: “Apache License, Version 2.0” </li></ul><ul><li>Non legato a MONO! </li></ul>Oggi parliamo di… MonoRail
    4. 4. Ruby On Rails <ul><li>Buzzword del 2006 - dopo Web 2.0 ovviamente! </li></ul><ul><li>Ha imposto all’attenzione di tutti Ruby come linguaggio di programmazione </li></ul><ul><li>Ha imposto all’attenzione di tutti un modello di programmazione “agile” </li></ul><ul><li>MonoRail recepisce ed estende Ruby On Rails </li></ul>Fonte : http:// radar.oreilly.com / archives /2006/08/programming_language_trends_1 .html
    5. 5. Molti nemici, molto onore… <ul><li>DJango : Python based </li></ul><ul><li>GRails : Java based </li></ul><ul><li>Akelos : PHP based </li></ul><ul><li>Flex On Rails : Flash/Flex based </li></ul><ul><li>SubSonic : The Zero Code DAL </li></ul><ul><ul><li>.NET based </li></ul></ul><ul><ul><li>Estremamente automatizzato </li></ul></ul><ul><ul><li>Poco flessibile (al momento…) </li></ul></ul><ul><ul><li>http://www.codeplex.com/ Wiki / View.aspx ? ProjectName=actionpack </li></ul></ul>
    6. 6. Agile Web Application Framework MVC-Based <ul><li>MVC-Based : </li></ul><ul><ul><li>Model : mantiene lo stato dell’applicazione e si occupa della persistenza sul database. </li></ul></ul><ul><ul><li>View : responsabile della presentazione dei dati del modello e dell’interfaccia utente. </li></ul></ul><ul><ul><li>Controller : gestisce le richieste dell’utente, interagisce con il modello e richiama la vista corretta, a cui fornisce i dati da visualizzare. </li></ul></ul>Separazione dei compiti Ogni cosa al suo posto!
    7. 7. <ul><li>MVC-Based : http://localhost:81/home/index.rails </li></ul><ul><li>- home : controller </li></ul><ul><li>- index : action (metodo) </li></ul><ul><li> del controller home </li></ul><ul><li>- index : view associata </li></ul><ul><li> al controller home </li></ul>Agile Web Application Framework MVC-Based
    8. 8. Agile Web Application Framework MVC-Based <ul><li>AGILE : promuove un modello di sviluppo che, automatizzando i task ripetitivi, permette allo sviluppatore di concentrarsi sull’applicazione e non sull’infrastruttura. </li></ul><ul><ul><li>Convention Over Configuration : limitare al minimo la necessità di file di configurazione, favorendo al contrario le convenzioni. </li></ul></ul><ul><ul><li>DRY (Don’t Repeate Yourself) : evitare le ripetizioni di codice favorendo la condivisione. </li></ul></ul><ul><ul><li>Test Support : supporto per i test funzionali (controller). </li></ul></ul>
    9. 9. Costruzione di un progetto di base con Castle MonoRail Applicazione Demo
    10. 10. <ul><li>Rappresenta la parte Model di MonoRail </li></ul><ul><ul><li>Implementazione del pattern ActiveRecord: </li></ul></ul><ul><ul><li>“ 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) </li></ul></ul><ul><ul><li>Basato su NHibernate </li></ul></ul><ul><ul><li>Persistenza gestita tramite meta-programmazione (attributi) </li></ul></ul><ul><ul><li>Non è necessario scriversi i file di mapping! </li></ul></ul><ul><ul><li>Validazione semi-automatica, gestita tramite attributi. </li></ul></ul><ul><ul><li>Operazioni CRUD automatiche </li></ul></ul><ul><li>Disponibile anche separatamente da MonoRail </li></ul>MonoRail components: ActiveRecord
    11. 11. <ul><li>Rappresenta la parte View e Controller : </li></ul><ul><ul><li>Controller : </li></ul></ul><ul><ul><ul><li>Funzionalità di base per la gestione del flusso dell’applicazione </li></ul></ul></ul><ul><ul><ul><li>Gestione automatica e trasparente della sessione </li></ul></ul></ul><ul><ul><li>View : </li></ul></ul><ul><ul><ul><li>Motore “ufficiale”: basato su NVelocity </li></ul></ul></ul><ul><ul><ul><li>Motori in sviluppo: WebForm, StringTemplate, Boo… </li></ul></ul></ul><ul><ul><ul><li>Strumenti per la generazione di HTML </li></ul></ul></ul>MonoRail components: ActionPack
    12. 12. <ul><li>WebForms : </li></ul><ul><ul><li>+ : Infrastruttura basata su .NET </li></ul></ul><ul><ul><li>+ : Supporto, documentazione, comunità di sviluppatori, ecc… </li></ul></ul><ul><ul><li>– : Complessità nella creazione e manutenzione delle applicazioni </li></ul></ul><ul><li> http://hammett.castleproject.org/?p=59 </li></ul><ul><ul><ul><li>“… 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….” </li></ul></ul></ul>MonoRail vs WebForms
    13. 13. <ul><li>MonoRail : </li></ul><ul><ul><li>+ : Infrastruttura basata su ASP.NET, .NET e Castle </li></ul></ul><ul><ul><li>+ : Semplicità nella creazione e manutenzione delle applicazioni </li></ul></ul><ul><ul><li> http://www.brianromanko.com/2006/10/ aspnet-on-rails.html </li></ul></ul><ul><ul><ul><li>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. </li></ul></ul></ul><ul><ul><li>– : Supporto, documentazione, comunità di sviluppatori, ecc… </li></ul></ul><ul><ul><li>– : View basate su NVelocity (ma è davvero un problema?...) </li></ul></ul>MonoRail vs WebForms
    14. 14. DotNetMarche BookStore Tutorial.Start()
    15. 15. Generazione automatica dell’intelaiatura di base del sito web Task 1: Scaffolding
    16. 16. Personalizzazione dell’intelaiatura di base generata tramite Scaffolding Task 2: Creazione della parte “Admin”
    17. 17. Introduzione della validazione nel modello dei dati Task 3: Validazione
    18. 18. Generazione manuale della parte del sito dedicata alla vendita dei nostri prodotti Task 4: Creazione della parte “Store”
    19. 19. Gestione degli errori e delle eccezioni Task 5: Gestione degli errori
    20. 20. Creazione della fase di ordinazione e pagamento Task 6: Gestione degli ordini
    21. 21. Una migliore gestione della fase di ordinazione tramite l’utilizzo dei “ViewComponents” Task 7: I “componenti” di MonoRail
    22. 22. Creazione della fase di spedizione degli ordini Task 8: La fase di spedizione
    23. 23. Una migliore gestione della fase di spedizione tramite il “FormHelper” Task 9: La fase di spedizione - 2
    24. 24. Creazione e aggiunta degli utenti “admin” Task 10: Creazione della parte “Login”
    25. 25. Abilitazione della gestione degli utenti Task 11: Gestione del “Login”
    26. 26. Limitazione dell’accesso alla parte di amministrazione ai soli utenti “admin” Task 12: Introduzione ai “Filters”
    27. 27. Completamento del progetto con la correzione di alcune “imperfezioni” Task 13: Finalizzazione del sito web
    28. 28. Introduzione al supporto per i test offerto da MonoRail Task 14: Testiamo il tutto!
    29. 29. Il supporto ad Ajax in MonoRail Task 15: The Web, version 2.0
    30. 30. <ul><li>MonoRail è in continua evoluzione… </li></ul><ul><ul><li>Caching </li></ul></ul><ul><ul><li>Generator </li></ul></ul><ul><ul><li>Migrate </li></ul></ul><ul><ul><li>Dynamic compiling </li></ul></ul><ul><ul><li>Support commerciale </li></ul></ul><ul><li>Occhio a Marc-Andre! http://macournoyer.wordpress.com </li></ul><ul><li>Ed a Ayende! http://www.ayende.com/blog </li></ul><ul><li>Oltre ovviamente a… http://www.castleproject.org </li></ul>Tutto qui?
    31. 31. Domande?
    32. 32. Slide e Materiale <ul><li>www.dotnetmarche.org </li></ul>Grazie! BarCamp 24 febbraio 2007

    ×