asp.net 5 (известный как vnext), и почему там всё по-другому

26
ASP.NET 5 ex. ASP.NET vNext Андрей Кулешов

Upload: getdevnet

Post on 12-Aug-2015

241 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: ASP.NET 5 (известный как vNext), и почему там всё по-другому

ASP.NET 5ex. ASP.NET vNext

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

Page 2: ASP.NET 5 (известный как vNext), и почему там всё по-другому

ASP.NET 5 (бывший vNext)

▪ История революции и предательства

▪ Что произошло в процессе переворота

▪ Как жить дальше в мире ASP.NET 5

▪ Про .NET Framework, .NET Core и про то, как сидеть сразу на двух стульях

Page 3: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Порубили▪ System.Web.dll

▪ Жёсткую привязку к IIS OS Windows

▪ *.csproj

▪ Web.config (на самом деле, нет)

▪ ASP.NET Web Forms (хотя их усиленно обещают добавить)

Page 4: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Добавили▪ Популярные в OpenSource-мире инструменты FrontEnd-разработки

Именовано:node.js – собственно, Node.jsnpm – пакеты для Node.js – серверный JSbower – пакеты для клиенсткой разработки – клиентский JSgrunt / gulp – билдёжные системы, основанные на JS

▪ Roslyn - с обещанием скорости и «компиляции на лету»(на моей машине не работает до сих пор)

▪ Tag Helpers

▪ Dependency Injection из коробки

▪ wwwroot

▪ project.json

Page 5: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Оставили▪ MVC

Model View (Razor) Controller

▪ WebAPI (влили в MVC)

▪ NuGet пакеты (с улучшениями, но и с оговорками)

Page 6: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Новая среда исполнения.NET FrameworkМонолитность

.NET CoreМодульность

Page 7: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Фреймворки и рантаймы...▪ .NET Framework

▪ .NET Core

▪ При работе в VS - компилируются одновременно, из командной строки – выбираем тот рантайм, с которым будем работать

▪ Конфигурируются независимо

"frameworks": { "dnx451": { }, "dnxcore50": { }}

Page 8: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Утилиты командной строки K* DN*DNVM – .NET Version ManagerУправляет списками доступных дефолтных рантаймов

dnvm upgrade

DNU - .NET Utility

Помогает в процессе разработки. Сбилдить, запаковать, перезакачать зависимости...

dnu restore

DNX - .NET Execution Environment

dnx . build

Page 9: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Один Ctrl+Shift+B = два набора DLL▪ Компилирует одновременно и под .NET Framework, и под .NET Core

(то есть сейчас в Error List могут быть ошибки, но приложение скомпилится и будет работать – потому что ошибки из другой DLL)

▪ Некоторые куски C# кода могут быть разными, и это by design – разные зависимости, иногда – разные классы, реализующие нужный функционал

▪ Используется условная компиляция

Page 10: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Один код – берётся из разных мест▪ Ну, это если вам повезёт.

▪ Если не повезёт – вы будете писать директивы условной компиляции

#if DNX451

var x = System.Reflection.Assembly.GetExecutingAssembly();

#endif

Page 11: ASP.NET 5 (известный как vNext), и почему там всё по-другому

NuGet-пакеты▪ Основной и единственный способ зависимостей на .NET-

библиотеки

▪ А вот ставить клиентские библиотеки с файликами в vNext теперь нельзя.Только Bower, только хардкор

▪ NuGet сильно доточили, поменяли UI, поменяли сервисную часть, перейдя с XML-протокола на JSON, что-то улучшив/убыстрив и сломав к чертям все старые подходы

Page 12: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Уходит Уменьшается понятие ReferenceПоявляется понятие Dependency(Мы пока говорим НЕ о Dependency Injection!Мы говорим о зависимости от .NET-библиотеки!)

▪ «Зависимостью» может быть либо проект в том же солюшене (solution)

▪ Либо NuGet-пакет

▪ Либо

Page 13: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Конфигурирование приложения▪ Configuration Builder

▪ Файлов преобразований (web.Release.config) больше нет

▪ Вместо этого предлагается читать из переменных окружения

▪ Либо подключать любые хранилища, которые вам нравятся, как источники конфигурации.

Page 14: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Dependency Injection▪ Раньше использование DI было допустимо и поощрялось

▪ Сейчас движок DI – это неотъемлимая часть фреймворка(при желании – заменяемая часть)

Page 15: ASP.NET 5 (известный как vNext), и почему там всё по-другому

wwwroot▪ Корневой папкой теперь является не корневая папка

▪ А wwwroot

▪ Вопреки непривычности, это очень удобно

Page 16: ASP.NET 5 (известный как vNext), и почему там всё по-другому

bower▪ Система управления клиентскими пакетами зависимостей

▪ Считается очень популярной. Кгргхм.

▪ Довольно, впрочем, удобная

▪ bower install jquery

▪ Поддержка Visual Studio:bower.json с автодополнением

jQuery Bootstrap

FontAwesome

NuGet# всего

13,749,886

2,401,216 366,148

Bower# всего

35,100 83,300 34,400

Bower.# за неделю

373 232 84

Page 17: ASP.NET 5 (известный как vNext), и почему там всё по-другому

gulp▪ Система сборки, основанная на языке JS,

исполняемая в среде Node.js

▪ Сама по себе не умеет делать вообще ничего. Но имеет огромное количество плагинов для решения самых разнообразных задач

▪ Структурная единица – task

▪ Типичные задачи клиентской разработки, решаемые с помощью gulp:- объединение и минификация JS-кода- запуск LESS/SASS преобразовний в CSS-правила- JSHint- разное

▪ Интеграция со студией: - запуск задач gulp из Task Explorer- запуск задач по билдёжным событиям

gulp.task("min:js", function () { gulp.src( [paths.js, "!" + paths.minJs], { base: "." }) .pipe(concat(paths.concatJsDest)) .pipe(uglify()) .pipe(gulp.dest("."));});

Page 18: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Упаковка проекта

▪ Publish Web

Либо новый путь:

▪ dnx . web

▪ Совсем простое клиентское приложение

Page 19: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Разворачиваем запакованное

▪ dnx . web

▪ dnx . kestrel

▪ dnx . nginx ?????????Не сейчас.

Page 20: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Работа на боевых серверах▪ Работает на IIS в x86-режиме

▪ Работает на веб-сервере Kestrel под Linux

▪ Работае в Azure-облаке

Page 21: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Общие библиотеки и командная строка▪ Чтобы создать новый проект командной строки в VS:

File New Project… Templates Visual C# Web Console Application

▪ Там же – и шаблон библиотек, предназначенных для работы под .NET Core/.NET Framework по новой модели

▪ Запускаются консольный программы не напрямую, а через утилиту dnx

Page 22: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Какова степень готовности?▪ Сейчас – в бэте

▪ Почти всё уже работает и компилируется, но ещё можно встретиться с недопереведёнными нужными библиотекам и т.д.

▪ Случаются неожиданные переименования/изменения подхода от одной версии к другой

▪ Периодически всплывают проблемы с диагностикой

▪ Официальный релиз – в районе сентября 2015

Page 23: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Баги естьНаиболее неприятные – падения с отсутвтием диагностики

Например, сейчас неправильный файл package.json вызывает крайнее недовольство студии

Она мигает разными иконками, но о причинах своего недовольства явно не пишет...

Page 24: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Интересное чтение

▪ Исходный код. Читайте!

▪ Официальный сайт. Документация, примеры и статьиhttp://asp.net/vnext(в урле – старое название технологии )

▪ Вики проектов на гитхабе

▪ Основная документация

▪ Блог Дэвида Фаулера

▪ Running ASP.NET 5 applications in Linux Containers with Docker

Page 26: ASP.NET 5 (известный как vNext), и почему там всё по-другому

Вопросы?Внимательно слушаю!

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

[email protected]

akuleshov.tula

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