Your SlideShare is downloading. ×
ASP.NET, MVC, ASP.NET MVC
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

ASP.NET, MVC, ASP.NET MVC

1,853
views

Published on

Видео с доклада: http://getdev.net/Event/asp-net-mvc-4 …

Видео с доклада: http://getdev.net/Event/asp-net-mvc-4
Доклад об ASP.NET MVC, откуда и зачем он появился, какие задачи решает, какой подход к разработке исповедует. Этот доклад больше пригодится тем, кто хочет углубить и структурировать свои знания об ASP.NET MVC


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,853
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
27
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Андрей КулешовASP.NET, MVC,ASP.NET MVCИстория, паттерны, реализация
  • 2. История▪ В 1991 появляется первый стандарт языка разметки HTML – Hyper Text Markup Language▪ В следующее десятилетие наблюдается взрывной рост количества веб- серверов (как программного обеспечения, так и машин, обслуживающих запросы), веб-браузеров, веб-стандартов▪ От серверов, отдающих статическое содержимое (файлы на жестком диске) – к динамическому содержимому (когда возвращаемый результат был результатом работы программы)▪ Январь 2002 – релиз ASP.NET Web Forms (вместе с .NET как таковым)
  • 3. Почему перестало хватать Web Forms?▪ ASP.NET – хорошая программная платформа, созданная десятилетие назад• Одно из декларированных преимуществ – не нужно учить HTML – мы кидаем на страницу контролы (привет, разработчики Visual Basic) и всѐ автомагически происходит на сервере• Потому что в далекие времена ничего хорошего на клиенте происходить не могло• Высокая сложность клиентского кода – у каждого браузера свой диалект JavaScript (он же LiveScript, он же JScript, и всѐ это станет стандартом ECMAScript), своя DOM, и нет никаких распространенных фреймворков, позволяющих абстрагироваться от этих различий• Обмен данными между клиентом и сервером идѐт строго по схеме GET – POST (и разработчикам Web Forms даже не надо знать этих слов)
  • 4. Что случилось?▪ AJAX▪ Стандартизация▪ JavaScript фреймворки (jQuery, Yahoo)▪ Расширение возможностей браузеров▪ Распространение unit-тестирования
  • 5. Люди, желавшие странного...▪ Лучший контроль над генерируемой HTML-разметкой▪ Лучшие возможности для создание скриптов на клиенте▪ Больше возможностей для юнит-тестирования логики
  • 6. ДемоMVC для ASP.NET своими руками
  • 7. Единая точка входа запросов▪ Все запросы перенаправляются на центральный IHttpHandler▪ Если по запрошенному пути существуют физический файл на диске, то сервер возвращает этот файл▪ Иначе – запрос обрабатывается согласно правилам роутинга
  • 8. Сферический MVC в ваакуме▪ Model-view-controller (MVC, «Модель-представление-поведение», «Модель- представление-контроллер») — архитектура программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие компоненты.• Модель (Model). Модель предоставляет данные (обычно для View), а также реагирует на запросы (обычно от контроллера), изменяя своѐ состояние.• Представление (View). Отвечает за отображение информации (пользовательский интерфейс).• Контроллер(Controller). Интерпретирует данные, введѐнные пользователем, и информирует модель и представление о необходимости соответствующей реакции.- модель независима от визуального представления- для одной и той же модели можно создавать различные представления
  • 9. Явление ASP.NET MVC народу▪ Прототип придуман в феврале 2007 года Скоттом Гуфри, на борту самолета, на котором тот летел на конференцию на восточное побережье США▪ Впервые показан в октябре 2007 года, где вызвал интерес и желание продолжать▪ ASP.NET MVC CTP – декабрь 2007▪ Первый релиз в марте 2009▪ Последний стабильный релиз – MVC 4 – август 2012 г.
  • 10. ДемоПроект ASP.NET MVC
  • 11. Separation of ConcernsРазделение ответственностиПредназначено для того, чтобы сделать код более
  • 12. Configuration over Convention▪ Есть ряд простых правил (именования файлов и классов, размещения их внутри папок), следуя которым, вы просто подключаете ваш код (или разметку) к инфраструктуре MVC, и не выполняете никакого дополнительного конфигурирования▪ Например – все контроллеры должны реализовывать интерфейс IController (условие, необходимое для работы), находиться в папке Controllers иметь постфикс имение Controller (конвенции, позволяющие обойтись без их явного конфигурирования)
  • 13. ASP.NET MVC – это тот же ASP.NET▪ То есть стоит на плечах гигантов...▪ Единая среда для Web Forms и MVC▪ Одно и то же программное окружение – Один и тот же набор модулей для аутентификации, кэширования, хранения сессий – Централизованный HTTP хэндлер, отдающий все ресурсы• Возможность работы бок о бок – Классические Web Forms и ASP.NET MVC могут работать внутри одного и того же проекта
  • 14. Controllers▪ Задачи контроллера – это принять данные от пользователя и обработать их, или, наоборот, подготовить данные для отправки пользователю▪ Содержит множество (возможно, пустое )Actions▪ Как правило – сгруппированных по смыслу▪ Каждый Action возвращает информацию, содержащую: - модель (model) - данные для выбора представления (View)
  • 15. Model▪ Класс. Просто класс. Plain Old Class Object, он же POCO. Других особых требований к нему нет.▪ С точки зрения Best Practices существует два подхода: - пишем для Action-ов свои классы, описывающие минимально необходимую сущность (public class HumanViewModel) - используем классы из доменной модели нашего приложения, например, сгенерированные Entity Framework и имеющие маппинги на базу данных▪ (автор является строгим приверженцем первого подхода)▪ Однако модель может быть декорирована атрибутами, описывающими еѐ и автоматически включающими клиентскую и серверную валидацию▪ (хотя с тем же успехом к ней может быть создана парная мета-модель... Но это уже совсем отдельная тема)
  • 16. Views▪ Отвечают за преобразование данных (модели) в браузерочитаемую разметку▪ Использование ASPX/ASCX – только потому, что мы уже умеем на них писать▪ Это не полноценная страница (Page) – это шаблон. У него нет жизненного цикла, у него вообще жизни нет.▪ Единственная цель остается той же – получить строку с HTML внутри▪ Возможность подключения кастомизированных View Engine, начиная с первой версии▪ Поддерживаемый Microsoft ViewEngine Razor начиная с третьей версии ASP.NET MVC
  • 17. Cтандартный механизм View▪ Pure HTML▪ HTML.* helpers▪ AJAX.* helpers▪ URL.* helpers▪ <%= … %> vs <%: … %> vs <% %> vs @... vs @{ … }▪ Повторное использование кода и разметки – пользовательские контролы
  • 18. Rich User Interface▪ Легкость взаимодействия с JavaScript – разметка не меняется после серверной обработки▪ jQuery в коробке, поддерживается Microsoft▪ Легкость AJAX-взаимодействия с сервером – можно обращаться напрямую к Action▪ Встроенные AJAX.* helpers (начиная с версии 3 используют jQuery, а не собственные библиотеки Microsoft)▪ Обмен данными в форматах plain HTML, JSON, JavaScript▪ Благодаря этому – повторное использование серверных контролов в клиентском коде без многократных перегрузок страниц
  • 19. Unobtrusive JavaScript▪ Разделение обязанностей – HTML отдельно, JavaScript отдельно▪ HTML-5 style <input type=―text‖ data-valid=―true‖ value=―Привет‖/>▪ AJAX.* и валидация данных используют этот подход, начиная с версии 3▪ Значительно упрощает получение HTML через ajax-запрос▪ Значительно упрощает кастомизацию▪ Значительно увеличивает читаемость кода
  • 20. Валидация данных▪ Декларативное объявление атрибутов валидности▪ Атрибуты ассоциированны с самой моделью▪ Если модель недоступна (например, сгенерирована) – можно создать для неѐ класс – поставщик метаданных▪ Единая модель валидации для клиента и сервера▪ Начиная с MVC 3 – jquery.validation как движок клиентской валидации▪ Декларативный HTML-5 стиль на клиенте – легкость работы с AJAX
  • 21. URL mapping▪ Сопоставляет пришедший запрос с контроллером, методом▪ Служит одним из источником параметров Action-ов▪ User-friendly URL
  • 22. Сильно упрощенная схема генерации ответа User Request IIS handles request Routing Module MVCRouteHandler http://getdev.net View Engine – look Controller Factory Controller Action for view Execute View to get Send response markup back to user agent
  • 23. Как в контроллеры приходят параметры?Концепция Model Binders• Заполнение модели сырыми данными из формы, запроса и прочих источников данных, пришедших от пользователя – НЕ работа контроллера Это нарушило бы принцип Single Responsibility• Для любой модели можно определить класс, который ей конструирует, глобально или на уровне отдельного методаDefault Model Binder• ValueProvider: данные из формы, данные из строки запроса• Сопоставление данных со свойствами модели происходит по имени• Угадайте механизм .NET, который позволяет это делать Reflection
  • 24. Areas▪ Средство для разбиения одного большого сайта на несколько почти независимых маленьких▪ Каждая Area имеет свой набор контроллеров, View и (опционально) моделей▪ Типичный пример – одна Area для обычных пользователей, другая – для администраторов
  • 25. Action Filters▪ Фильтр операции (action filter) — это атрибут, который позволяет декларативно подключать к запрошенной операции некое поведение.▪ IActionFilter - Методы этого интерфейса вызываются до и после выполнения метода контроллера▪ IAuthorizationFilter - Методы этого интерфейса вызываются до выполнения метода контроллера▪ IExceptionFilter - Методы этого интерфейса вызываются всякий раз, когда при выполнении метода контроллера генерируется исключение▪ IResultFilter - Методы этого интерфейса вызываются до и после обработки результата операции
  • 26. Dependency Injection▪ В соответствии с первоначальной задумкой, в ASP.NET MVC предусмотрено множество мест, в которых можно перехватывать или заменять фукнционал фреймворка, не используя грязных хаков▪ Наиболее популярные заменяемые части: - инстанциирование контроллеров - View Engine - Model Binder▪ Всего же мест для замены стандартных частей фреймворка в ASP.NET MVC 4 порядка полутора десятков
  • 27. Интересное чтение▪ Pro ASP.NET MVC 3 Framework by Steven Sanderson & Adam Freeman▪ Professional ASP.NET MVC 4 by Phil Haack and many, many others▪ http://www.asp.net/mvc▪ Фильтры операций в ASP.NET MVC от Дино Эспозито
  • 28. Интересное видео▪ http://www.mvcconf.com/ - онлайн-конференция, посвященная ASP.NET MVC▪ ASP.NET MVC For Web Forms developers by Dino Esposito
  • 29. Вопросы? Внимательно слушаю! Андрей Кулешовkaa-tula@ya.ru akuleshov.tulaСпециально для http://GetDev.NET