31
2013 Copyright © 2013 DAVID Holding Company Курс по информационни технологии Занятие №7 ASP.NET MVC

Курс по информационни технологии

  • Upload
    kent

  • View
    48

  • Download
    2

Embed Size (px)

DESCRIPTION

Курс по информационни технологии. Занятие № 7 ASP.NET MVC. Съдържание 1/3. MVC Какво е MVC? История на MVC Основни принципи на MVC Контролери Модели Изгледи. Съдържание 2/3. ASP.NET MVC Какво е ASP.NET MVC? История на ASP.NET MVC Предимства Недостатъци Separation of Concerns - PowerPoint PPT Presentation

Citation preview

Page 1: Курс по информационни технологии

2013Copyright © 2013 DAVID Holding Company

Курс по информационни

технологииЗанятие №7

ASP.NET MVC

Page 2: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Съдържание 1/3

• MVC– Какво е MVC?– История на MVC– Основни принципи на MVC– Контролери– Модели– Изгледи

Page 3: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Съдържание 2/3

• ASP.NET MVC– Какво е ASP.NET MVC?– История на ASP.NET MVC– Предимства– Недостатъци– Separation of Concerns

• ASP.NET MVC приложения– Обработка на заявка– Контролери– Действия– Модели

Page 4: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Съдържание 3/3

• ASP.NET MVC приложения– Изгледи– Razor– Помощници– Частични изгледи– Филтриране– Рутиране

Page 5: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

MVC• Какво е MVC?– Шаблон за разработка на приложения– Позволява преизползване на кода– SoC (Separation of Concerns)

• История на MVC– Формулиран през 70те на миналия век от

Trygve Reenskaug– Имплементиран в Smalltalk за настолни

приложения– Адаптиран за други видове приложения

Page 6: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Основни принципи на MVC• Модел, изглед и контролер• Мястото на потребителя• Предимства на MVC– …

• Недостатъци на MVC– По-сложен от други подходи

Page 7: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Контролери• Обработват заявката с помощта на

модели и изгледи• Осигуряват взаимодействие с

потребителя• Контролират работата на приложението• Реализират логика специфична за

приложението

Page 8: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Модели• Множество от класове представляващи

бизнес логиката и данните, с които тя работи

• Контролират правилата за валидиране и манипулиране на данните

• Скриват достъпа до данните (съотв. могат да се разглеждат като слой за достъп до данни)

Page 9: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Изгледи• Определят изхода на приложението

Page 10: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

ASP.NET MVC• Какво е ASP.NET MVC?– Реализация на MVC за ASP.NET приложения– Безплатен проект под Apache 2.0 лиценз– Не замества ASP.NET Web Forms

• История на ASP.NET MVC– CTP версия – 10 октомври 2007 (Scott Guthrie)– Версия 1.0 – 13 март 2009– Версия 4.0 – 15 август 2012 / 30 май 2013– Версия 5.0 preview – 26 юни 2013

Page 11: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

ASP.NET MVC• Предимства– По-добър контрол върху изхода– Тестваем– Слабо обвръзване (loose coupling)– Разширяем– Конвенции над конфигурация

• Недостатъци• Separation of Concerns– SRP (Single Responsibility Principle)– DRY (Don’t Repeat Yourself)– TDD (Test-Driven Development)

Page 12: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Обработка на заявка• Постъпва HTTP заявка• Определя се контролер• Контролерът създава модел• Изпълнява се действието на контролера• Избира се подходящ изглед (резултат)• Моделът се подава на изгледа• Изгледът преобразува модела в подходящ

формат• Изпраща се HTTP отговор

Page 13: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Обработка на заявка

Page 14: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Контролери• Контролерите се разполагат в папка

“Controllers”• Контролерите са класове наследяващи

класа Controller• Наименованията на класовете на

контролерите завършват с “Controller”• На различните заявки съответства

определено действие• Всеки контролер реализира едно или

повече действия под формата на методи

Page 15: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Действия - характеристики• Действия– Всяко действие е публичен нестатичен метод

на съответния контролер– Всяко действие има параметри– Всяко действие връща резултат

• Резултатът може да е всякакъв• Често използван резултат е инстанция на

ActionResult

Page 16: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Действия - параметри• Данните от заявката се превръщат в

параметри към методите за действия– Подаване на параметри с рутиране– Подаване на параметри с GET заявка– Подаване на параметри с POST заявка

• Контрол над поведението на методите за действия със селектори– Наименование – [ActionName]– Метода – [HttpGet], [HttpPost], [HttpDelete],

[HttpOptions] и т.н.– Ограничения – [NoAction], [ChildActionOnly] и

[RequireHttps]

Page 17: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Действия - резултатиНаименование Цел Метод

ContentResult Низ Content()

EmptyResult Празен отговор

FileContentResultFilePathResultFileStreamResult

Файлово съдържание File()

HttpUnauthorizedResult

HTTP 403 Status Code

JavaScriptResult JavaScript, който да се изпълни

JavaScript()

JsonResult Данни в JSON формат Json()

RedirectResult Препращане към друг URL

Redirect()RedirectPermanent()

RedirectToRouteResult

Препращане към друго действие

RedirectToRoute()RedirectToAction()

ViewResultPartialViewResult

Изглед от view engine View()PartialView()

Page 18: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Модели• Модели– Моделите се разполагат в папка /Models/– Отразяват правилата на бизнес логиката на

приложението за авторизация, валидация и т.н.

– Контролират достъпа до данните и тяхната манипулация

– Изолират работата с данните и в този смисъл представляват слой за достъп до данните

Page 19: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Изгледи• Представляват шаблони за динамична

визуализация на данните в папка /Views/• Различни машини за изгледи (view

engines)– Изпълняват код, за генериране на изхода– Дават “помощници” за генериране на изхода– Най-популярни машини са Razor и Web Forms

• Данни към изгледа се поддават с колекцията ViewBag, динамични обект ViewData или статичния обект Model (силно типизиране)

• Поддръжка на оформления (layouts)• Поддръжка на частични изгледи (partial

views)

Page 20: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Razor - основи• Език за разработка на шаблони• Razor кодът започва със символа “@”• Екраниране на “@” с “@@”• Коментари с “@*...*@”• Razor блоковете от код с “@{…}”• Визуализация на текст става с “@:”• Изрази с “@(…)”• C# конструкции като if, else, for, foreach и

т.н.• Включване пространство на имената с

“@using”• Дефиниране типа на модела с “@model”

Page 21: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Помощници• Всеки изглед наследява WebViewPage, а

той - ViewPage– ViewPage има помощни свойства Html, Ajax, Url

и др. съответно от клас HtmlHelper, AjaxHelper, UrlHelper и др.

– ViewPage може да има и собствени помощни свойства

• Помощните методи връщат резултат под формата на низове

Page 22: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Собствени помощници• Разработка на собствени помощни

свойства с код– Разширяващи методи на класовете на

съответните помощници– Връщат низове, презаписват метода ToString()

или генерират тагове/атрибути като връщат TagBuilder

• Разработка на собствени помощни свойства с Razor– Шаблон /App_Code/Helpers.cshtml и “@helper”

Page 23: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Razor - оформления• Подразбиращо се оформление в

/Views/_ViewStart.cshtml• В изгледа: Всеки изглед може да

контролира своето оформление с променливата Layout

• В оформлението: Визуализиране на съдържанието с @RenderBody()

Page 24: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Razor – оформления и секции• В изгледа: Дефиниране на секция с

“@section Name { … }”• В оформлението: Визуализиране на

секция с @RenderSection(name, isRequired)”

• В оформлението: Използване на “@IsSectionDefined()”

Page 25: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Частични изгледи• Частичните изгледи се намират в папка

/Views/ или в папката /View/Shared/• Частичните изгледи отново са стандартни

шаблони• Частичните изгледи визуализират части

от страницата– Преизползване на части от изгледите– Помощници – Partial, RenderPartial и Action

Page 26: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Структура и конфигуриране• Структура на ASP.NET MVC приложение• Конфигуриране на ASP.NET MVC

приложение– Конфигуриране с конфигурация в Web.config– Конфигуриране с код в Global.asax

• Web API• Филтриране• Валидиране• Рутиране• Пакети (bundles)• Автентикация

Page 27: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Рутиране• Контролира съответствието между

образци на адреси и контролер/действие/параметри

• Осигурява добре изглеждащи, REST-like и SEO адреси

• Дефиниране на рутиране– Наименование– Образец на адреса– Съответстващи

контролер/действие/параметри– Ограничени за параметрите

• Дебъгване на рутирането с RouteDebugger

Page 28: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Филтриране• Филтрирането може да се прилага преди

и след изпълнението на определена логика

• Филтрирането може да се прилага върху действия и контролери

• Глобални филтри се регистрират в GlobalFilters.Filters (или /App_Start/FilterConfig.cs)

• Собствени филтри за действия– Разполагат се в папка /Filters/– Наследяват ActionFilterAttribute– Приложими върху контролер, действие или

глобално в GlobalFilters.Filters

Page 29: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

ASP.NET MVC

// ДЕМОНСТРАЦИЯ

Page 30: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Въпроси?

Page 31: Курс по информационни технологии

Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company

Благодаря!

• Валери Дачев– [email protected]– http://vdachev.net/– @vdachev– https://www.facebook.com/vdachev

• ДАВИД академия– [email protected]– http://acad.david.bg/– @david_academy– https://www.facebook.com/groups/david.academy/