ASP.NET Core сьогодні: за і проти

ASP.NET Core має всі шанси замінити ASP.NET у його поточному вигляді. Чи варто переходити на ASP.NET Core вже зараз? Під катом інтерв'ю з закордонними гостями конференції:

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

Діно і Моріс відповідали англійською мовою, нижче ми публікуємо переклад відповідей.


— Діно, Ваша доповідь адресований в першу чергу тим, хто займається управлінням розробкою: архітекторів і 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, тим простіше локалізувати і переписати код. Великі програми не обов'язково переводити на нову платформу цілком, можна робити це поступово, по частинах.



Моріс, про що ви будете розповідати в першому доповіді?

— Платформі ASP.NET більше 15 років. Крім цього, на момент створення System.Web містила велику кількість коду для підтримки зворотної сумісності з класичним ASP. За цей час платформа накопичила достатню кількість коду, який просто більше вже не потрібен і застарів. Microsoft постала перед непростим вибором: відмовитися від зворотної сумісності або анонсувати нову платформу. Вони вибрали другий варіант. Одночасно з цим вони повинні були відмовитися і від існуючого runtime. Microsoft завжди була компанією, орієнтованою на створення і запуск всього і вся на Windows. Існуюча ASP.NET не був винятком. Зараз ситуація сильно змінилася: значне місце в стратегії компанії стали займати Microsoft і 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.



— Андрій, про що ти скажеш на DotNext?

— Про нові можливості для сучасних БІЗНЕС-додатків в 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?
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.