Microsoft — мировой лидер в области ПО и ИТ-услуг
492,56
рейтинг
7 июля 2015 в 11:16

Разработка → Готовим ASP.NET5, выпуск №1 – поговорим про статический контент

Этой статьей я открываю авторскую колонку про технологии, секреты, советы и лучшие практики новой версии ASP.NET5. Платформа .NET стремительно движется к кроссплатформенности и ее веб-часть – ASP.NET – в том числе. Вы уже слышали и можете найти массу информации в сети и в том числе на Хабре о том, что .NET становится opensource, о выпуске новых версий и официальной поддержке .NET на OSX, Linux. Вместе с этими анонсами и ASP.NET5 становится доступным на большем числе платформ для большего круга разработчиков.


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

Тема первого выпуска – работа со статическими файлами в ASP.NET5 – задача насколько тривиальная, настолько же и важная.

aspnetcolumngithubСовет! Вы можете попробовать все самостоятельно или загрузив исходный код из GitHub https://github.com/vyunev/aspnetcolumn1.

Новый подход


В ASP.NET5 подход к работе со статическими файлами сильно изменился, сразу по нескольким направлениям. Начнем с того, что в проекте в Visual Studio и при работе с проектами в других редакторах для статического контента предлагается отдельная папка – wwwroot (Рис. 1). По сути, содержимое wwwroot теперь отображает файловое представление сайта на веб-сервере.

image
Рис.1 – Структура проекта ASP.NET5 (beta5)


Использование отдельной папки для статического контента позволяет упростить многие задачи, включая работу с системами контроля версий, кэширования контента на CDN, задач минификации и упаковки файлов, конфигурирования обработки запросов веб-сервером.

Кроме того, введение wwwroot позволяет сделать работу сайта безопаснее, так как запросы к файлам на сайте теперь могут быть обращены только к содержимому wwwroot, а внешние конфигурационные или другие файлы, лежащие вне этой папки недоступны для запроса.

При желании, разработчики могут изменить имя этой папки с помощью параметра конфигурации webroot в project.json (Рис. 2).

image
Рис.2 – Изменение имени папки для статического контента через файл конфигурации


Совет! Для переименования папки через Visual Studio, лучшие всего, первым шагом выполнить переименование в Solution Explorer и только потом изменить конфигурационный файл. Иначе, умная Visual Studio создаст новую папку самостоятельно.

Другой важный параметр конфигурации — это включение пакета Microsoft.AspNet.StaticFiles в список зависимостей проекта ASP.NET, этот пакет позволяет конвейеру платформы обрабатывать статический контент (Рис. 3).

image
Рис.3 – Включение пакета в список зависимостей проекта ASP.NET

После включения пакета в список зависимостей требуется добавить обработку в конвейер обработки запросов ASP.NET. Подобная конфигурация выполняется в методе Configure специального служебного класса Startup, который по умолчанию располагается в файле Startup.cs (Рис. 4).

image
Рис.4 – Включение обработки статических файлов


После указанной конфигурации весь статический контент, запрошенный у сайта будет отдаваться из определенной конфигурацией папки.

Расширение функционала


В ASP.NET5 каждую часть платформы можно переопределить, дополнить или заменить. Мы можем определить свой собственный обработчик статических файлов или дополнить существующий, указав новые правила. Например, если мы хотим добавить возможность возвращать *.json файлы как статические, нам достаточно определить следующий провайдер контента:

Листинг 1. – Определение провайдера типа контента
image

Теперь мы можем использовать новый тип контента для того, чтобы расширить существующий механизм обработки статических файлов (Листинг 2).

Листинг 2. – Использование провайдера типа контента
image

При определении работы конвейера обработки запросов для статических файлов можно указать еще несколько параметров. Для этого у StaticFileOptions есть набор свойств. Перечислю некоторые из них:

  • ServeUnknownFileTypes – позволяет указать конвейеру обрабатывать все неизвестные типы файлов при запросе, по умолчанию установлено значение false;
  • DefaultContentType – позволяет указать тип контента, который будет присваиваться по умолчанию запросом к неопределенным типам файлов. По умолчанию установлено в none.

На этом можно завершить введение в тему обработки статического контента на базе ASP.NET5.

Свежие новости


Выпущено обновление ASP.NET5 Beta5 с множеством изменений, улучшений и исправлений ошибок. Подробности обновления можно найти в этом блоге. Внимательно ознакомитесь со списком изменений, которые могут повлиять на предыдущий код при обновлении.

С выходом ASP.NET5 Beta5 обновился и набор инструментов ASP.NET 5 yeoman generators, который поддерживает кроссплатформенную разработку на ASP.NET и позволяет генерировать код (скаффолдинг) для проектов из командной строки в любой ОС. О самом проекте можно почитать тут.

Образ контейнера Docker с ASP.NET5 Beta5 опубликован на официальном Docker Hub.

Опубликованы доклады конференции DevCon 2015, в том числе по веб-разработке и теме ASP.NET.

Полезные ссылки


Самая свежая документация по ASP.NET5 расположена по адресу http://docs.asp.net/en/latest/.

Познакомьтесь с демонстрационным проектом PiDnx от Дэмиана Эдвардса, который показывает как запускать ASP.NET5 на Raspberry Pi 2 на базе Windows 10 IoT Core.

Изучите основы ASP.NET5 с новым бесплатным курсом виртуальной академии Microsoft.

Авторам


Друзья, если вам интересно поддержать колонку своим собственным материалом, то прошу написать мне на vyunev@microsoft.com для того чтобы обсудить все детали. Мы разыскиваем авторов, которые могут интересно рассказать про ASP.NET и другие темы.

Об авторе


Владимир Юнев
Эксперт по стратегическим технологиям, Microsoft, Россия

Владимир Юнев — сертифицированный разработчик приложений с более чем 12-летним стажем работы. Работает в департаменте стратегических технологий Майкрософт Россия, отвечая за темы использования облачных и веб-технологий Microsoft в веб-приложениях, сервисах и мобильных клиентах. Постоянный участник и организатор множества российских ИТ-конференций, автор книги по разработке веб-приложений на платформе ASP.NET MVC. В сообществе разработчиков известен под ником XaocCPS.

Буду рад пообщаться с вами: Twitter — https://twitter.com/XaocCPS и Facebook — https://www.facebook.com/yunev.
Пробуете ли вы ASP.NET5?

Проголосовало 320 человек. Воздержалось 56 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Автор: @XaocCPS
Microsoft
рейтинг 492,56
Microsoft — мировой лидер в области ПО и ИТ-услуг

Комментарии (11)

  • +1
    А я правильно понимаю, что это, на самом деле, функциональность, которая раньше была в OWIN middleware Microsoft.Owin.StaticFiles? Очень уж поведение похоже.
    • 0
      конечно, новый ASP.NET5 взял лучшее от OWIN
      • 0
        А может быть, вы знаете хороший пост на тему «у меня есть OWIN-приложение, я хочу запустить его на ASP.NET 5»?

        (не теряя возможность запускаться на произвольных хостах)
        • 0
          классная тема! :-) я либо напишу сам, либо приглашаю сделать такой пост всех желающих
          готовой статьи пока не видел
        • +1
          Рекомендую посмотреть статью «ASP.NET vNext Moving Parts: OWIN».
  • 0
    Предлагаю вариант статьи — таргетирование для А/В тестов — вывод разных вариантов страниц для разных пользователей — по платформам, странам, галочке «бета тестер» в настройках аккаунта
    • 0
      Отличная тема, принимается, спасибо! Есть возможность написать? Если нет, рассмотрю как тему следующих выпусков
      • 0
        Мне после 4го MVC (после твоего совета, если помнишь:) ) к пятому сложно подойти, все совсем по другому, я вот ищу в принципе вводную, считай с нуля хочу.
        • 0
          Принимается. Уже готовим ряд материалов! :-)
          • 0
            Просто с последней бетой народ говорил что опять все поменялось, непонятно, что поменяется еще до релиза.
            • 0
              поменялось не так много, просто даже простые изменения в названии сборок ломают проекты и требуют ручного переименования, у многих методов меняются определения и так далее.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка