1 / 31

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

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

kent
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Курс по информационни технологии Занятие №7ASP.NET MVC

  2. Съдържание 1/3 • MVC • Какво е MVC? • История на MVC • Основни принципи на MVC • Контролери • Модели • Изгледи

  3. Съдържание 2/3 • ASP.NET MVC • Какво е ASP.NET MVC? • История на ASP.NET MVC • Предимства • Недостатъци • Separation of Concerns • ASP.NET MVC приложения • Обработка на заявка • Контролери • Действия • Модели

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

  5. MVC • Какво е MVC? • Шаблон за разработка на приложения • Позволява преизползване на кода • SoC (Separation of Concerns) • История на MVC • Формулиран през 70те на миналия век от TrygveReenskaug • Имплементиран в Smalltalk за настолни приложения • Адаптиран за други видове приложения

  6. Основни принципи на MVC • Модел, изглед и контролер • Мястото на потребителя • Предимствана MVC • … • Недостатъци на MVC • По-сложен от други подходи

  7. Контролери • Обработват заявката с помощта на модели и изгледи • Осигуряват взаимодействие с потребителя • Контролират работата на приложението • Реализират логика специфична за приложението

  8. Модели • Множество от класове представляващи бизнес логиката и данните, с които тя работи • Контролират правилата за валидиране и манипулиране на данните • Скриват достъпа до данните (съотв. могат да се разглеждат като слой за достъп до данни)

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

  10. 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

  11. ASP.NET MVC • Предимства • По-добър контрол върху изхода • Тестваем • Слабо обвръзване (loose coupling) • Разширяем • Конвенции над конфигурация • Недостатъци • Separation of Concerns • SRP (Single Responsibility Principle) • DRY (Don’t Repeat Yourself) • TDD (Test-Driven Development)

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

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

  14. Контролери • Контролерите се разполагат в папка “Controllers” • Контролерите са класове наследяващи класа Controller • Наименованията на класовете на контролерите завършват с “Controller” • На различните заявки съответства определено действие • Всеки контролер реализира едно или повече действия под формата на методи

  15. Действия - характеристики • Действия • Всяко действие е публичен нестатичен метод на съответния контролер • Всяко действие има параметри • Всяко действие връща резултат • Резултатът може да е всякакъв • Често използван резултат е инстанция на ActionResult

  16. Действия - параметри • Данните от заявката се превръщат в параметри към методите за действия • Подаване на параметри с рутиране • Подаване на параметри с GET заявка • Подаване на параметри с POST заявка • Контрол надповедението на методите за действиясъс селектори • Наименование – [ActionName] • Метода – [HttpGet], [HttpPost], [HttpDelete], [HttpOptions] и т.н. • Ограничения – [NoAction], [ChildActionOnly] и [RequireHttps]

  17. Действия - резултати

  18. Модели • Модели • Моделите се разполагат в папка /Models/ • Отразяват правилата на бизнес логиката на приложението за авторизация, валидация и т.н. • Контролират достъпа до данните и тяхната манипулация • Изолират работата с данните и в този смисъл представляват слой за достъп до данните

  19. Изгледи • Представляват шаблони за динамична визуализация на даннитев папка /Views/ • Различни машини за изгледи (view engines) • Изпълняват код, за генериране на изхода • Дават “помощници” за генериране на изхода • Най-популярни машини са Razor и Web Forms • Данни към изгледа се поддават с колекцията ViewBag, динамични обект ViewDataили статичния обект Model (силно типизиране) • Поддръжка на оформления (layouts) • Поддръжкана частични изгледи (partial views)

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

  21. Помощници • Всеки изглед наследява WebViewPage, а той - ViewPage • ViewPageима помощни свойства Html, Ajax, Urlи др.съответно от клас HtmlHelper, AjaxHelper, UrlHelperи др. • ViewPageможе да има и собствени помощни свойства • Помощните методи връщат резултат под формата на низове

  22. Собствени помощници • Разработка на собствени помощни свойства с код • Разширяващи методи на класовете на съответните помощници • Връщат низове, презаписват метода ToString() или генерират тагове/атрибути като връщат TagBuilder • Разработка на собствени помощни свойства с Razor • Шаблон /App_Code/Helpers.cshtmlи “@helper”

  23. Razor - оформления • Подразбиращо се оформление в /Views/_ViewStart.cshtml • В изгледа: Всеки изглед може да контролира своето оформление с променливата Layout • В оформлението: Визуализиране на съдържанието с @RenderBody()

  24. Razor – оформления и секции • В изгледа: Дефиниране на секция с “@section Name { … }” • В оформлението: Визуализиране на секция с @RenderSection(name, isRequired)” • В оформлението: Използване на “@IsSectionDefined()”

  25. Частични изгледи • Частичните изгледи се намират в папка /Views/или в папката /View/Shared/ • Частичните изгледи отново са стандартни шаблони • Частичните изгледи визуализират части от страницата • Преизползване на части от изгледите • Помощници – Partial, RenderPartialи Action

  26. Структура и конфигуриране • Структура на ASP.NET MVC приложение • Конфигуриране на ASP.NET MVC приложение • Конфигуриране с конфигурация в Web.config • Конфигуриране с код в Global.asax • Web API • Филтриране • Валидиране • Рутиране • Пакети (bundles) • Автентикация

  27. Рутиране • Контролира съответствието между образци на адреси и контролер/действие/параметри • Осигурява добре изглеждащи, REST-like и SEO адреси • Дефиниране на рутиране • Наименование • Образец на адреса • Съответстващи контролер/действие/параметри • Ограничени за параметрите • Дебъгване на рутирането с RouteDebugger

  28. Филтриране • Филтрирането може да се прилага преди и след изпълнението на определена логика • Филтрирането може да се прилага върху действия и контролери • Глобални филтри се регистрират в GlobalFilters.Filters (или /App_Start/FilterConfig.cs) • Собствени филтри за действия • Разполагат се в папка /Filters/ • Наследяват ActionFilterAttribute • Приложими върху контролер, действие или глобално в GlobalFilters.Filters

  29. ASP.NET MVC // ДЕМОНСТРАЦИЯ

  30. Въпроси?

  31. Благодаря! • Валери Дачев • 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/

More Related