Microsoft Developer Tour Технологическая экспедиция msdevtour.ru Новый ASP.NET: введение для разработчиков Владимир Юнев Содержание Введение в ASP.NET • История, эволюция Компоненты нового ASP.NET 5 • MVC, WebAPI, Web Forms, SignalR Кросс-платформенная разработка для ASP.NET • Windows, OSX, Linux • Visual Studio, Sublime Размещение веб-приложений • Локальное, облачное, мобильный бэкенд • Linux, Docker и другое Введение в ASP.NET История и эволюция платформы разработки веб-приложений Microsoft Developer Tour #MSDevTour История ASP.NET Active Server Pages ASP.NET 1.1 ASP.NET 3.0 ASP.NET 3.5SP1 ASP.NET 4.5 • 1996 • 2003 • 2006 • 2008 • 2012 MVC CTP ASP.NET 1.0 ASP.NET 2.0 ASP.NET 3.5 ASP.NET 4.0 ASP.NET 5 • 2002 • 2005 • 2007 • 2010 • 2015 Единый ASP.NET – часть платформы .NET ASP.NET WebForms Идеи ASP.NET WebForms • • • • • Web-страница – это приложение Визуальная компонентная разработка Высокий уровень абстракции Автоматическое сохранение состояния События Плюсы • • • • Быстрая разработка сложных решений Тысячи компонент Тонны документации Низкий порог вхождения для новичков и десктоп-разработчиков ASP.NET MVC Идеи ASP.NET MVC • • • • • Шаблон Model View Controller Низкоуровневая веб-разработка Минимум лишних абстракций Оптимизация клиентского кода Открытый код и частые релизы Плюсы • • • • Контроль над каждым элементом Тонны клиентских библиотек Легкость модульного тестирования Легкость освоения для опытных веб-разработчиков других платформ ASP.NET MVC & Razor View Engine Новый движок представлений Чище, удобнее для клиентского кода Отвязывает ASP.NET MVC от Web Forms Razor: встроенное выражение Web Forms Razor Razor: однострочное выражение Web Forms Razor Razor: условия ASP.NET Web API Базируется на HTTP • Выбор типа контента • Маршрутизация (ASP.NET Routing) • RESTful-сервисы Поддерживается каждым клиентом • Мобильные устройства • Любые языки и платформы Программная HTTP-модель • Симметрично поддерживается как на клиенте, так и на сервере ASP.NET SignalR Обмен данными в реальном времени Набор протоколов для обратной совместимости Long pooling Forever Frames Server Sent Events HTML5 Web Sockets Поддержка множества платформ, языков, устройств Мобильные устройства, веб-приложения, облачные проекты, self-host Магическая простота и легкость разработки Open Source ASP.NET & Visual Studio Фантастическая поддержка инструментов веб-разработки • • • • HTML5, JS, CSS, JSON, … LESS, SASS, CoffeeScript, … AngularJS, Bootstrap, … Grunt, Gulp, Bower, NPM, … Проектирование, отладка, анализ, тестирование, профилирование, публикация, командная работа • Из коробки Работа с облачными ресурсами, удаленная отладка, стримминг логов Visual Studio Community Edition ASP.NET & Nuget Пакетный менеджер .NET-экосистемы Тысячи готовых компонент библиотеки, дополнения, JS/CSS- инструменты Тесная интеграция с Visual Studio командная строка Интеграция Continues Integration, системами управления кодом Nuget.org, Open Source DEMO Создание проекта, работа в Visual Studio, запуск и отладка Microsoft Developer Tour #MSDevTour Компоненты нового ASP.NET 5 MVC, WebAPI, WebForms, SignalR Microsoft Developer Tour #MSDevTour Тренды веб-разработки Открытость Устройства Социальность Облака .NET 2015 ASP.NET 5 Готовность к Облаку Модульность и открытость Улучшенные инструменты и фреймворки ASP.NET 5 Новая среда исполнения (Project K) ASP.NET 5 Новая среда исполнения (Project K) K Runtime Environment (KRE) среда исполнения, компиляция, SDK, CLR-хост K Version Manager (KVM) обновление и установка различных версий KRE K Package Manager (KPM) пакетный менеджер, например, NuGet K Language Runtime (KLR) self-hosting во время разработки, сборка и запуск проектов Командная строка (K Command) > k gen controller -m Person -dc PersonContext ASP.NET 5 Новая среда исполнения Full .NET CLR полная версия, совместимость Core CLR оптимизировано для облака Cross-platform CLR Windows, Linux, OS X Хостинг где угодно Side by side NET Core 5 – как пакет NuGet Селфхостинг на любом устройстве ASP.NET Open Source Open Source https://github.com/aspnet Реальные репозитории для разработки Contributions ASP.NET – современный WebForms Важнейшая часть ASP.NET Инвестиции в развитие Web Forms 4.6: HTTP 2, Async model bindings, Roslyn ASP.NET MVC 6 = MVC + WebAPI + Web Pages ASP.NET MVC 6 MVC Web API Web Pages ASP.NET MVC 6 MVC 6 View Components Замена partial views «Мини-контроллеры» - рендеринг части контента Папка компонент • «Views\ControllerName\Components\Component Name» Примеры использования динамические меню, облако тегов, панель логина, корзина, и т.д. ASP.NET MVC 6 & TagHelpers было стало Open sourced on GitHub ASP.NET Identity Единая система аутентификации • Web Forms, MVC, SignalR, Web API, … • Web, Phone, Store, гибридные приложения • Мульти-факторная аутентификация Легкость управления профилем пользователя • Добавление данных по требованию Хранение в любом хранилище • DB & EF by default, перенос по желанию: SharePoint, Azure, NoSQL, … • Контроль над схемой, смена таблиц, типов данных, … Управление ролями Поддержка аутентификации на заявках (claims based) Социальные сети Azure Active Directory ASP.NET & Single Page Apps & JS Frameworks Форматирование шаблонов {{…}} поддержка Angular, Handlebars, Mustache и др. Лучшая в мире поддержка TypeScript Bootstrap, knockout.js и другие из коробки Тысячи компонент из Bower, NPM, Nuget ASP.NET & Entity Framework 7.0 ORM Мультиплатформа mobile, OSX, Linux SQL & noSQL базы данных Azure Table Storage, Redis Облегченный, расширяемый Open Source http://github.com/aspnet/entityframework Roadmap ASP.NET 5 & Visual Studio 2015 Шаблоны ASP.NET 5 Empty, Starter, Console Публикация в Azure Web Sites с выбором KRE Интеграция с Application Insights Скаффолдинг через командную строку Entity Framework 7.0 ASP.NET 5 & Visual Studio 2015 Структура шаблона веб-проекта web.config -> project.json global.json wwwroot для статики Автодополнение Конфигурирование Зависимости (пакеты NuGet) ASP.NET 5 & Visual Studio 2015 Динамическая разработка Среда следит за изменениями Автоматическая сборка Вы: 1. Вносите изменения 2. Сохраняете 3. Обновляете браузер 4. Изменения применены ASP.NET 5 & Visual Studio 2015 Интеграция с Bower, Grunt, npm Работа с пакетами, веб-компонентами Task Runner Explorer Выполнение задач Grunt/Gulp LESS/SASS-компиляция, минификация Запуск JSHint, JSLint ASP.NET 5 & Visual Studio 2015 Identity и ASP.NET OpenID Connect, OAuth2 Broker Шаблоны ASP.NET 4.6 Новый диалог Azure AD Authentication ASP.NET 5 & Visual Studio 2015 Обновленный NuGet Новый GUI Поддержка xUnit Полноценная интеграция Test Explorer ASP.NET 5 & Visual Studio 2015 Редактор JSON Улучшенное автодополнение Схемы JSON, валидация Определение дубликатов данных Сообщения об ошибках Un-minify данных ASP.NET 5 & Visual Studio 2015 Редактор HTML Форматирование шаблонов {{…}} поддержка Angular, Handlebars, Mustache и др. Пользовательские элементы и атрибуты HTML5 HTML5 Web Components #region в коде HTML; комментарии todo/hack CSS/LESS/SASS ASP.NET 5 & Visual Studio 2015 Публикация в Azure Web Sites Выбор версии KRE Возможность выполнить PowerShell-скрипт ASP.NET 5 & Visual Studio 2015 Новые шаблоны проектов Интеграция с Azure и Application Insights Интеграция с Bower, Gulp, Grunt, NPM Обновление редакторов HTML5 & JSON DEMO Структура проекта на базе MVC6 Microsoft Developer Tour #MSDevTour Кросс-платформенная разработка для ASP.NET Windows, OSX, Linux Visual Studio, Sublime Microsoft Developer Tour #MSDevTour Our Vision: Every App & Every Developer Веб-разработка на Visual Studio Лучшие в мире редакторы HTML5, JS, CSS, JSON Отладка JS, TypeScript Автодополнение, Intellisense Интеграция c Bower, NPM, Gulp, Grunt Командная разработка с Git, TFS, Visual Studio Online Публикация Глубокая поддержка HTML5/JS Go to Definition • Поддержка пространств имен IntelliSense • Единая схема • Информация об устаревшем API • Поддержка IntelliSense для Knockout и AngularJS Подсветка и навигация • • • • Подсветка идентификаторов и панель навигации Автоматическое завершение кавычек Группировка атрибутов Улучшенные функции умных отступов и автоматического форматирования DOM Explorer и JavaScript console DOM Explorer Поддержка IntelliSense, поиск, редактирование, встроенные стили JavaScript console Поддержка IntelliSense, визуализация объектов, поддержка многострочных функций One ASP.NET Единый ASP.NET Один шаблон нового проекта для ASP.NET Кастомизация проекта с выбором любых компонент и варианта аутентификации Единый механизм и UI скаффолдинга Аутентификация Единый интерфейс выбора механизма аутентификации для проекта Поддержка Azure Active Directory Поддержка OWIN Visual Studio & IIS Express IIS Express – локальный сервер по умолчанию Browser Link Выбор браузеров Выбор сразу нескольких браузеров для автоматического запуска проекта Browser Link Обновление содержимого браузеров без перезагрузки страниц по команде из среды Visual Studio Powered by SignalR ASP.NET на OSX и Linux ASP.NET 5 поддерживает размещение на OSX и Linux Работает на Mono, с инвестициями от Microsoft Встроенный кросс-платформенный веб-сервер Kestrel Интеграция с редактором Sublime3 ASP.NET и Sublime Интеграция с инструментами командной строки K Работа с ошибками компиляции Управление зависимостями Дополнение кода и Intellisense OmniSharp, основано на Roslyn Open Source OmniSharp – кросс-платформенные инструменты .NET http://omnisharp.net IntelliSense Add Reference Format Document Deploy to Azure …многое другое! Open source & community driven DEMO Продвинутые инструменты Visual Studio для веб-разработки Microsoft Developer Tour #MSDevTour Размещение веб-приложений Локальное и облачное размещение Linux и другие платформы Microsoft Developer Tour #MSDevTour Размещение ASP.NET локально Веб-серверы IIS, Apache Копирование пакета, FTP Инструмент Web Deploy автоматическое размещение из Visual Studio Self-host Размещение ASP.NET в облаке Размещение в Microsoft Azure Virtual Machines, Cloud Services, Web Sites Новая система конфигурирования специфичная окружению Больше никакой привязки к web.config Встроенная система внедрения зависимостей (DI) Встроенные механизмы трассировки и диагностики Event Tracing for Windows, Application Insights ASP.NET в облаке за 5 шагов и 2 минуты Размещение ASP.NET - сравнение ASP.NET как мобильный бэкенд Azure Mobile Services • • • • • Готовый облачный бэкенд для мобильных приложений Данные, код, пуш-уведомления, авторизация, offline-режим и т.д. iOS, Android, Windows/WP, Xamarin, HTML5/JS, Cordova/PhoneGap Бесплатный тариф Создание своего REST API: Node.js или .NET Azure Mobile Services и REST API • ASP.NET Web API • Интеграция с Visual Studio: • Шаблон проекта Azure Mobile Service • Создание, публикация и удаленная отладка • Интеграция с Git DEMO Публикация проекта, облачное размещение, мобильный бэкенд Microsoft Developer Tour #MSDevTour Размещение ASP.NET в Linux Mono runtime sudo apt-get mono-complete Установка ASP.NET 5 git clone git://github.com/aspnet/home.git sh ~/sources/aspnet5/kvminstall.sh source ~/.k/kvm/kvm.sh kvm upgrade SSL-сертификаты для Nuget sudo $CERTMGR -ssl -m https://nuget.org Веб-сервер Kestrel k kestrel Размещение ASP.NET в Docker Поддержка контейнеров Docker Официальный образ ASP.NET 5 Docker Image https://registry.hub.docker.com/u/microsoft/aspnet/ Официальный образ Docker в Azure VM Docker on Ubuntu Server Три шага: 1. Создать VM с Docker 2. Создать и собрать образ контейнера приложения 3. Запустить контейнер ASP.NET & Docker: шаг 1, создание VM ASP.NET & Docker: шаг 2, создание контейнера Определение Dockerfile FROM microsoft/aspnet COPY . /app WORKDIR /app RUN ["kpm", "restore"] EXPOSE 5004 ENTRYPOINT ["k", "kestrel"] Сборка образа контейнера docker build -t myapp . ASP.NET & Docker: шаг 3, запуск контейнера Запуск контейнера docker run -t -d -p 80:5004 myapp Размещение ASP.NET на Raspberry PI Mono runtime sudo apt-get mono-complete Установка ASP.NET 5 git clone git://github.com/aspnet/home.git sh ~/sources/aspnet5/kvminstall.sh source ~/.k/kvm/kvm.sh kvm upgrade SSL-сертификаты для Nuget sudo $CERTMGR -ssl -m https://nuget.org Веб-сервер Kestrel k kestrel DEMO ASP.NET и Linux, Docker, размещение на Raspberry PI Microsoft Developer Tour #MSDevTour Заключение ASP.NET имеет долгую историю и огромную экосистему Компоненты из коробки на любой вкус, для любых целей • MVC, WebAPI, Web Forms, SignalR, Entity Framework, Identity Разрабатывать на ASP.NET можно где угодно • Windows, OSX, Linux • Visual Studio, Sublime Веб-приложения ASP.NET можно размещать куда угодно • Локальное, облачное, мобильный бэкенд • Linux, контейнеры Docker, устройства Всем спасибо! Ваши вопросы Владимир Юнев эксперт по стратегическим технологиям, Microsoft azurerus@microsoft.com @XaocCPS http://facebook.com/yunev http://blogs.msdn.com/b/vyunev Группа Azure для всех – http://facebook.com/groups/azurerus/ azure.com asp.net msftva.ru ©2015 Microsoft Corporation. All rights reserved. Microsoft, Windows, Office, Azure, System Center, Dynamics and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.