Download presentation
Presentation is loading. Please wait.
Published byLoren Hannah McCarthy Modified over 8 years ago
1
TDD, DI, and SoC with ASP.NET MVC Presented by Jeffrey Palermo CTO, Headspring Systems Microsoft MVP, MCSD.Net jpalermo@headspringsystems.com
2
Agenda What is ASP.NET MVC? Sound architectural approach Soc – Separation of Concerns DI – Dependency Injection TDD – Test-Driven Development Questions
3
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
4
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
5
What is ASP.NET MVC? ASP.NET HttpApplication HttpContext HttpRequest HttpResponse HttpRuntime HttpUtility IHttpHandler IHttpModule Mvc Routes Controllers ViewData Filters MvcContrib ASPX MasterPages Themes, Skins General Templating
6
Two types of architecture Short-term Long-lived
7
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
8
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)
9
Traditional Layered Architecture Data Access/Infrastructure Business Logic UI
10
Traditional Layered Architecture Business Logic UI Data Access I/O WCF
11
Web Service File Solution Structure UI Business Logic Data Access DB Infrastructure
12
Better layering Business Logic (service classes) Business Logic (service classes) UI Data Access I/O WCF Object Model (business logic)
13
Onion Architecture Object Model Object Services Application Services User Interface Infrastructure Tests DB Web Service File Application Core LoginControllerLoginController IUserSessionIUserSession IEmployeeRepository HttpUserSession<<class>>HttpUserSession<<class>> EmployeeRepository<<class>>EmployeeRepository<<class>> Employee EmployeeSelectList
14
Web Service File Solution Structure UI Core Infrastructure DB IoC Container
15
Demo ahead (all code)
16
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
17
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.