ASP.NET Core сегодня: за и против

ASP.NET Core имеет все шансы заменить ASP.NET в его текущем виде. Стоит ли переходить на ASP.NET Core уже сейчас? Под катом интервью с зарубежными гостями конференции:

  1. Дино Эспозито — писатель, консультант, тренер и технический евангелист, признанный эксперт и популяризатор концепций DDD и CQRS
  2. Морис де Бейер — независимый консультант, MVP и автор онлайн-курса The React Tutorial
  3. Андрей Терехов — full-stack разработчик EPAM, специалист по серверному пререндерингу.


4d387d799af9460b89eb0a290da2e32c.jpg


Дино и Морис отвечали на английском языке, ниже мы публикуем перевод их ответов.

4d61f0e2a3294356a5fe1e87a7aa01f9.jpg— Дино, Ваш доклад адресован в первую очередь тем, кто занимается управлением разработкой: архитекторам ПО и CTO. О чём именно пойдёт речь?

— ASP.NET Core — это не просто новая версия. Это абсолютно новая платформа, смена эпох. Переход может принести компаниям много преимуществ: более компактный код, лучшую производительность и масштабируемость. Но какую цену придётся заплатить взамен, сколько кода придётся переписать? Я расскажу, какие шаги предстоит выполнить для миграции на ASP.NET Core, какие подсистемы придется переписать с нуля и какими могут быть стратегии перехода.

— Вы обещаете ответить, кому уже стоит задуматься о переходе на ASP.NET Core, а кому следует подождать. Кому вы посоветуете переходить с выходом RC2?

— Никому. ASP.NET Core ещё слишком сырой. Многие базовые вещи, такие как Data Access ещё не спроектированы на 100%. Нет никакой гарантии, что код, который вы используете сейчас, будет работать в релизной версии. Сейчас я думаю, что окончательно ASP.NET Core устаканится года через два.
По-настоящему следить за .NET Core уже сейчас нужно компаниям, занимающимся разработкой инструментов для программистов. Таким компаниям, как JetBrains. Они зарабатывают деньги на инструментах, а инструменты должны поддерживать любые новые платформы со дня запуска. Разработчикам корпоративного сектора я советую подождать.

Какие стратегии перехода доступны разработчикам прикладного ПО?

— Многие механизмы, неизменные за всё время жизни ASP.NET внезапно изменились в ASP.NET Core. Например, авторизация, безопасность, взаимодействие приложения с серверной инфраструктурой. Мы рассмотрим все эти изменения и разберёмся, как реализовывать привычные вещи по-новому. Для хорошо спроектированных приложений переход будет проще и может быть осуществлён выделенной командой разработки за разумное время. Для многих других приложений корпоративного сектора, особенно таких, как банковское ПО, использующих платформо-зависимые компоненты, вероятно, переход станет вовсе невозможен.

— Может ли использование CQRS как архитектурного паттерна смягчить переход?

— CQRS — это очень общая концепция, диктующая определённое разделение всего кода приложения на две подсистемы: чтения и записи. Подход может помочь за счёт возможности параллельной работы по портированию обеих подсистем независимыми командами. Независимо от того используется CQRS или нет, чем лучше разделены слои приложения и чем лучше ваше приложение абстрагировано от деталей реализации ASP.NET, тем проще локализовать и переписать код. Большие приложения не обязательно переводить на новую платформу целиком, можно делать это постепенно по частям.


1240050c4b654fe691c1456f7a10b773.pngМорис, о чём вы будете рассказывать в первом докладе?

— Платформе ASP.NET более 15 лет.  Кроме этого, на момент создания System.Web содержала большое количество кода для поддержки обратной совместимости с классическим ASP. За это время платформа накопила достаточное количество кода, который просто больше уже не нужен и устарел. Microsoft встала перед непростым выбором: отказаться от обратной совместимости или анонсировать новую платформу. Они выбрали второй вариант. Одновременно с этим они должны были отказаться и от существующего runtime. Microsoft всегда была компанией, ориентированной на создание и запуск всего и вся на Windows. Существующая ASP.NET не был исключением. Сейчас ситуация сильно поменялась: значительное место в стратегии компании стали занимать Azure и Linux.

ASP.NET Core — это работа над ошибками классического ASP.NET MVC, возможность начать с чистого листа. Кроме этого, Microsoft также стремится стать такой же популярной, как Ruby и NodeJS среди более юных разработчиков.

— Что значит для нас переход на новую платформу?

— .NET Core не содержит многих компонентов, к которым мы привыкли. Забудьте про System.Web, Web Forms, Transaction Scope, WPF, Win Forms. Их больше нет. Для простых ASP.NET MVC-приложений изменится немного и переход скорее всего будет простым. Для более сложных, использующих большое количество классов .NET Framework и ASP.NET pipeline ситуация сложнее. Что-то может работать, а что-то нет. Какую-то часть кода придётся переписать с нуля. Дополнительные проблемы может вызвать WebApi, потому что подсистемы ASP.NET MVC и WebApi теперь объединены. Многие библиотеки и nuget-пакеты ещё не готовы. Так что какие-то приложения просто не смогут перейти, пока не появятся новые версии библиотек.

— Каковы перспективы ASP.NET Framework 5 и ASP.NET Core, не произойдёт ли разделение сообщества на адептов каждой реализации?

Я думаю, что нас ждёт ситуация, похожая на переход от Web Forms к ASP.NET MVC. ASP.NET Framework будет поддерживаться ещё долго. Сначала лишь небольшая часть приложений будет разрабатываться на ASP.NET Core. Их количество будет увеличиваться, но рано или поздно все захотят перейти на ASP.NET Core. У нас до сих пор много работающих приложений на Web Forms. Да что там, до сих пор есть работающий в продакшене код на COBOL«е. Никто не собирается его переписывать, потому что он просто работает. Однако, никому не придёт в голову сейчас разрабатывать новое приложение на Web Forms, все выберут MVC. Рано или поздно такой же процесс произойдёт с ASP.NET Framework и ASP.NET Core. Последняя предлагает больше возможностей, отвечающих современным стандартам разработки.

— Например, возможность использования Docker? Это тема вашего второго доклада.

— Абсолютно верно. Docker позиционируется как решение проблемы «на моей машине работает». До недавнего времени мы были очень зависимыми от платформы: ASP.NET означал в 99% случаев Windows. Да, у нас была Mono, но у них не было официальной поддержки Microsoft, что для многих разработчиков означало, что они даже не будут пытаться рассматривать такой вариант. Сейчас Mono принадлежит Microsoft, корпорация официально поддерживают Linux и Mac OS. Мы можем запускать Docker-контейнеры с Windows или Linux. Во время доклада я объясню основные концепции Docker и продемонстрирую, как можно запустить ASP.NET Core приложение в Docker-контейнере. Это означает, что мы сможем поставлять не бинарные файлы, а уже сконфигурированные приложения, которые могут быть запущены в облачной инфраструктуре, например, Azure.

— В своей рекламной кампании Microsoft делает ставку на несвойственные ей позиции: высокая производительность, масштабируемость, кроссплатформенность. Не кажется ли Вам, что ASP.NET «залезает» на территорию NodeJS?

— В каком-то смысле NodeJS и ASP.NET всегда были конкурентами: и то и другое — платформы для бекенда. Но на самом деле между ними, конечно, не было никакой борьбы. Новое поколение разработчиков, так называемые hipster developers, предпочитают Ruby и Node. Более взрослое поколение, люди из корпоративной среды, на стороне .NET и Java. .NET Core явно стремится быть более молодой, модной и популярной. Так что да, в будущем нас может ждать настоящее противостояние .NET Core и NodeJS.


5ae5d6f122694d5b82dda8b0e7b77b90.png— Андрей, о чём ты расскажешь на DotNext?

— О новых возможностях для современных SPA-приложений в ASP.NET Core как на этапе разработки, так и в продакшене, в частности об использовании Isomorphic JS и Web Components.

— А причём здесь ASP.NET?

— Речь пойдёт о библиотеке JavaScriptServices. С её помощью можно настроить гибкую маршрутизацию к разным backend«ам и собрать всё под одной крышей. Это может быть полезно для тех, кто устал администрировать зоопарк микросервисов, написанных на разных технологиях. Кроме этого, технология позволяет многократно ускорить время получения первой страницы за счёт серверного пререндера и обеспечить индексируемость SPA-приложений поисковиками. При этом сохраняются все преимущества современного богатого web-стека: сборщики, транспайлинг, hot reload и другое. Достаточно написать не webpack -hrm, а dnx web.

— Какие JavaScript-фреймворки поддерживаются?

— React — production ready, Angular 2 — на свой страх и риск: он ещё в стадии разработки.

— Я вижу, что библиотека официально включена в ASP.NET Core. Она войдёт в RC2 или в 1.0?

— Изначально разработку начал @SteveSandersonMS и вся разработка велась силами сообщества. Уже потом было принято решение включить в состав ASP.NET Core. Сейчас Стив переключился на другие задачи — в какой-то момент была проблема с тем, чтобы принимать pull request«ы.

Поэтому решение об официальном включении в состав ASP.NET — как нельзя кстати. Это значит, что всегда найдётся кто-то, кто будет ей заниматься: не конкретный человек, но кто-то будет. По идее она даже должна зарелизиться вместе с основной частью ASP.NET.

— Существующая версия библиотеки работает на dnx. Запланирован ли ее перевод на cli, если да, то когда?

— Только недавно перевели и отладили. Работает как часы.

— Сколько по времени ушло на написание библиотеки, и за какую часть отвечал ты?

— Больше трёх месяцев. Но это же community-разработка. Потому и так долго. Кроме Стива и меня работало ещё 2–3 человека. Я в основном занимался прикручиванием Angular.


Ну, а мы продолжаем ждать вас 3 июня в Санкт-Петербурге на конференции DotNext 2016 Piter. Именно там можно будет услышать доклады, упомянуты в посте, задать вопросы докладчикам, а заодно проверить своё знание английского:
Are you ready?

© Habrahabr.ru