Asp.net MVC training session

44
Introduction To Asp.net MVC HRICHI Mohamed Confirmed Consultant

description

During 4 days, I presented a training session for the .Net team in Business & Decision Tunisia about Asp.net MVC. In this training we talked about: MVC as a design pattern the history and the utility Microsoft’s approach in Asp.net MVC What's new in MVC 4 Data Access in Asp.net MVC How to secure an Asp.net application Dependency Injection in Asp.net MVC

Transcript of Asp.net MVC training session

Page 1: Asp.net MVC training session

Introduction To Asp.net MVC

HRICHI MohamedConfirmed Consultant

Page 2: Asp.net MVC training session

What Is MVC ?

• A design Pattern (Methodology)

• Invented by Smalltalk programmer (Trygve

Reenskaug 1979).

• Separation of Concerns / Single

Responsibility Principle

• More easily testable

Page 3: Asp.net MVC training session

What Is MVC ?

MModel

VView

CController

• Representation of domain data• Business Logic• Persistence mechanisms

• User Interface• The representation of Model

• An intermediary between Model and View• Application’s Brain (Handle user requests,

bind Data, return views)

Page 4: Asp.net MVC training session

Model View Controller Pattern

Ok

CController

MModel

VView

CreateInvoice (fact)

Create invoice (data)fact = new Invoice ()

LatestInvoices ()

return view ("Last-Invoices", ListFact[])

ListFact[]

HTML

Page 5: Asp.net MVC training session

Asp.net MVC

• Part of ASP.NET

• Not an upgrade or replacement for Web

Forms

ASP.NET

Webforms MVC Webpages

Page 6: Asp.net MVC training session

Asp.net MVC vs WebForms

• No server controls

• No ViewState

• No Code Behind

• Full control over html

• Unit Testing

Page 7: Asp.net MVC training session

Asp.net MVC

• Separation of application tasks (No code

Behind)

• Flexibility and Extensibility

• Friendly URLs (Routing)

• Scalability and Performance

• Supports existing ASP.NET features

(Authentication, Membership, roles, output

caching,…)

• Natural integration with Ajax

Page 8: Asp.net MVC training session

Asp.net MVC First App & Project Template Architecture

Page 9: Asp.net MVC training session

Views In Asp.net MVC

• View Engines

o Aspx

o Razor

• Layout

• Partial View

• Section

• HtmlHelper, AjaxHelper

Page 10: Asp.net MVC training session

HtmlHelpers

• ActionLink

@Html.ActionLink(“Modifier", “Edit“, new {Id=3})

<a href="/Product/Edit/6">Modifier</a>

• Form Elements (Form, TextBox, Hidden,….)

@Html.TextBox(“Nom")

<input id=" Nom " type="text" value="" name="

Nom ">

Page 11: Asp.net MVC training session

HtmlHelpers

• DropDownList

var db = new NorthwindDataContext();

IEnumerable<SelectListItem> items = db.Categories

.Select(c => new SelectListItem { Value = c.CategoryID.ToString(), Text =

c.CategoryName });

ViewBag.Categories = items;

@Html.DropDownList("CategoryID",

(IEnumerable<SelectListItem>)

ViewBag.Categories)

Page 12: Asp.net MVC training session

AjaxHelpers

• Ajax ActionLink @Ajax.ActionLink("Get Time", "GetTime", new AjaxOptions () {

UpdateTargetId="divTorefresh", HttpMethod="GET"

})

<a href="/Home/GetTime" data-ajax-update="#divTorefresh" data-ajax-mode="after" data-ajax-method="GET" data-ajax="true">Get Time</a>

Page 13: Asp.net MVC training session

View In Asp.net MVC

Page 14: Asp.net MVC training session

Controller In Asp.net MVC

• Action Results

• Filters

• Caching

Page 15: Asp.net MVC training session

Controller Action Results

• ViewResult

• PartialViewResult

• JsonResult

• JavaScriptResult

• ContentResult

• FileResult

• RedirectResult

Page 16: Asp.net MVC training session

Filters In Asp.net MVC

• Authorization filters

• Action filters

• Result filters

• Exception filters

Page 17: Asp.net MVC training session

Caching In MVC

[OutputCache(Duration=3600)]Public ActionResult GetListCountries(){

// Logic to get countries list}

[OutputCache(Duration=3600, VaryByParam = "countryId")]Public ActionResult GetListRegions(int countryId){

// Logic to get regions list}

Page 18: Asp.net MVC training session

Controller In Asp.net MVC

Page 19: Asp.net MVC training session

Model In Asp.net MVC

• Annotation

• Validation(Client Side & Server Side)

Page 20: Asp.net MVC training session

Annotation In MVC

• Required

• DisplayName 

• Range 

• DataType

• StringLength 

Page 21: Asp.net MVC training session

Annotation & Validation

Page 22: Asp.net MVC training session

Nuget

• Open source package manager for the .NET

Framework

• Provide the ability to produce and consume

packages

Page 23: Asp.net MVC training session

Nuget

Page 24: Asp.net MVC training session

Asp.net MVC 4 new Features

• Bundling & Minification

• Web Api

• Template Mobile

• Asynchronous

• RealTime avec SignalR

Page 25: Asp.net MVC training session

Bundling and Minification

Improve JavaScript and CSS files loading

• Minimize the Number of requests (Bundle in one File)

• Reduce the size of files (remove spaces, enters and comments)

Fully customizable and extensible

Page 26: Asp.net MVC training session

Without Bundling and Minification

Page 27: Asp.net MVC training session

With Bundling and Minification

Page 28: Asp.net MVC training session

MVC4 New Features

Page 29: Asp.net MVC training session

Asp.net MVC and Data Access

• Entity Framework

• Database First

• Model First

• Code First

Page 30: Asp.net MVC training session

Entity Framework

• Object-relational mapping (ORM)

Framework

• Gives an automated mechanism for Data

Access

• Manipulate Data as Object

• Reduce hard coded Query

• Have inheritance relationships between

entities

• Performing basic CRUD(Create, Read, Update,

Delete)

Page 31: Asp.net MVC training session

Asp.net MVC and Data Access

Page 32: Asp.net MVC training session

DataBase First Approach

• Existing DataBase

• Generate .Edmx From DataBase

• Use ObjectContext & DBContext

• Use T4 template (POCO)

Page 33: Asp.net MVC training session

Model First Approach

• Empty Edmx Model

• Design th DB Schema

• Generate DataBase From Model

Page 34: Asp.net MVC training session

Code First Approach

• Create Domain Models (Class)

• Generate DataBase From Domain Models

• Full Control Over Code

• No Autogenerated code

Page 35: Asp.net MVC training session

Entity Framework

Page 36: Asp.net MVC training session

ASP.NET MVC Security

• User Authentification

• Authorization

• Cross-site request forgery

• Cross-site Scripting

Page 37: Asp.net MVC training session

Authentification Mode

• Forms Authentification

• Cookies

• Windows Authentification

• Windows Session

• Via IIS

• OAuth 

• Facebook, google, Hotmail, twitter, etc.

Page 38: Asp.net MVC training session

Authorization In Asp.net MVC

• Role-based Authorization

• [Authorize(Roles = "Admin, Super User")]

• [Authorize(Users = "Betty, Johnny")]

Page 39: Asp.net MVC training session

Cross-Site Request Forgery (CSRF)

• Malicious attack (Cross Domain)

• Using Forms

• Session hijacking

Page 40: Asp.net MVC training session

Cross-site Scripting

• Malicious attack Using Script Injection

• Inject Code Inside Pages

Page 41: Asp.net MVC training session

Security

Page 42: Asp.net MVC training session

Dependency injection

• Design pattern

• Removal of hard-coded dependencies

• Giving an object its instance variables

(Dynamically)

Page 43: Asp.net MVC training session

Dependency injection

Page 44: Asp.net MVC training session

Thank you for your attention

Questions