ASP.NET 5

Введение в ASP.NET 5 Preview

Дэниел Рот

В этой статье обсуждаются предварительные версии ASP.NET 5 и Visual Studio 2015. Любая изложенная здесь информация может быть изменена.

Продукты и технологии:

ASP.NET 5, Visual Studio 2015 Preview

В статье рассматриваются:

  • основы исполняющей среды ASP.NET 5;
  • работа с Entity Framework;
  • функциональность командной строки;
  • обновления Visual Studio для ASP.NET 5.

ASP.NET поставлялась как часть Microsoft .NET Framework 1.0, выпущенной в 2002 году наряду с Visual Studio 2002. Это был результат эволюции Active Server Pages (ASP), который принес нам объектно-ориентированное проектирование, .NET-библиотеки базовых классов (Base Class Libraries, BCL), более высокую производительность и многое другое. ASP.NET была разработана для того, чтобы разработчикам, привыкшим писать настольные приложения, было легче создавать веб-приложения на основе ASP.NET Web Forms. По мере развития Web в ASP.NET добавлялись новые инфраструктуры: MVC в 2008 году, Web Pages в 2010 году, а также Web API и SignalR в 2012 году. Каждая из этих новых инфраструктур опиралась на базу от ASP.NET 1.0.

В случае пятой версии ASP.NET подвергается переосмыслению по аналогии с тем, что случилось с ASP в 2002 году. Этот процесс дает многих новых средств.

  • Полная поддержка сосуществования разных версий (side-by-side support) Теперь приложения ASP.NET 5 можно устанавливать на компьютере, не влияя на другие установленные приложения.
  • Кросс-платформенная поддержка ASP.NET 5 выполняется и поддерживается в Windows, Mac и Linux.
  • Готовность к работе в облаке Такие средства, как диагностика, состояние сеанса, кеш и конфигурация рассчитаны на работу как локально, так и в облаке.
  • Ускорение разработки Этап сборки удален; просто сохраните файлы исходного кода и обновите браузер — компиляция будет выполнена автоматически.
  • MVC, Web Pages и Web API Все эти технологии объединены, что упрощает ряд концепций.
  • Гибкий хостинг Теперь вы можете разместить свое приложение ASP.NET 5 целиком в IIS или в собственном процессе.

Приступаем к работе с ASP.NET 5 Preview

В этой статье я дам обзор новшеств, введенных группой разработки ASP.NET (членом которой я являюсь) в ASP.NET 5 и Visual Studio 2015 Preview. С общими вопросами по созданию и выполнению приложений ASP.NET 5 обращайтесь на asp.net/vNext, где вы найдете пошаговые руководства и дополнительную документацию. Кроме того, мы регулярно публикуем обновления в blogs.msdn.com/b/webdev. Чтобы начать работу, скачайте и установите Visual Studio 2015 Preview.

Обзор исполняющей среды ASP.NET 5

ASP.NET 5 была полностью переделана для поддержки создания современных веб-приложений и сервисов. Это кросс-платформенная инфраструктура с открытым исходным кодом, способная работать как локально, так и в облаке. В настоящее время ASP.NET 5 находится на стадии Preview и активно разрабатывается на GitHub (github.com/aspnet). Я дам обзор нововведений в ASP.NET 5 Preview и подскажу, где можно узнать больше.

Гибкая, кросс-платформенная исполняющая среда В основе ASP.NET 5 лежит новый гибкий хост исполняющих сред. Он обеспечивает гибкость в выполнении вашего приложения в одной из трех исполняющих сред.

  1. Microsoft .NET Framework Вы можете выполнять свои приложения ASP.NET 5 в существующей .NET Framework. Это дает вам высший уровень совместимости для существующих двоичных файлов.
  2. .NET Core Переработанная версия .NET Framework, поставляемая как набор NuGet-пакетов, которые вы можете включать в свое приложение. Благодаря .NET Core вы получаете поддержку истинного сосуществования разных версий и свободу в использовании новейших средств .NET в имеющейся у вас инфраструктуре. Заметьте, что пока не все API доступны в .NET Core, и существующие двоичные файлы, как правило, придется перекомпилировать для выполнения в .NET Core.
  3. Mono Mono CLR позволяет разрабатывать и выполнять приложения ASP.NET 5 на устройствах Mac или Linux. Подробнее см. публикацию в блоге «Develop ASP.NET vNext Applications on a Mac» bit.ly/1AdChNZ.

ASP.NET 5 независимо от выбранной вами CLR использует общую инфраструктуру хостинга CLR и предоставляет приложению разнообразные сервисы. Эта инфраструктура называется K Runtime Environment (KRE). Хотя буква «K» в KRE весьма загадочна (в память Katana Project? Или это аббревиатура от Krazy или Kool?), KRE обеспечивает все, что нужно для хостинга и выполнения вашего приложения.

Новый HTTP-конвейер В ASP.NET 5 введен новый модульный конвейер HTTP-запросов, который можно размещать на любом выбранном вами сервере. Вы можете поместить свои приложения ASP.NET 5 в IIS, на любой сервер на основе Open Web Interface for .NET (OWIN) или в собственный процесс. Поскольку вам нужно точно подобрать, какое именно промежуточное ПО будет работать в конвейере для вашего приложения, вы можете отобрать минимально необходимую функциональность и использовать преимущества производительности чистого сервера (bare-metal performance). ASP.NET 5 включает промежуточное ПО для защиты, маршрутизации запросов, диагностики и поддержку пользовательского промежуточного ПО вашей разработки. Например, вот простая реализация промежуточного ПО для обработки заголовка X-HTTP-Method-Override:

app.Use((context, next) =>
{
  var value = context.Request.Headers["X-HTTP-Method-Override"];
  if (!string.IsNullOrEmpty(value))
  {
    context.Request.Method = value;
  }
  return next();
});

ASP.NET 5 использует модель HTTP-конвейера, во многих отношениях похожую на OWIN-модель, введенную в Project Katana, но с несколькими значительными улучшениями. Как и Katana, ASP.NET 5 поддерживает OWIN, но упрощает разработку, включая облегченную и простую в использовании абстракцию HttpContext.

Для этого есть пакет Диспетчеры пакетов изменили то, как разработчики воспринимают установку, обновление и управление зависимостями. В ASP.NET 5 все ваши зависимости представлены в виде пакетов. NuGet-пакеты являются единицами ссылок. ASP.NET 5 упрощает создание, установку и использование пакетов из их каналов передачи, а также работу с пакетами от сообщества, применяя диспетчер пакетов узла (node package manager, NPM) и Bower. В ASP.NET 5 введен простой формат JSON (project.json) для управления зависимостями NuGet-пакетов и для обеспечения кросс-платформенной инфраструктуры сборки. Пример файла project.json показан на рис. 1 (более подробное объяснение каждого из поддерживаемых свойств см. в GitHub по ссылке bit.ly/1AIOhK3).

Рис. 1. Пример файла project.json

{
  "webroot": "wwwroot",
  "version": "1.0.0-*",
  "exclude": [
    "wwwroot"
  ],
  "packExclude": [
    "**.kproj",
    "**.user",
    "**.vspscc"
  ],
  "dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta1",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta1"
  },
  "frameworks" : {
    "aspnet50" : { },
    "aspnetcore50" : { }
  }
}

Лучшее из C# Компиляция этапов разработки и выполнения для приложений ASP.NET 5 обрабатывается с применением управляемой .NET Compiler Platform (кодовое название «Roslyn»). То есть вы получаете преимущества новейших языковых средств C#, в то же время используя компиляцию в памяти для предотвращения лишних операций дискового ввода-вывода. Проекты ASP.NET 5 основаны на новой системе проектов, которая динамически компилирует приложение по мере его кодирования, поэтому вы можете избежать прерывания из-за специфического этапа сборки. Это дает вам мощь .NET и C# со всей гибкостью интерпретируемого языка.

Изначальная поддержка встраивания зависимостей Все приложения ASP.NET 5 имеют доступ к общему сервису встраивания зависимостей (dependency injection, DI), который помогает упростить композицию и тестирование. Все инфраструктуры ASP.NET, опирающиеся на ASP.NET 5 (MVC, Web API, SignalR и Identity), используют этот общий сервис DI. Хотя ASP.NET 5 поставляется с минималистским контейнером Inversion of Control (IoC) для начального запуска системы, вы можете легко заменить изначальный контейнер IoC любым другим.

Знакомые веб-инфраструктуры ASP.NET 5 включает инфраструктуры для создания веб-приложений и сервисов, такие как MVC, Web API, Web Pages (появится в будущем выпуске), SignalR и Identity. Каждая из них портирована для работы в новом конвейере HTTP-запросов и поддерживает выполнение в .NET Framework, .NET Core или в кросс-платформенной исполняющей среде.

Сегодня существующие реализации MVC, Web API и Web Pages совместно используют многие концепции и дублируют абстракции, но имеют мало общего в фактической реализации. В процессе переноса этих инфраструктур в ASP.NET 5 Microsoft решила по-новому взглянуть на объединение этих инфраструктур в единый унифицированный веб-стек. ASP.NET MVC 6 использует лучшее от MVC, Web API и Web Pages и объединяет это в единую инфраструктуру для создания Web UI и Web API. Это означает, что из единого контроллера вы можете легко как выполнять рендеринг представления, так и возвращать отформатированные данные на основе согласования контента (content negotiation).

Помимо унификации, в ASP.NET MVC 6 введен целый набор новых средств:

  • встроенная поддержка DI;
  • возможность создания контроллеров из любого класса — базовый класс больше не требуется;
  • диспетчеризация запросов на основе операции (action-based request dispatching);
  • View Components — простая замена дочерних операций;
  • усовершенствования в маршрутизации, в том числе упрощенная маршрутизация по атрибутам (attribute routing);
  • асинхронные представления с точками сброса (flush points);
  • возможность встраивания серверов и вспомогательных конструкций в представления с помощью @inject;
  • наследование ViewStart;
  • поддержка TagHelper.

Более подробные сведения и примеры вы найдете на github.com/aspnet/mvc.

Web Forms недоступна в ASP.NET 5, но по-прежнему полностью поддерживается в .NET Framework. В предстоящей версии .NET Framework предполагается включение ряда важных новых возможностей в Web Forms, в том числе поддержки HTTP 2.0, асинхронного связывания моделей и провайдера CodeDom на основе Roslyn. Мы также работаем над разнообразными средствами, напоминающими Web Forms в MVC 6, в частности над TagHelper и другими улучшениями Razor.

Entity Framework

Данные являются важной частью многих приложений, и Entity Framework (EF) — популярная среди ASP.NET-разработчиков инфраструктура для доступа данных. Хотя EF7 не специфична для ASP.NET, эта новая версия EF играет ключевую роль в ASP.NET 5.

EF7 поддерживает новые платформы EF широко используется в клиентских и серверных приложениях, ориентированных на полнофункциональную .NET Framework. Основной акцент в EF7 — предоставить возможность работы с EF на остальных платформах, где распространена .NET-разработка. К таковым относятся приложения ASP.NET 5, Windows Store и Windows Phone, а также основанные на .NET приложения для Mac и Linux.

В случае приложений Windows Phone и Windows Store изначальная цель — предоставить локальный доступ к данным с помощью EF. SQLite — самая распространенная база данных на устройствах, и она будет основным хранилищем локальных данных на устройствах с EF7. Однако будет доступна полнофункциональная модель провайдеров, поэтому другие хранилища данных тоже будут поддерживаться.

EF7 поддерживает новые хранилища данных Хотя ряд частей EF со всей очевидностью связан с реляционными хранилищами данных, многое из предоставляемой EF функциональности также применимо ко многим нереляционным хранилищам данных. К примерам такой функциональности относятся отслеживание изменений, LINQ и единица работы. EF7 позволит работать с провайдерами, ориентированными на нереляционные хранилища данных, такими как Microsoft Azure Table Storage.

Мы специально не пытаемся создать уровень абстракции, который скрывает тип хранилища данных, на который вы ориентируетесь. Общие шаблоны/компоненты, применимые к большинству хранилищ, будут обрабатываться базовой инфраструктурой. Тогда как все, что специфично для конкретных типов хранилищ, будет доступно в виде расширений, специфичных для провайдеров. Например, концепция средства формирования модели (model builder), которое позволяет вам конфигурировать свою модель, станет частью базовой инфраструктуры. Но возможность конфигурирования таких вещей, как каскадное удаление по ограничению внешнего ключа, будет включаться в виде расширений в провайдер реляционной базы данных.

EF7 компактна и расширяема EF7 будет облегченной и расширяемой версией, в которой на первый план выведены некоторые широко используемые средства. Кроме того, мы включим некоторые часто запрашиваемые средства, которые было бы трудно реализовать на кодовой базе EF6, но в EF7 они могут быть введены с самого начала.

Группа сохранит шаблоны и концепции, к которым вы привыкли в EF, за исключением тех, где есть веские причины для изменений. Вы увидите тот же API на основе DbContext/DbSet, но он будет создан поверх компонентов — строительных блоков, которые легко заменить или расширить при необходимости; этот же шаблон применялся для некоторых изолированных компонентов, добавленных в недавних выпусках EF.

Подробнее о EF7 Более детальные сведения о EF7 см. на странице GitHub «What Is EF7 All About» по ссылке aka.ms/AboutEF7. Эта страница включает проектировочную информацию, ссылки на публикации в блогах и инструкции по работе с предварительными версиями EF7.

Средства командной строки в ASP.NET

Одним из основополагающих принципов ASP.NET 5 была возможность работы из командной строки. То есть почти все операции, которые вам нужно выполнять с приложением ASP.NET 5, можно осуществлять из командной строки. Основная причина этого заключалась в том, чтобы вы могли работать с ASP.NET 5 без Visual Studio, например на компьютерах под управлением Mac или Linux.

KVM Первая утилита, которая понадобится вам для того, чтобы получить полнофункциональную командную строку для ASP.NET 5, — это K Version Manager (KVM). Утилита командной строки KVM может скачивать новые версии KRE и позволяет переключаться между ними. KRE содержит другие утилиты командной строки, которые вы, возможно, будете использовать. Как реализована KVM и как получить ее, зависит от конкретной ОС. Вы можете скачать и установить KVM для своей платформы, выполнив соответствующую команду из github.com/aspnet/Home.

Получив KVM, вы должны иметь возможность открыть окно командной строки и выполнить команду kvm. Если вы введете kvm list, то увидите список всех версий KRE на своем компьютере (рис. 2).

Команда kvm list позволяет получить список версий KRE на вашем компьютере
Рис. 2. Команда kvm list позволяет получить список версий KRE на вашем компьютере

Если в списке нет элементов, значит, в вашем профиле пользователя нет никаких версий KRE. Чтобы исправить это, вы можете выполнить команду kvm upgrade. Эта команда определит самую новую доступную версию KRE, скачает ее и модифицирует переменную окружения PATH так, чтобы вы могли использовать другие утилиты командной строки в самой KRE.

Для установки конкретной версии без ее задания как версии по умолчанию используйте команду kvm install <version/latest>. Ключ –r позволяет указать, какая версия KRE вам нужна — для .NET Core или .NET Framework, а ключи –x86 и –amd64 — скачать 32- или 64-разрядную KRE. Ключи –r и разрядности можно предоставлять либо для установки, либо для обновления.

После вызова kvm upgrade вы сможете использовать команды K и KPM. K позволяет запускать приложения, а KPM — управлять пакетами.

Как работает KVM? По сути, KVM — это просто удобный способ для манипуляций над переменной окружения PATH. Все, что делает команда KVM use <версия>, — изменяет вашу PATH на папку bin той версии KRE, которую вы указали в своей PATH. По умолчанию KRE устанавливается копированием и извлечением ZIP-файла KRE в папку %USERPROFILE%\.kre\packages, поэтому, когда вы набираете KVM use 1.0.0-beta1, KVM удостоверится, что папка %USERPROFILE%\.kre\packages\KRE-CLR-x86.1.0.0-beta1\bin имеется в вашей переменной PATH.

KPM Следующая утилита, которая наверняка понадобится вам, — KRE Package Manager (KPM). KPM выполняет две главные функции.

  1. Вы можете ввести kpm restore в папке с файлом project.json, чтобы скачать все пакеты, необходимые вашему приложению.
  2. Команда упаковки (kpm pack) принимает ваше приложение и генерирует самодостаточный исполняемый образ вашего приложения. Здесь под образом имеется в виду структура папок, которая должна быть скопирована на сервер и выполнена. Он включает все пакеты, необходимые вашему приложению, а также (не обязательно) KRE, в которой вы хотите выполнять приложение.

Команда restore может быть выполнена в папке, содержащей файл project.json. Она проанализирует файл и, используя NuGet.config, соединится с каналом NuGet и попытается скачать все пакеты, нужные вашему приложению. По умолчанию эти пакеты будут установлены в %USERPROFILE%\.kpm\packages, поэтому на компьютере разработчика требуется лишь единственная копия любого пакета, даже если они задействованы в нескольких проектах.

При упаковке приложения командой kpm pack генерируется папка, содержащая все, что нужно этому приложению для выполнения, в том числе пакеты, файлы исходного кода и ваш веб-корень. Вы можете даже включить KRE, хотя по умолчанию предполагается, что KRE уже имеется на сервере.

Команда K Эта команда запускает приложение ASP.NET 5 из командной строки. Команда K включена в KRE, как и в KPM, и является входной точкой для запуска приложения поверх KRE.

Основной способ использования команды K — запуск одной из команд в вашем файле command project.json. Команды указываются по имени в файле project.json под свойством commands. По умолчанию шаблон ASP.NET 5 Starter Web включает команду web в project.json, который служит хостом вашего приложения и прослушивает порт 5000. Чтобы выполнить эту команду, просто введите k web.

Обновления Visual Studio для ASP.NET 5

Одной из начальных целей ASP.NET 5 было обеспечение удобства группам, члены которых используют разные инструменты. Например, часть группы применяет Windows и Visual Studio и работает с другими, которые используют Sublime Text на Mac (средства кросс-платформенной .NET-разработки см. на omnisharp.net). Для достижения этой цели нам пришлось сделать шаг назад и пересмотреть поддержку Visual Studio. В предыдущих версиях Visual Studio система проектов предполагала, что большая часть разработки будет проходить в Visual Studio. Но Visual Studio не слишком хорошо работает, когда в создании файлов или модификации проекта участвуют другие инструменты. Так, в файле .csproj Visual Studio поддерживал список файлов, из которых состоит проект. Если вы использовали инструмент, который создает новый файл для вашего проекта, вам приходилось редактировать файл .csproj для включения созданного файла.

Создавая новый проект ASP.NET 5 в Visual Studio 2015, вы получаете новые средства. Вы можете по-прежнему разрабатывать, отлаживать и запускать свой проект, как обычно, но в дополнение к стандартным средствам, известным вам в проектах ASP.NET, вы получаете некоторые новые средства, уникальные для ASP.NET 5. Теперь у вас есть свобода в разработке с использованием выбранной вами платформы и инструментария. Я рассмотрю некоторые из этих средств.

Поддержка для всех файлов в папке В ASP.NET 5 все файлы в каталоге проекта автоматически включаются в проект. Вы можете исключать файлы из компиляции или публикации в файле project.json. Подробнее о том, как исключить файлы в project.json, см. страницу GitHub (bit.ly/1AIOhK3). После загрузки проекта Visual Studio запускает средство наблюдения за файлами (file watcher) и обновляет окно Solution Explorer для отражения изменений. Поскольку Solution Explorer всегда следит за файлами в каталоге проекта, мы сменили место сохранения генерируемых файлов. Вместо хранения таких файлов в каталоге проекта (в папках bin\ и obj\) теперь они помещаются по умолчанию в папку artifacts наряду с файлом решения.

Просто внесите изменения, сохраните и обновите браузер В существующих приложениях ASP.NET, когда вы изменяете логику для серверной стороны (например, код MVC-контроллера или фильтр), вы должны заново скомпилировать и развернуть приложение, чтобы изменения отразились в браузере. Microsoft хотела сделать рабочий процесс веб-разработки максимально простым и гибким, как при работе с интерпретируемыми платформами (вроде Node.js или Ruby), в тоже время сохранив возможность использования мощи .NET. В проектах ASP.NET 5, когда вы редактируете и сохраняете свой код на C#, средство наблюдения за файлами обнаруживает изменение и перезапускает приложение. Приложение перекомпилируется в памяти, поэтому вы можете видеть изменения в браузере почти в режиме реального времени. Заметьте, что этот рабочий процесс поддерживается, только когда вы не ведете отладку, — чтобы избежать прерывания сеанса отладки.

Обновленная поддержка NuGet-пакетов В ASP.NET 5 все ваши зависимости находятся в NuGet-пакетах. Зависимости пакетов указываются в project.json, причем перечисляются только прямые ссылки. Исполняющая среда разрешает зависимости пакетов за вас, и вы можете просматривать и вести поиск по всему графу зависимостей пакетов в Solution Explorer.

Чтобы установить NuGet-пакет, просто добавьте его в свой файл project.json. Как только вы сохраняете файл project.json, инициируется команда package restore, и любые изменения в ваших зависимостях отражаются узлом References в Solution Explorer. Вы можете видеть результат команды package restore и любые ошибки, которые могли произойти, в журнале диспетчера пакетов в окне Output. Вы даже получаете поддержку IntelliSense для пакетов, установленных локально на компьютере с Visual Studio, и пакетов, имеющихся в общедоступном канале NuGet, как показано на рис. 3.

IntelliSense для зависимостей NuGet-пакетов в project.json
Рис. 3. IntelliSense для зависимостей NuGet-пакетов в project.json

В существующих проектах ASP.NET при установке NuGet-пакета в проект копия этого пакета (и все его зависимости) помещаются в папку packages. В ASP.NET 5 применяется кеш, поэтому NuGet-пакеты являются общими между проектами для каждого пользователя. Когда в ASP.NET 5 выполняется команда package restore, любые пакеты, уже установленные в кеше, просто используются повторно. Вы можете просматривать и модифицировать кеш пакетов в своем профиле в папке .kpm.

По умолчанию проекты ASP.NET 5 компилируются в памяти исполняющей средой, и никакие артефакты на диске не сохраняются. Однако вы можете легко разрешить компиляцию NuGet-пакетов для своих библиотек классов ASP.NET 5, установив флажок Produce all outputs on build на вкладке Build страницы Properties для проекта. После выбора этого параметра вы найдете скомпилированный NuGet-пакет в папке artifacts решения.

Компиляция и Combined IntelliSense для нескольких целевых инфраструктур В ASP.NET 5 целевые инфраструктуры перечисляются в project.json. Ваш проект компилируется для каждой из перечисленных целевых инфраструктур. Это намного ускоряет обнаружение проблем, потому что вам не приходится явно переключаться на нужную целевую инфраструктуру и вы можете выполнять кросс-компиляцию для нескольких целевых инфраструктур из одного проекта.

Мы также обновили IntelliSense для проектов ASP.NET 5, введя Combined IntelliSense. С помощью Combined Intellisense, когда средство автоматического завершение предлагает разные варианты применительно к одной или более инфраструктурам, вы увидите расширенную подсказку, поясняющую различия. Эта подсказка демонстрируется на рис. 4 для класса StringComparison.

Подсказка, показывающая Combined IntelliSense для нескольких целевых инфраструктур
Рис. 4. Подсказка, показывающая Combined IntelliSense для нескольких целевых инфраструктур

Как видно на рис. 4, значение InvariantCulture недоступно для перечисления StringComparison при использовании ASP.NET Core 5.0.

Публикация в Web В Visual Studio 2015 Microsoft работает над новым процессом публикации проектов ASP.NET 5. В выпуске Preview соответствующий функционал ASP.NET 5 поддерживает публикацию в Azure Websites и в файловой системе (например, в папке local/network). При публикации в Azure Websites вы можете выбрать желательную конфигурацию сборки и версию KRE. В последующих выпусках эта поддержка будет расширена на больший спектр целей.

Переход на ASP.NET 5

Перевод существующего веб-приложения на ASP.NET 5 включает как создание нового проекта ASP.NET 5 для существующего приложения, так и последующий перенос вашего кода и зависимостей для выполнения в новой инфраструктуре. Создать новый проект ASP.NET 5 для приложения сравнительно легко. Прежде всего добавьте файл project.json в свою папку project. Изначально файл project.json должен включать только пустой JSON-объект (например, {}). Затем выберите File | Open Project, чтобы открыть файл project.json в Visual Studio 2015 Preview. После этого Visual Studio создаст проект ASP.NET 5 с файлом .kproj и автоматически включит в проект все файлы и каталоги, которые она найдет наряду с файлом project.json. Вы должны увидеть свои файлы проекта в новом проекте ASP.NET 5 в Solution Explorer. Вот вы и создали проект ASP.NET 5 для существующего веб-приложения!

Перенос вашего кода и зависимостей так, чтобы новый проект ASP.NET 5 компилировался и выполнялся корректно, — процесс более сложный. Вам нужно обновить свой project.json зависимостями пакетов верхнего уровня, ссылками на сборки инфраструктуры и ссылками проекта. Вы должны так перенести свой код, чтобы использовать новые абстракции HTTP, новое промежуточное ПО и новые версии веб-инфраструктур ASP.NET. Вам понадобится перевод кода под новую инфраструктуру для обработки таких задач, как конфигурирование, протоколирование и DI. Перенос вашего приложения для выполнения в .NET Core требует дополнительных изменений под платформу и учета ее ограничений. Полностью описать это в данной статье не удастся, но мы работаем над тем, чтобы предоставить полное руководство по миграции в будущей статье. Хотя усилия по переносу в ASP.NET 5 могут оказаться значительными, Microsoft считает, что преимущества кросс-платформенной, готовой к работе в облаке инфраструктуры с открытым исходным кодом, отслеживаемой сообществом, стоят этих усилий.

Где узнать больше?

В этой статье я исследовал ASP.NET 5 от высокоуровневых концепций до низкоуровневых компонентов. Но узнать об этом продукты можно гораздо больше! К счастью, есть масса ресурсов, которые помогут вам в этом.

На сайте ASP.NET имеется специальный раздел по ASP.NET 5 на странице asp.net/vnext. Эта страница постоянно обновляется новостями по выпускаемым средствам, документации, учебным пособиям ресурсам сообщества.

ASP.NET vNext Community Standup — открытая еженедельная онлайновая встреча с группой ASP.NET. Она проводится каждый вторник; ее время варьируется между утром и полднем по тихоокеанскому времени, и в ней могут принимать участие разработчики со всего мира. Присоединяйтесь к нам, чтобы узнать о ближайших планах, задать вопросы и сообщить свои предложения и отзывы.

Вы можете получить помощь от разработчиков, сотрудничающих с нами, и членов группы ASP.NET на форуме ASP.NET vNext по ссылке bit.ly/1xOuQx9. Кроме того, на JabbR.net есть тематический чат по разработке ASP.NET 5/vNext bit.ly/1HDAGFX.

Поскольку ASP.NET 5 разрабатывается как проект с открытым исходным кодом, вы можете участвовать в процессе разработки. Репозитарии исходного кода на github.com/aspnet постоянно обновляются группой, и это не зеркала внутреннего репозитария. То есть вы можете видеть операции передачи кода в эти репозитарии по мере того, как они происходят, и получать «снимок» кода в любой момент. Репозитарии включают исходный код для инфраструктур (например, KRuntime, Razor и MVC), а также для функциональных тестов и примеров проектов. Мы призываем вас к обратной связи с нами (как по ошибкам в коде, так и предложения по функционалу), открывая или комментируя формы по проблемам в репозитариях GitHub.

Сейчас наступили очень интересные времена в веб-разработке на веб-платформе Microsoft! Мы поощряем участие всех заинтересованных разработчиков на ранних этапах, чтобы вы были готовы к использованию преимуществ новых средств и держали с нами обратную связь в процессе разработки.

В заключение хочу поблагодарить Гленна Кондрона (Glenn Condron), Джону Гэллоуэя (Jon Galloway), Саида Ибрагима Хашими (Sayed Ibrahim Hashimi), Скотта Хантера (Scott Hunter) и Роуэна Миллера (Rowan Miller) за их неоценимую помощь, выходящую далеко за рамки обычного рецензирования, и за реальный вклад в написание значительных частей этой статьи.


Дэниел Рот (Daniel Roth) — старший менеджер программ в группе ASP.NET, которая в настоящее время работает над ASP.NET 5. В сферу его интересов входят .NET-разработка и создание простых в использовании инфраструктур для корпоративных клиентов.

Выражаю благодарность за рецензирование статьи экспертам Microsoft Гленну Кондрону (Glenn Condron), Дэвиду Фаулеру (David Fowler), Джону Гэллоуэю (Jon Galloway), Саиду Ибрагиму Хашими (Sayed Ibrahim Hashimi), Скотту Хантеру (Scott Hunter), Роуэну Миллеру (Rowan Miller) и Прабураджу Тиагараджу (Praburaj Thiagaraj).