Applying Domain Driven Design on Asp.net MVC – Part 1: Asp.net MVC

of 22 /22
Mohamed Meligy Applying D omain D riven D esign on Asp.net MVC

Embed Size (px)

description

An introduction to ASP.NET MVC beta, in order to leverage this in a later session with the Domain Driven Design concepts.

Transcript of Applying Domain Driven Design on Asp.net MVC – Part 1: Asp.net MVC

  • 1. Applying Domain Driven Design on Asp.net MVCMohamed Meligy

2. Agenda ASP.NET MVC, The Steps Model, Controller, View Why ASP.NET MVC Domain, AKA, Model The Domain Model The Ubiquitous Language Building Blocks Entities / Value Objects Aggregates / Factories Repositories Services / Modules Putting it all together 3. ModelView Controller ASP.NET MVC Form few thousand feet 4. ASP.NET Futures Themes Webforms AJAX MVC Dynamic Data Feature Sharing Webforms with AJAX Dynamic Data with MVC jQuery 5. M V C, The Steps Routing RequestForward Step 0 Incoming request matched by Routing 6. M V C, The Steps ControllerRequest Step 1 Incoming request directed to Controller 7. M V C, The Steps Controller RequestModel Step 2 Controller processes request and forms a data Model 8. M V C, The Steps Controller RequestView Step 3 Model is passed to View 9. M V C, The Steps Controller RequestView Step 4 View transforms Model into appropriate output format 10. M V C, The Steps Controller Request View Response Step 5 Response is rendered 11. The ASP.NET MVC Building Blocks Simply creating a new project 12. The model The class that needs to be presented, or processed Can be bound in controller Model Binders Can live anywhere in your solution 13. The Controller A set of action methods that share a commonController context which is different from HTTP context An action: 1. Receives the request parameters 2. Creates any required model (user, etc..) 3. Calls services or repositories to execute data or getthe models to be displayed 4. Selects the view and sends the model to it, with anyadditional info (like page title, ) 14. The ASP.NET MVC Building Blocks ROUND TWO !! 15. The View Just renderer No logic should go there Page lifecycle ? Yes and No! Code Behind exists but not recommended No View State, No Server Controls Really? HTML Helpers Takes the view data from the controller Can be typed or Dictionary of values Not Just Web forms code View Engines 16. View Engines Web forms The default option Comes with VS Same experience: Syntax VS Support 17. View Engines NHAML Based on Ruby On Rails HAML Engine http://code.google.com/p/nhaml http://andrewpeters.net/2007/12/19/introducing-nhaml-an-aspnet-mvc-view-engine engine 18. The webforms view Engine From ASP.NET MVC source code 19. Why Oh, WHY !!! Easier Tight control over markup User/SEO friendly URLs Conventions and Guidance jQuery (Built-in) Tight control: Not just markup Everything is replaceable Interface based style Not full with sealed/internal stuff Testability The guys who created it are just awesome 94% Code Coverage/1051 unit tests 20. The other side of the story Its not as easy as you think! To go low level or not to go; this IS the question. IIS 6 Quirks Custom Controls 21. Where to go Official website http://asp.net/mvc Source Code http://codeplex.com/aspnet Blogs The ASP.NET MVC Team Scott Guthrie http://weblogs.asp.net/scottgu Rob Conrey http://blog.wekeroad.com MVC Store Front http://blog.wekeroad.com/mvc-storefront Phil Haack http://haacked.com Scott Hanselman http://hanselman.com Stephen Walthler http://weblogs.asp.net/stephenwalther http://www.chrisvandesteeg.nl http://www.singingeels.com 22. http://weblogs.asp.net/meligy