[Из песочницы] ASP.NET vNext Ликбез
Ожидаемый релиз платформы ASP.NET (vNext) один из наиболее насыщенных в плане новшеств. Но вместе со всеми новинками к нам приходит и огромное число новых спецификаций, компонентов и других особенностей. В то же время мир .NET эволюционирует с такой скоростью, что просто следить за всеми новинками web-разработки от Microsoft почти не возможно. Особенно если вы до сих пор пишете на технологиях 10-летней давности (ASP.NET Web Forms, .NET 2.0) или выходец не из .NET мира веб-разработки. Возможно именно сейчас один из тех моментов когда можно пропустить все версии предыдущих обновлений и, начав с чистого листа, попасть в новый поток развития платформы. Рассмотрим основные пункты для этого: vNext Roslyn OWIN Katana K ASP.NET vNextASP.NET vNext — это следующая версия платформы ASP.NET. Она еще находится в разработке, но та часть, что уже была представлена широкой публика показывает, что изменений в платформе огромное количество. Цель нового релиза — создать трендовый стек для .NET для построения современных облачно-ориентированных приложений.Основные особенности: Открытый исходный код, Кроссплатформенность, Полностью базируется на новом Roslyn компиляторе, MVC, Web API, Web Pages объединены в один фреймворк — MVC 6, Dependency Injection встроен внутрь фреймворка, Отсутствие зависимости от веб сервера и платформы для хостинга, Больше не зависит от супер-библиотеки System.Web Кроме огромной работы по обновлению платформы изменился и сам подход как эти изменения представляются сообществу. Социальная составляющая релиза очень интересна и следить за платформой стало очень удобно. Кроме блогов и новостей в социальных сетях выпускаются открытые предварительные версии где можно отлично пощупать платформу. А так же появился интересный формат Community Standup — можно задать вопросы или услышать онлайн самих разработчиков новой платформы. Все это происходит в веселой и интересной форме и позволяет наблюдать за разработкой платформы «от первого лица», почти участвуя в этом. Стендапы проходят в Hangouts каждую неделю и потом выкладываются в YouTube.
[embedded content]
Roslyn О новом компиляторе (платформе компиляторов) от Microsoft разговаривают уже давно. Первая предварительная версия была выпущена еще 3 года назад (в 2011). Но и планы на компилятор большие. Во-первых он тоже будет с открытым кодом (c 3-го апреля под лицензией Apache License 2.0). Во-вторых Roslyn поддерживает скриптовые сценарии. То есть выполнять куски кода можно на лету. Уже начали появляться продвинутые консоли с поддержкой C#. Так же в Roslyn есть свои API для использования разработчиками. Интересно, что сам компилятор написан на C#.Что касается отличий в работе для рядового программиста пока сложно что-то сказать, теоретически с новым компилятором и новым типом ASP.NET проекта (веб сайт и веб приложение больше не разделены на разные проекты) время ожидания компиляции и обновление страницы при изменении исходного кода должна значительно сократится. В идеале — меняем код, нажимаем F5 и сайт сразу перед нами.
OWIN — Open Web Interface for .NET Возможно именно благодаря этому стандарту и начались изменения с самой основы. В первую очередь это не платформа и не библиотека, а всего лишь спецификация, набор правил. OWIN — спецификация, что определяет стандартный интерфейс между веб сервером и веб приложением.Часто употребляется другое название — промежуточный слой (Middleware). Его целью является разделить сервер и приложение, а так же (по скольку стандарт открыт) позволить и стимулировать разработку реализаций стандарта.Какая же практическая ценность? Без OWIN-а вся работа приложения завязана на то, как веб сервер (IIS) разговаривает с ним. Если же присутствует промежуточный слой, то никакой жесткой привязки к веб серверу нет, и веб сервером может выступать все что угодно, что умеет работать с OWIN.
Таких промежуточных слоев может быть сколько угодно и в них можно выносить отдельную логику или же распределенную функциональность.
Интересный момент в спецификации OWIN, что все взаимодействие между приложением и сервером через промежуточный слой сводится к единственной функции — делегату приложения.
using AppFunc = Func
Katana Katana — одна из реализаций спецификации OWIN. Реализована компанией Microsft, потому еще можно встретить название Microsoft OWIN. Как и для других продуктов, связанных с ASP.NET vNext, исходный код проекта Katana открыт.Если посмотреть что это значит для разработчиков то ответ — фактически изменения касаются только функционала, завязанного на работу с сервером. Больше не нужны настройки и события, типа global.asax. Новый стандарт — класс Startup. Минимально веб приложение теперь можно описать в несколько строк.
public class Startup { public void Configuration (IAppBuilder app) { app.Run (context => { context.Response.ContentType = «text/plain»; return context.Response.WriteAsync («Hello Habr!»); }); } } K По мере изучения платформы вам часто будет встречаться K — Project K, K version manager, K runtime и даже консольная команда k. Что же такое K? Изначально название новой платформы ASP.NET было Project K (возможно K от Katana). Названия Project K и ASP.NET vNext это фактически одно и тоже — новый релиз платформы серверной разработки.
KRuntime — основа платформы, программная среда с открытым исходным кодом. Вмещает в себя SDK и сам runtime (точнее kvm, kpm, kre).kvm (K Version Manager) — менеджер версия платформы K. Практически — консольная команда для манипулирования версиями рантайма (инсталлировать, удалить, поменять версию по умолчанию).kre (K Runtime Environment, реже Engine) — часть, что отвечает за компиляцию, SDK, все что нужно для того чтобы запустить ASP.NET vNext приложение. В принципе под конкретное приложение идет конкретная версия kre, более того вы можете запаковать вашу собственную версию. Для вашего приложения kre — это просто еще один из nuget пакетов.kpm (K Package Manager) — менеджер пакетов. Манипулирует дополнительными пакетами, что нужны для приложения.k (консольная команда) — входная точка для работы с платформой. Основная консольная команда для компиляции, запуска приложения.
Для понимания как эти команды используются на практике, рассмотрим следующий сценарий:
@powershell -NoProfile -ExecutionPolicy unrestricted -Command «iex ((new-object net.webclient).DownloadString ('https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.ps1'))»
kvm upgrade
git clone https://github.com/aspnet/Home.git
cd Home\samples\HelloWeb
kpm restore
k web Это фактически все что нужно сделать для установки новой версии платформы и запуска простого приложения. После выполнения последней команды (k web) у вас на http://localhost:5001/ будет висеть элементарный сайт. Уйдет на выполнения команд меньше минуты.Попробовать больше На данный момент выпущены ASP.NET vNext CTP 4 и Visual Studio 14 CTP 4 (Community Technology Preview — 4 версия). Похоже, что это последняя альфа-версия и дальше продукт переходит в бету. Чтобы попробовать как работают новые технологии и оценить другие новинки можно скачать Visual Studio »14» CTP 4(но никаких гарантий что все заработает или же что не сломаются другие продукты нет) или же запустить на готовой виртуальной машине в Azure.