TDD, DI, and SoC with ASP.NET MVC Presented by Jeffrey Palermo CTO, Headspring Systems Microsoft MVP, MCSD.Net

Post on 18-Jan-2018

220 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

INETA - The Face of.NET World-wide association of.NET User Groups –860+ groups world-wide –Over 810,000 developers Started and run by.NET User Group leaders Sponsors and supports both.NET and other professional user groups all around the world Sponsors –Microsoft –Verio –New sponsors welcome! North America (NorAm) INETA Speaker Bureau consists of 67 world-renowned speakers

Transcript

TDD, DI, and SoC with ASP.NET MVC

Presented byJeffrey PalermoCTO, Headspring SystemsMicrosoft MVP, MCSD.Netjpalermo@headspringsystems.com

Agenda

•What is ASP.NET MVC?•Sound architectural approach•Soc – Separation of Concerns•DI – Dependency Injection•TDD – Test-Driven Development•Questions

INETA - The Face of .NET• World-wide association of .NET User Groups

– 860+ groups world-wide– Over 810,000 developers

• Started and run by .NET User Group leaders• Sponsors and supports both .NET and other professional user

groups all around the world• Sponsors

– Microsoft– Verio– New sponsors welcome!

• North America (NorAm) INETA Speaker Bureau consists of 67 world-renowned speakers

www.ineta.org

What is ASP.NET?

ASP.NET• HttpApplication• HttpContext• HttpRequest• HttpResponse• HttpRuntime• HttpUtility• IHttpHandler• IHttpModule

WebForms• Server Lifecycle• Postback• ViewState

ASPX• MasterPages• Themes, Skins• General Templating

What is ASP.NET MVC?

ASP.NET• HttpApplication• HttpContext• HttpRequest• HttpResponse• HttpRuntime• HttpUtility• IHttpHandler• IHttpModule

Mvc• Routes• Controllers• ViewData• Filters• MvcContribASPX• MasterPages• Themes, Skins• General Templating

Two types of architecture

• Short-term• Long-lived

Philosophy

• Software Systems are complex• Maintainability is king• Simplicity rules• Abstraction and the human brain (7+/-2)• ASP.NET MVC is going away• Coupling to infrastructure

Coupling (Architectural Metrics)

• Afferent Coupling (Ca) – incoming dependencies• Efferent Coupling (Ce) – outgoing dependencies• Instability (I)

– I = Ce / (Ce + Ca) (0 = stable, 1 = instable)– Stable = painful to modify

• Abstractness (A)– # Abstract Types / # Total Types (0 = concrete assembly, 1 = abstract

assembly)

Traditional Layered Architecture

Data Access/Infrastructure

Business Logic

UI

Traditional Layered Architecture

Business Logic

UI

Data Access

I/OWCF

Web Service

File

Solution Structure

UI Business Logic

Data Access

DB

Infrastructure

Better layering

Business Logic(service classes)

UI Data Access

I/OWCF

Object Model (business logic)

Onion Architecture

Object Model

Object Services

Application Services

User Interface

Infrastr

ucture

Tests

DB

Web Service

FileApplication Core

LoginController

IUserSessionIEmployeeRepository

HttpUserSession<<class>>

EmployeeRepository<<class>>

EmployeeEmployeeSelectList

Web Service

File

Solution Structure

UI Core

Infrastructure

DB

IoC Container

Demo ahead (all code)

MvcContrib

• http://mvccontrib.org • Founded by Eric Hexter and Jeffrey Palermo• Multiple view engines• ViewDataExtensions• IoC Container support• Html helpers• Extra ActionFilters• Anything else the community contributes

About me

• CTO, Headspring Systems• Agile coach• MCSD.Net• Microsft MVP, ASPInsider• Certified ScrumMaster• Austin .Net User Group• INETA speakers bureau• U.S. Army Veteran• Party with Palermo• www.partywithpalermo.com• Headspring’s Agile Boot Camp

top related