310 likes | 474 Views
Курс по информационни технологии. Занятие № 7 ASP.NET MVC. Съдържание 1/3. MVC Какво е MVC? История на MVC Основни принципи на MVC Контролери Модели Изгледи. Съдържание 2/3. ASP.NET MVC Какво е ASP.NET MVC? История на ASP.NET MVC Предимства Недостатъци Separation of Concerns
E N D
Курс по информационни технологии Занятие №7ASP.NET MVC
Съдържание 1/3 • MVC • Какво е MVC? • История на MVC • Основни принципи на MVC • Контролери • Модели • Изгледи
Съдържание 2/3 • ASP.NET MVC • Какво е ASP.NET MVC? • История на ASP.NET MVC • Предимства • Недостатъци • Separation of Concerns • ASP.NET MVC приложения • Обработка на заявка • Контролери • Действия • Модели
Съдържание 3/3 • ASP.NET MVC приложения • Изгледи • Razor • Помощници • Частични изгледи • Филтриране • Рутиране
MVC • Какво е MVC? • Шаблон за разработка на приложения • Позволява преизползване на кода • SoC (Separation of Concerns) • История на MVC • Формулиран през 70те на миналия век от TrygveReenskaug • Имплементиран в Smalltalk за настолни приложения • Адаптиран за други видове приложения
Основни принципи на MVC • Модел, изглед и контролер • Мястото на потребителя • Предимствана MVC • … • Недостатъци на MVC • По-сложен от други подходи
Контролери • Обработват заявката с помощта на модели и изгледи • Осигуряват взаимодействие с потребителя • Контролират работата на приложението • Реализират логика специфична за приложението
Модели • Множество от класове представляващи бизнес логиката и данните, с които тя работи • Контролират правилата за валидиране и манипулиране на данните • Скриват достъпа до данните (съотв. могат да се разглеждат като слой за достъп до данни)
Изгледи • Определят изхода на приложението
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
ASP.NET MVC • Предимства • По-добър контрол върху изхода • Тестваем • Слабо обвръзване (loose coupling) • Разширяем • Конвенции над конфигурация • Недостатъци • Separation of Concerns • SRP (Single Responsibility Principle) • DRY (Don’t Repeat Yourself) • TDD (Test-Driven Development)
Обработка на заявка • Постъпва HTTP заявка • Определя се контролер • Контролерът създава модел • Изпълнява се действието на контролера • Избира се подходящ изглед (резултат) • Моделът се подава на изгледа • Изгледът преобразува модела в подходящ формат • Изпраща се HTTP отговор
Контролери • Контролерите се разполагат в папка “Controllers” • Контролерите са класове наследяващи класа Controller • Наименованията на класовете на контролерите завършват с “Controller” • На различните заявки съответства определено действие • Всеки контролер реализира едно или повече действия под формата на методи
Действия - характеристики • Действия • Всяко действие е публичен нестатичен метод на съответния контролер • Всяко действие има параметри • Всяко действие връща резултат • Резултатът може да е всякакъв • Често използван резултат е инстанция на ActionResult
Действия - параметри • Данните от заявката се превръщат в параметри към методите за действия • Подаване на параметри с рутиране • Подаване на параметри с GET заявка • Подаване на параметри с POST заявка • Контрол надповедението на методите за действиясъс селектори • Наименование – [ActionName] • Метода – [HttpGet], [HttpPost], [HttpDelete], [HttpOptions] и т.н. • Ограничения – [NoAction], [ChildActionOnly] и [RequireHttps]
Модели • Модели • Моделите се разполагат в папка /Models/ • Отразяват правилата на бизнес логиката на приложението за авторизация, валидация и т.н. • Контролират достъпа до данните и тяхната манипулация • Изолират работата с данните и в този смисъл представляват слой за достъп до данните
Изгледи • Представляват шаблони за динамична визуализация на даннитев папка /Views/ • Различни машини за изгледи (view engines) • Изпълняват код, за генериране на изхода • Дават “помощници” за генериране на изхода • Най-популярни машини са Razor и Web Forms • Данни към изгледа се поддават с колекцията ViewBag, динамични обект ViewDataили статичния обект Model (силно типизиране) • Поддръжка на оформления (layouts) • Поддръжкана частични изгледи (partial views)
Razor - основи • Език за разработка на шаблони • Razor кодът започва със символа “@” • Екраниране на “@” с “@@” • Коментари с “@*...*@” • Razor блоковете от код с “@{…}” • Визуализация на текст става с “@:” • Изрази с “@(…)” • C# конструкции като if, else, for, foreachи т.н. • Включване пространство на имената с “@using” • Дефиниране типа на модела с “@model”
Помощници • Всеки изглед наследява WebViewPage, а той - ViewPage • ViewPageима помощни свойства Html, Ajax, Urlи др.съответно от клас HtmlHelper, AjaxHelper, UrlHelperи др. • ViewPageможе да има и собствени помощни свойства • Помощните методи връщат резултат под формата на низове
Собствени помощници • Разработка на собствени помощни свойства с код • Разширяващи методи на класовете на съответните помощници • Връщат низове, презаписват метода ToString() или генерират тагове/атрибути като връщат TagBuilder • Разработка на собствени помощни свойства с Razor • Шаблон /App_Code/Helpers.cshtmlи “@helper”
Razor - оформления • Подразбиращо се оформление в /Views/_ViewStart.cshtml • В изгледа: Всеки изглед може да контролира своето оформление с променливата Layout • В оформлението: Визуализиране на съдържанието с @RenderBody()
Razor – оформления и секции • В изгледа: Дефиниране на секция с “@section Name { … }” • В оформлението: Визуализиране на секция с @RenderSection(name, isRequired)” • В оформлението: Използване на “@IsSectionDefined()”
Частични изгледи • Частичните изгледи се намират в папка /Views/или в папката /View/Shared/ • Частичните изгледи отново са стандартни шаблони • Частичните изгледи визуализират части от страницата • Преизползване на части от изгледите • Помощници – Partial, RenderPartialи Action
Структура и конфигуриране • Структура на ASP.NET MVC приложение • Конфигуриране на ASP.NET MVC приложение • Конфигуриране с конфигурация в Web.config • Конфигуриране с код в Global.asax • Web API • Филтриране • Валидиране • Рутиране • Пакети (bundles) • Автентикация
Рутиране • Контролира съответствието между образци на адреси и контролер/действие/параметри • Осигурява добре изглеждащи, REST-like и SEO адреси • Дефиниране на рутиране • Наименование • Образец на адреса • Съответстващи контролер/действие/параметри • Ограничени за параметрите • Дебъгване на рутирането с RouteDebugger
Филтриране • Филтрирането може да се прилага преди и след изпълнението на определена логика • Филтрирането може да се прилага върху действия и контролери • Глобални филтри се регистрират в GlobalFilters.Filters (или /App_Start/FilterConfig.cs) • Собствени филтри за действия • Разполагат се в папка /Filters/ • Наследяват ActionFilterAttribute • Приложими върху контролер, действие или глобално в GlobalFilters.Filters
ASP.NET MVC // ДЕМОНСТРАЦИЯ
Благодаря! • Валери Дачев • valery@david.bg • http://vdachev.net/ • @vdachev • https://www.facebook.com/vdachev • ДАВИД академия • acad@david.bg • http://acad.david.bg/ • @david_academy • https://www.facebook.com/groups/david.academy/