***** ASP.NET

advertisement
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.
Download