Pull to refresh

ASP.NET vNext Ликбез

Reading time5 min
Views41K
Ожидаемый релиз платформы ASP.NET (vNext) один из наиболее насыщенных в плане новшеств. Но вместе со всеми новинками к нам приходит и огромное число новых спецификаций, компонентов и других особенностей. В то же время мир .NET эволюционирует с такой скоростью, что просто следить за всеми новинками web-разработки от Microsoft почти не возможно. Особенно если вы до сих пор пишете на технологиях 10-летней давности (ASP.NET Web Forms, .NET 2.0) или выходец не из .NET мира веб-разработки. Возможно именно сейчас один из тех моментов когда можно пропустить все версии предыдущих обновлений и, начав с чистого листа, попасть в новый поток развития платформы. Рассмотрим основные пункты для этого:
  • vNext
  • Roslyn
  • OWIN
  • Katana
  • K


ASP.NET vNext


ASP.NET vNext — это следующая версия платформы ASP.NET. Она еще находится в разработке, но та часть, что уже была представлена широкой публика показывает, что изменений в платформе огромное количество. Цель нового релиза — создать трендовый стек для .NET для построения современных облачно-ориентированных приложений.
Основные особенности:
  • Открытый исходный код,
  • Кроссплатформенность,
  • Полностью базируется на новом Roslyn компиляторе,
  • MVC, Web API, Web Pages объединены в один фреймворк — MVC 6,
  • Dependency Injection встроен внутрь фреймворка,
  • Отсутствие зависимости от веб сервера и платформы для хостинга,
  • Больше не зависит от супер-библиотеки System.Web


Кроме огромной работы по обновлению платформы изменился и сам подход как эти изменения представляются сообществу. Социальная составляющая релиза очень интересна и следить за платформой стало очень удобно. Кроме блогов и новостей в социальных сетях выпускаются открытые предварительные версии где можно отлично пощупать платформу. А так же появился интересный формат Community Standup — можно задать вопросы или услышать онлайн самих разработчиков новой платформы. Все это происходит в веселой и интересной форме и позволяет наблюдать за разработкой платформы «от первого лица», почти участвуя в этом. Стендапы проходят в Hangouts каждую неделю и потом выкладываются в YouTube.



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

Интересный момент в спецификации OWIN, что все взаимодействие между приложением и сервером через промежуточный слой сводится к единственной функции — делегату приложения.

using AppFunc = Func<IDictionary<string, object>, Task>;


Коллекция <string, object>, которую называют словарь окружения содержит параметры сервера, запрос и ответ. Она не может быть пустой и не может иметь значения null. Так же есть некоторые обязательные ключи, определённые спецификацией. Результатом обработки является объект типа Task, то есть инкапсуляция выполняемой задачи. Для каждого компонента на базе OWIN есть свой делегат приложения и во время выполнения сервер вызывает конвейер таких обработчиков. По скольку каждый делегат приложения возвращает Task то все компоненты в конвейере асинхронны.
Как было сказано выше OWIN — всего лишь спецификация, правила по которым должен работать промежуточный слой между сервером и приложением. Как же его реализовать практически или где взять уже реализованный?

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.
Tags:
Hubs:
+37
Comments15

Articles