27
ASP.NET MVC Practice and Guideline Refresh! Zubzib Black Coffee #7.5 กกก กกกกกกกกกกกกก !

ZZ BC#7.5 asp.net mvc practice and guideline refresh!

Embed Size (px)

DESCRIPTION

15/01/2012 ZZ BC#7.5 : Slide Presentation Code Sample : ZZBC#7.5_ASPNETMVC http://tinyurl.com/834chox

Citation preview

Page 1: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

ASP.NET MVC Practice and Guideline Refresh!

Zubzib Black Coffee #7.5 กิ�น กิาแฟเขียนเว็�บ !

Page 2: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

About me

Chalermpon Areepong (Nine)

Microsoft MVP ASP.NET

Work @

Page 3: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Session Level 300Audience Skill HTML/JS/CSS JavaScript C# OOP LINQ

Page 4: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Agenda Basic ASP.NET MVC Programming NuGet Package Manager Entity Framework 4.x Code First Introduce EF Migration Deep in Model Deep in Controller Deep in View UI JavaScript Framework Application Layer Architecture Repository Pattern Dependency Injection Security ASP.NET MVC 4 Preview

Page 5: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Basic of ASP.NET MVC Programing

Model : o Class Modelo Entity Modelo Domain Transfer Object (DTO)o View Model

View : User Interfaceo Engine : ASPX ViewEngine, Razor ViewEngine, Etc……o Output: HTML, CSS, JavaScript, JSON, Text

Controllero Control logic, o Data access, o Prepare parameters for view rendero call view to render output

Page 6: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Basic of ASP.NET MVC Programing

DEMO

Page 7: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Basic of ASP.NET MVC Programing

Routeso Catch URL to parameter by pattern

• Default “{controller}/{action}/{id}”http://www.zz.com/blog/get/1

• Fix route value

new { controller = “blog”, action = “get”, id = 1 }

• Custom Routes• blog/Archive/12-25-2009

“{controller}/{action}/{date}”http://www.zz.com/blog/Archive/12-25-2009

Public ActionResult Archive(DateTime date)

• blog/Archive/12-25-2009_12-17-2011“{controller}/{action}/{dateFrom}_{dateTo}”http://www.zz.com/blog/Archive/12-25-2009_12-17-2011 public ActionResult Archive(DateTime dateFrom, DateTime DateTo)

Page 8: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Basic of ASP.NET MVC Programing

Routes DEMO

Page 9: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

NuGet Package Manager

Manage Library for o Searcho Install / Update / Uninstallo Execute library command (PowerShell)

VS - > Menu -> Tools -> Extension Manager -> Find NuGet and install

How to useo Solution->Project -> right click on +Reference -> nuget

packageo Package Manager Console

• Install-Package <package name>• Uninstall-Package <package name>• Get-Package• Update-Package //all available

Page 10: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

NuGet Package Manager

DEMO

Page 11: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

EF 4.x Code First

Object Relational Mapping POCO Convention Over Configuration LINQ Support Working with various database (3rd party driver) Fluent API to fully customize the persistence

mapping Database Installation Database Migration

Page 12: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

EF 4.x Code First

DEMO

Page 13: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Deep in Model

Model?o Rich Domain? o Model Entity?o DTO?

Validation?o Server Side

• DataAnotation Attribute• IValidationObject• FluentValidate

o Client Side• ClientValidation• IClientValidatable

Demo

Page 14: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Deep in Controller

Controller ActionResult

Demo

Page 15: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Deep in View

ViewEngineo Razor ViewEngine (WebPage)o Aspx ViewEngineo 3rd Party ViewEngine

JavaScript

Demo

Page 16: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

UI JavaScript Framework

All will render to HTML/ CSS / JavaScript JQuery UI Telerik MVC Extension (strong type helper) Knockout (MVVM) Kendo UI (HTML5)

Page 17: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

UI JavaScript Framework

DEMO

Page 18: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Software Design: Repository Pattern

Encapsulate data access Simple collection like interface Should only return aggregate roots Provide for adding and removing entities Provide methods to select objects based on some

criteria Allow easy substitution

Page 19: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Software Design: Repository Pattern

DEMO

Page 20: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Software Design: Core Layer Architecture

Motivation – Logical layers separate the major concerns of the application: 1. Modularity, low-coupling – easier maintenance. 2. Business-logic is separated from presentation –

reuse. 3. General technical services, e.g., database, are

separated from the business-logic – reused, replaced.

4. Low coupling, separation of concerns – evolving functionality, system scaling-up, adapt to new technologies.

Page 21: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Software Design: Core Layer Architecture

Page 22: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Software Design: Core Layer Architecture

DEMO

Page 23: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Dependency Injection

Dependency Injection - one example of IoC design principle.

Also known as the Hollywood Principleo Don’t call us, we’ll call you!

Good OO Systems – organised as web of interacting objects

Goal – High cohesion, low coupling Advantages of low coupling

o Extensibilityo Testabilityo Reusability

PS>Not so easy to achieve!

Page 24: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Dependency Injection

AutoFac AutoFac MVC Integration

Demo

Page 25: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Security

Windows Authentication Form Authentication Asp.net Membership Provider Controller and Action

o Authorize Attributeo FluentSecurity (robust, fluent syntax)

Page 26: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

ASP.NET MVC 4 Preview

New Default project templates New mobile project template Recipes to customize code generation Asynchronous methods

Page 27: ZZ BC#7.5 asp.net mvc practice  and guideline refresh!

Summary

Bye…