TDD, DI, and SoC with ASP.NET MVC Presented by Jeffrey Palermo CTO, Headspring Systems Microsoft...
-
Upload
loren-hannah-mccarthy -
Category
Documents
-
view
220 -
download
1
description
Transcript of TDD, DI, and SoC with ASP.NET MVC Presented by Jeffrey Palermo CTO, Headspring Systems Microsoft...
TDD, DI, and SoC with ASP.NET MVC
Presented byJeffrey PalermoCTO, Headspring SystemsMicrosoft MVP, [email protected]
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