applying domain driven design on asp.net mvc – part 1: asp.net mvc

Post on 22-May-2015

9.859 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Mohamed Meligy

Applying Domain Driven Design on

Asp.net MVC

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

ASP.NET MVC – Form few thousand feet …

Model

ControllerView

ASP.NET Futures Themes

Webforms

AJAX

MVC

Dynamic Data

Feature Sharing

Webforms with AJAX

Dynamic Data with MVC

jQuery

M – V – C, The Steps …

RequestRequest

Routing

ForwardForward

Step Incoming request matched by Step 0Incoming request matched by Routing

M – V – C, The Steps …

RequestRequest

Controller

Step Incoming request directed to Step 1Incoming request directed to Controller

M – V – C, The Steps …

Controller

Model

Step ControllerStep 2Controller processes request and forms a data Model

RequestRequest

M – V – C, The Steps …

Controller

View

Step ModelStep 3Model is passed to View

RequestRequest

M – V – C, The Steps …

Controller

View

Step ViewStep 4View transforms Model into appropriate output format

RequestRequest

M – V – C, The Steps …

Response

Controller

View

Step Step Response is renderedStep Step 55Response is rendered

RequestRequest

The ASP.NET MVC Building Blocks

Simply creating a new project

The model

The class that needs to be presented, or processed

Can be bound in controller

Model Binders

Can live anywhere in your solution

The Controller

A set of action methods that share a common

Controller 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 get

the models to be displayed

4. Selects the view and sends the model to it, with any

additional info (like page title, …)

The ASP.NET MVC Building Blocks

ROUND TWO !!

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

View Engines

Web forms

Web forms

• The default option

• Comes with VS

• Same experience:

• Syntax

• VS Support

View Engines

NHAML

• engine

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

The webforms view Engine

From ASP.NET MVC source code

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

The other side of the story

It’s not as easy as you think!

To go low level or not to go; this IS the question.

IIS 6 Quirks

Custom Controls

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

http://weblogs.asp.net/meligy

top related