Курс по информационни технологии
description
Transcript of Курс по информационни технологии
![Page 1: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/1.jpg)
2013Copyright © 2013 DAVID Holding Company
Курс по информационни
технологииЗанятие №7
ASP.NET MVC
![Page 2: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/2.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Съдържание 1/3
• MVC– Какво е MVC?– История на MVC– Основни принципи на MVC– Контролери– Модели– Изгледи
![Page 3: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/3.jpg)
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: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/4.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Съдържание 3/3
• ASP.NET MVC приложения– Изгледи– Razor– Помощници– Частични изгледи– Филтриране– Рутиране
![Page 5: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/5.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
MVC• Какво е MVC?– Шаблон за разработка на приложения– Позволява преизползване на кода– SoC (Separation of Concerns)
• История на MVC– Формулиран през 70те на миналия век от
Trygve Reenskaug– Имплементиран в Smalltalk за настолни
приложения– Адаптиран за други видове приложения
![Page 6: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/6.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Основни принципи на MVC• Модел, изглед и контролер• Мястото на потребителя• Предимства на MVC– …
• Недостатъци на MVC– По-сложен от други подходи
![Page 7: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/7.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Контролери• Обработват заявката с помощта на
модели и изгледи• Осигуряват взаимодействие с
потребителя• Контролират работата на приложението• Реализират логика специфична за
приложението
![Page 8: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/8.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Модели• Множество от класове представляващи
бизнес логиката и данните, с които тя работи
• Контролират правилата за валидиране и манипулиране на данните
• Скриват достъпа до данните (съотв. могат да се разглеждат като слой за достъп до данни)
![Page 9: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/9.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Изгледи• Определят изхода на приложението
![Page 10: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/10.jpg)
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: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/11.jpg)
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: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/12.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Обработка на заявка• Постъпва HTTP заявка• Определя се контролер• Контролерът създава модел• Изпълнява се действието на контролера• Избира се подходящ изглед (резултат)• Моделът се подава на изгледа• Изгледът преобразува модела в подходящ
формат• Изпраща се HTTP отговор
![Page 13: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/13.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Обработка на заявка
![Page 14: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/14.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Контролери• Контролерите се разполагат в папка
“Controllers”• Контролерите са класове наследяващи
класа Controller• Наименованията на класовете на
контролерите завършват с “Controller”• На различните заявки съответства
определено действие• Всеки контролер реализира едно или
повече действия под формата на методи
![Page 15: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/15.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Действия - характеристики• Действия– Всяко действие е публичен нестатичен метод
на съответния контролер– Всяко действие има параметри– Всяко действие връща резултат
• Резултатът може да е всякакъв• Често използван резултат е инстанция на
ActionResult
![Page 16: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/16.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Действия - параметри• Данните от заявката се превръщат в
параметри към методите за действия– Подаване на параметри с рутиране– Подаване на параметри с GET заявка– Подаване на параметри с POST заявка
• Контрол над поведението на методите за действия със селектори– Наименование – [ActionName]– Метода – [HttpGet], [HttpPost], [HttpDelete],
[HttpOptions] и т.н.– Ограничения – [NoAction], [ChildActionOnly] и
[RequireHttps]
![Page 17: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/17.jpg)
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: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/18.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Модели• Модели– Моделите се разполагат в папка /Models/– Отразяват правилата на бизнес логиката на
приложението за авторизация, валидация и т.н.
– Контролират достъпа до данните и тяхната манипулация
– Изолират работата с данните и в този смисъл представляват слой за достъп до данните
![Page 19: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/19.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Изгледи• Представляват шаблони за динамична
визуализация на данните в папка /Views/• Различни машини за изгледи (view
engines)– Изпълняват код, за генериране на изхода– Дават “помощници” за генериране на изхода– Най-популярни машини са Razor и Web Forms
• Данни към изгледа се поддават с колекцията ViewBag, динамични обект ViewData или статичния обект Model (силно типизиране)
• Поддръжка на оформления (layouts)• Поддръжка на частични изгледи (partial
views)
![Page 20: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/20.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Razor - основи• Език за разработка на шаблони• Razor кодът започва със символа “@”• Екраниране на “@” с “@@”• Коментари с “@*...*@”• Razor блоковете от код с “@{…}”• Визуализация на текст става с “@:”• Изрази с “@(…)”• C# конструкции като if, else, for, foreach и
т.н.• Включване пространство на имената с
“@using”• Дефиниране типа на модела с “@model”
![Page 21: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/21.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Помощници• Всеки изглед наследява WebViewPage, а
той - ViewPage– ViewPage има помощни свойства Html, Ajax, Url
и др. съответно от клас HtmlHelper, AjaxHelper, UrlHelper и др.
– ViewPage може да има и собствени помощни свойства
• Помощните методи връщат резултат под формата на низове
![Page 22: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/22.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Собствени помощници• Разработка на собствени помощни
свойства с код– Разширяващи методи на класовете на
съответните помощници– Връщат низове, презаписват метода ToString()
или генерират тагове/атрибути като връщат TagBuilder
• Разработка на собствени помощни свойства с Razor– Шаблон /App_Code/Helpers.cshtml и “@helper”
![Page 23: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/23.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Razor - оформления• Подразбиращо се оформление в
/Views/_ViewStart.cshtml• В изгледа: Всеки изглед може да
контролира своето оформление с променливата Layout
• В оформлението: Визуализиране на съдържанието с @RenderBody()
![Page 24: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/24.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Razor – оформления и секции• В изгледа: Дефиниране на секция с
“@section Name { … }”• В оформлението: Визуализиране на
секция с @RenderSection(name, isRequired)”
• В оформлението: Използване на “@IsSectionDefined()”
![Page 25: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/25.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Частични изгледи• Частичните изгледи се намират в папка
/Views/ или в папката /View/Shared/• Частичните изгледи отново са стандартни
шаблони• Частичните изгледи визуализират части
от страницата– Преизползване на части от изгледите– Помощници – Partial, RenderPartial и Action
![Page 26: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/26.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Структура и конфигуриране• Структура на ASP.NET MVC приложение• Конфигуриране на ASP.NET MVC
приложение– Конфигуриране с конфигурация в Web.config– Конфигуриране с код в Global.asax
• Web API• Филтриране• Валидиране• Рутиране• Пакети (bundles)• Автентикация
![Page 27: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/27.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Рутиране• Контролира съответствието между
образци на адреси и контролер/действие/параметри
• Осигурява добре изглеждащи, REST-like и SEO адреси
• Дефиниране на рутиране– Наименование– Образец на адреса– Съответстващи
контролер/действие/параметри– Ограничени за параметрите
• Дебъгване на рутирането с RouteDebugger
![Page 28: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/28.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Филтриране• Филтрирането може да се прилага преди
и след изпълнението на определена логика
• Филтрирането може да се прилага върху действия и контролери
• Глобални филтри се регистрират в GlobalFilters.Filters (или /App_Start/FilterConfig.cs)
• Собствени филтри за действия– Разполагат се в папка /Filters/– Наследяват ActionFilterAttribute– Приложими върху контролер, действие или
глобално в GlobalFilters.Filters
![Page 29: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/29.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
ASP.NET MVC
// ДЕМОНСТРАЦИЯ
![Page 30: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/30.jpg)
Copyright © 2013 DAVID Holding CompanyCopyright © 2013 DAVID Holding Company
Въпроси?
![Page 31: Курс по информационни технологии](https://reader035.fdocuments.net/reader035/viewer/2022062408/56813c0b550346895da5769c/html5/thumbnails/31.jpg)
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/