Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "TDD, DI, and SoC with ASP.NET MVC Presented by Jeffrey Palermo CTO, Headspring Systems Microsoft MVP, MCSD.Net"— Presentation transcript:

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


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

Similar presentations


Ads by Google