Видеозапись доклада: http://getdev.net/Event/asp-net-mvc-4
Обзор возможностей новой версии платформы ASP.NET MVC 4. Web API, Bundling & Minification, разработка для мобильных устройств, Single-Page Web Applications, а также другие, не столь крупные, нововведения.
2. Что нового?
(официальная версия)
▪ Обновленные шаблоны проектов
▪ Слияние и минификация ресурсов
▪ Новые шаблоны для мобильных сайтов
▪ Улучшенная поддержка асинхронных методов
▪ ASP.NET Web API
▪ Множество нововведений для мобильных приложений
▪ Больше опен-сурса по умолчанию
4. Bundling & Minification - зачем
▪ Решает задачу производительности при загрузке ресурсов, которые
требуются нашей странице для корректной работы (в самую первую очередь
– JavaScript, во вторую очередь – CSS, в третью – разнообразные
LESS, html-шаблоны etc…)
▪ Первая очередь яваскрипта обусловлена блокирующей природой его
загрузки
Пока мы грузем яваскрипт, браузер практически останавливает свою работу
А грузим мы его медленно из-за ограничения на количество одновременных
скачиваний с одного домена
6. Bundling & Minification – реализация в
ASP.NET MVC 4
Возможности Отсутствующие возможности
▪ Работает согласно названию, что, ▪ Автоматический fallback для CDN-
в общем-то, уже неплохо скриптов
▪ Дает возможность b&m файлы по ▪ Неудобно организована настройка
списку или из папки по шаблону порядка фалов внутри bundle
▪ Ручная организация порядка
▪ Запрос необходимых файлов вывода bundles
возможен как с layout-страницы,
так и из отдельных View ▪ В debug-режиме к пути файлов не
добавляется хэш, что дает
простор для проблем с
кэширования на машине
разработчика
7. Async controllers
▪ Позволяют разгрузить сервер и убрать простой потока, ожидающего
асинхронного ответа от удаленного ресурса
▪ Существовали в MVC 3, но их синтаксис сложно было назвать тривиальным
▪ ASP.NET MVC 4 поддерживает введеные в .NET 4.5 ключевые слова
async/await
Вместо ActionResult – возвращаем Task<ActionResult>
▪ Обработка ошибок - поддерживается декларативное задание таймаутов на
асинхронные операции и вывод custom views – пользователь будет видеть
красивые сообщения
▪ Не забываем наследоваться от базового класса AsyncController (я почти
забыл )
8. WebAPI
▪ Поставляется вместе с ASP.NET MVC 4
▪ По внутреннему устройству не имеет никакого отношения к ASP.NET MVC 4
▪ Но все равно заслуживает внимания – решение получилось интересным
9. WebAPI – организация доступа к данным по
шаблону MVC MC
▪ Цель – создавать сервисы – поставщики данных – специально заточенные
под работу по протоколу HTTP
▪ В отличие от WCF, где одной из целей было абстрагирование от транспорта,
WebAPI использует более глубокую интеграцию с HTTP
▪ Для CRUD-операций используется HTTP-verbs (POST, GET, PUT, DELETE)
10. WebAPI – идеи, пришедшие из ASP.NET MVC
▪ Одной из задач было, чтобы программистам ASP.NET MVC было более или
менее комфортно с новым WebAPI
▪ Контроллеры
▪ Model binding and validation
▪ Роутинг (с изменениям – дефолтный маппинг имен методов не по URL, а по
verb-ам запросов)
▪ Фильтры
▪ Scaffolding
▪ Тестирование
11. WebAPI
▪ Content negotiation – отдает данные в том формате, в котором просят.
Ну, или очень старается.
Что ценно – можно дописывать свои форматы (JSONP в частности)
▪ Query composition
▪ Поддержка IoC-контейнеров – даже лучше, чем у ASP.NET MVC
▪ Create custom help and test pages – интерфейс IApiExplorer
13. Не успели
▪ Single Page Application – позволяет создавать приложения, работающие
полностью на клиенте (одна страница, которая грузит с сервера только
данные). Не успели к релизу, обещают отдельным пакетом
▪ Recipes
14. Интересное чтение
▪ Professional ASP.NET MVC 4 by Phil Haack and many, many others
▪ http://www.asp.net/mvc
▪ http://www.asp.net/mvc/mvc4 - What’s new
▪ http://www.asp.net/whitepapers/mvc4-release-notes
▪ http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification - как слышится,
про то и рассказывается
15. Интересное видео
▪ A look at ASP.NET MVC 4 by Scott Guthrie
▪ C#5, ASP.NET MVC 4, and asynchronous Web applications by Steven
Sanderson
16. Вопросы?
Внимательно слушаю!
Андрей Кулешов
kaa-tula@ya.ru
akuleshov.tula
Специально для http://GetDev.NET