SlideShare a Scribd company logo
1 of 16
Андрей Кулешов




ASP.NET MVC 4
Чем порадовал, чем удивил и что оставило равнодушным
Что нового?
(официальная версия)

▪ Обновленные шаблоны проектов
▪ Слияние и минификация ресурсов
▪ Новые шаблоны для мобильных сайтов
▪ Улучшенная поддержка асинхронных методов
▪ ASP.NET Web API
▪ Множество нововведений для мобильных приложений
▪ Больше опен-сурса по умолчанию
Adaptive templates
▪ Новые красивые страницы-по-умолчанию
▪ Используют адаптивный рендеринг
▪ Всѐ.
Bundling & Minification - зачем
▪ Решает задачу производительности при загрузке ресурсов, которые
  требуются нашей странице для корректной работы (в самую первую очередь
  – JavaScript, во вторую очередь – CSS, в третью – разнообразные
  LESS, html-шаблоны etc…)
▪ Первая очередь яваскрипта обусловлена блокирующей природой его
  загрузки
  Пока мы грузем яваскрипт, браузер практически останавливает свою работу
  А грузим мы его медленно из-за ограничения на количество одновременных
  скачиваний с одного домена
Демо
Bundling & Minification в ASP.NET MVC 4
Bundling & Minification – реализация в
ASP.NET MVC 4
Возможности                          Отсутствующие возможности

▪ Работает согласно названию, что,   ▪ Автоматический fallback для CDN-
  в общем-то, уже неплохо             скриптов

▪ Дает возможность b&m файлы по      ▪ Неудобно организована настройка
  списку или из папки по шаблону       порядка фалов внутри bundle
                                     ▪ Ручная организация порядка
▪ Запрос необходимых файлов            вывода bundles
  возможен как с layout-страницы,
  так и из отдельных View            ▪ В debug-режиме к пути файлов не
                                       добавляется хэш, что дает
                                       простор для проблем с
                                       кэширования на машине
                                       разработчика
Async controllers
▪ Позволяют разгрузить сервер и убрать простой потока, ожидающего
  асинхронного ответа от удаленного ресурса
▪ Существовали в MVC 3, но их синтаксис сложно было назвать тривиальным
▪ ASP.NET MVC 4 поддерживает введеные в .NET 4.5 ключевые слова
  async/await
  Вместо ActionResult – возвращаем Task<ActionResult>
▪ Обработка ошибок - поддерживается декларативное задание таймаутов на
  асинхронные операции и вывод custom views – пользователь будет видеть
  красивые сообщения
▪ Не забываем наследоваться от базового класса AsyncController (я почти
  забыл )
WebAPI
▪ Поставляется вместе с ASP.NET MVC 4
▪ По внутреннему устройству не имеет никакого отношения к ASP.NET MVC 4
▪ Но все равно заслуживает внимания – решение получилось интересным
WebAPI – организация доступа к данным по
шаблону MVC MC
▪ Цель – создавать сервисы – поставщики данных – специально заточенные
  под работу по протоколу HTTP
▪ В отличие от WCF, где одной из целей было абстрагирование от транспорта,
  WebAPI использует более глубокую интеграцию с HTTP
▪ Для CRUD-операций используется HTTP-verbs (POST, GET, PUT, DELETE)
WebAPI – идеи, пришедшие из ASP.NET MVC
▪ Одной из задач было, чтобы программистам ASP.NET MVC было более или
  менее комфортно с новым WebAPI

▪ Контроллеры
▪ Model binding and validation
▪ Роутинг (с изменениям – дефолтный маппинг имен методов не по URL, а по
  verb-ам запросов)
▪ Фильтры
▪ Scaffolding
▪ Тестирование
WebAPI
▪ Content negotiation – отдает данные в том формате, в котором просят.
  Ну, или очень старается.
  Что ценно – можно дописывать свои форматы (JSONP в частности)
▪ Query composition
▪ Поддержка IoC-контейнеров – даже лучше, чем у ASP.NET MVC
▪ Create custom help and test pages – интерфейс IApiExplorer
Новые опен-сурс библиотеки
▪ Были давно – jQuery, jQuery UI, Modernizr
▪ JSON.NET
▪ DotNetOpenAuth
Не успели
▪ Single Page Application – позволяет создавать приложения, работающие
  полностью на клиенте (одна страница, которая грузит с сервера только
  данные). Не успели к релизу, обещают отдельным пакетом
▪ Recipes
Интересное чтение
▪ 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 - как слышится,
  про то и рассказывается 
Интересное видео
▪ A look at ASP.NET MVC 4 by Scott Guthrie
▪ C#5, ASP.NET MVC 4, and asynchronous Web applications by Steven
  Sanderson
Вопросы?
                 Внимательно слушаю! 


Андрей Кулешов

kaa-tula@ya.ru
    akuleshov.tula




Специально для http://GetDev.NET

More Related Content

What's hot

Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)rit2010
 
Yaremchuk - Корпоративные сайты
Yaremchuk - Корпоративные сайтыYaremchuk - Корпоративные сайты
Yaremchuk - Корпоративные сайтыAndrii Podanenko
 
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. WebКурс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web7bits
 
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис РечкуновJSib
 
Курс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. SpringКурс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. Spring7bits
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25MoscowJS
 
Redux и изоморфные приложения
Redux и изоморфные приложенияRedux и изоморфные приложения
Redux и изоморфные приложенияJohn Wezel
 
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...Ontico
 
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...Ontico
 
Курс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологиюКурс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологию7bits
 
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...Badoo Development
 
А.Горбов, А.Фефелов. Секреты АБАК-ПРЕСС
А.Горбов, А.Фефелов. Секреты АБАК-ПРЕССА.Горбов, А.Фефелов. Секреты АБАК-ПРЕСС
А.Горбов, А.Фефелов. Секреты АБАК-ПРЕССit-people
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Vladimir Malyk
 
webpack: 7 бед - один ответ
webpack: 7 бед - один ответwebpack: 7 бед - один ответ
webpack: 7 бед - один ответDenis Izmaylov
 
«Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта» «Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта» Гузель Рахимова
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukInterSystems
 

What's hot (20)

Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)
 
Yaremchuk - Корпоративные сайты
Yaremchuk - Корпоративные сайтыYaremchuk - Корпоративные сайты
Yaremchuk - Корпоративные сайты
 
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. WebКурс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web
 
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
 
Курс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. SpringКурс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. Spring
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
 
Redux и изоморфные приложения
Redux и изоморфные приложенияRedux и изоморфные приложения
Redux и изоморфные приложения
 
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
 
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
 
Full Stack разработка на JavaScript
Full Stack разработка на JavaScriptFull Stack разработка на JavaScript
Full Stack разработка на JavaScript
 
Marrow
MarrowMarrow
Marrow
 
Курс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологиюКурс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологию
 
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
 
А.Горбов, А.Фефелов. Секреты АБАК-ПРЕСС
А.Горбов, А.Фефелов. Секреты АБАК-ПРЕССА.Горбов, А.Фефелов. Секреты АБАК-ПРЕСС
А.Горбов, А.Фефелов. Секреты АБАК-ПРЕСС
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?
 
Drupal and NodeJS.
Drupal and NodeJS.Drupal and NodeJS.
Drupal and NodeJS.
 
webpack: 7 бед - один ответ
webpack: 7 бед - один ответwebpack: 7 бед - один ответ
webpack: 7 бед - один ответ
 
Abf
AbfAbf
Abf
 
«Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта» «Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта»
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
 

Similar to ASP.NET MVC 4

ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
 
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворкиRoman Brovko
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без болиAnton Piskunov
 
20160330 Приложение с использованием данных с сервера (EMS)
20160330 Приложение с использованием данных с сервера (EMS) 20160330 Приложение с использованием данных с сервера (EMS)
20160330 Приложение с использованием данных с сервера (EMS) Andrew Sovtsov
 
Что нового в ASP.NET 5
Что нового в ASP.NET 5Что нового в ASP.NET 5
Что нового в ASP.NET 5Microsoft
 
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Ilya Kaznacheev
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéInterSystems CEE
 
Сергей Белов "bem server: система сборки фронтенда"
Сергей Белов "bem server: система сборки фронтенда"Сергей Белов "bem server: система сборки фронтенда"
Сергей Белов "bem server: система сборки фронтенда"Yandex
 
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Fwdays
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NETVitaly Baum
 
Drupal в облаке - Владимир Юнев
Drupal в облаке - Владимир ЮневDrupal в облаке - Владимир Юнев
Drupal в облаке - Владимир ЮневDrupalCamp MSK
 
Балансировка нагрузки веб-серверов
Балансировка нагрузки веб-серверовБалансировка нагрузки веб-серверов
Балансировка нагрузки веб-серверовEkaterina Giganova
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureNatalia Efimtseva
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыOleg Nenashev
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureAlexander Feschenko
 

Similar to ASP.NET MVC 4 (20)

ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
 
Errors Tracker
Errors TrackerErrors Tracker
Errors Tracker
 
20160330 Приложение с использованием данных с сервера (EMS)
20160330 Приложение с использованием данных с сервера (EMS) 20160330 Приложение с использованием данных с сервера (EMS)
20160330 Приложение с использованием данных с сервера (EMS)
 
Что нового в ASP.NET 5
Что нового в ASP.NET 5Что нового в ASP.NET 5
Что нового в ASP.NET 5
 
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для Caché
 
Сергей Белов "bem server: система сборки фронтенда"
Сергей Белов "bem server: система сборки фронтенда"Сергей Белов "bem server: система сборки фронтенда"
Сергей Белов "bem server: система сборки фронтенда"
 
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NET
 
Drupal в облаке - Владимир Юнев
Drupal в облаке - Владимир ЮневDrupal в облаке - Владимир Юнев
Drupal в облаке - Владимир Юнев
 
Балансировка нагрузки веб-серверов
Балансировка нагрузки веб-серверовБалансировка нагрузки веб-серверов
Балансировка нагрузки веб-серверов
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows Azure
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
 
Управление данными (распределенная обработка)
Управление данными (распределенная обработка)Управление данными (распределенная обработка)
Управление данными (распределенная обработка)
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows Azure
 

More from GetDev.NET

Leap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееLeap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееGetDev.NET
 
Гирлянда для программистов
Гирлянда для программистовГирлянда для программистов
Гирлянда для программистовGetDev.NET
 
Mind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеMind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеGetDev.NET
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015GetDev.NET
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революцияGetDev.NET
 
Windows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковWindows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковGetDev.NET
 
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКPhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКGetDev.NET
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web APIGetDev.NET
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013GetDev.NET
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...GetDev.NET
 
Lego Mindstorms
Lego MindstormsLego Mindstorms
Lego MindstormsGetDev.NET
 
Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8GetDev.NET
 
Async Javascript
Async JavascriptAsync Javascript
Async JavascriptGetDev.NET
 
XAML - язык разметки приложений
XAML - язык разметки приложенийXAML - язык разметки приложений
XAML - язык разметки приложенийGetDev.NET
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language RuntimeGetDev.NET
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиGetDev.NET
 
Roslyn - компилятор как сервис
Roslyn - компилятор как сервисRoslyn - компилятор как сервис
Roslyn - компилятор как сервисGetDev.NET
 

More from GetDev.NET (20)

Go
GoGo
Go
 
Leap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееLeap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущее
 
Гирлянда для программистов
Гирлянда для программистовГирлянда для программистов
Гирлянда для программистов
 
Mind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеMind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучше
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революция
 
Windows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковWindows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиков
 
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКPhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013
 
AngularJS
AngularJSAngularJS
AngularJS
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
 
Lego Mindstorms
Lego MindstormsLego Mindstorms
Lego Mindstorms
 
Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8
 
Async Javascript
Async JavascriptAsync Javascript
Async Javascript
 
XAML - язык разметки приложений
XAML - язык разметки приложенийXAML - язык разметки приложений
XAML - язык разметки приложений
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработки
 
Roslyn - компилятор как сервис
Roslyn - компилятор как сервисRoslyn - компилятор как сервис
Roslyn - компилятор как сервис
 

ASP.NET MVC 4

  • 1. Андрей Кулешов ASP.NET MVC 4 Чем порадовал, чем удивил и что оставило равнодушным
  • 2. Что нового? (официальная версия) ▪ Обновленные шаблоны проектов ▪ Слияние и минификация ресурсов ▪ Новые шаблоны для мобильных сайтов ▪ Улучшенная поддержка асинхронных методов ▪ ASP.NET Web API ▪ Множество нововведений для мобильных приложений ▪ Больше опен-сурса по умолчанию
  • 3. Adaptive templates ▪ Новые красивые страницы-по-умолчанию ▪ Используют адаптивный рендеринг ▪ Всѐ.
  • 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
  • 12. Новые опен-сурс библиотеки ▪ Были давно – jQuery, jQuery UI, Modernizr ▪ JSON.NET ▪ DotNetOpenAuth
  • 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