Создание приложений ASP.NET Core в Visual Studio для Mac
Внимание
Visual Studio для Mac планируется выйти на пенсию 31 августа 2024 г. в соответствии с корпорацией Майкрософт Современная политика жизненного цикла. Хотя вы можете продолжать работать с Visual Studio для Mac, есть несколько других вариантов для разработчиков на Mac, таких как предварительная версия нового расширения комплекта разработки C# для VS Code.
Дополнительные сведения о поддержке временная шкала и альтернативах.
ASP.NET Core является основанной на открытом исходном коде кроссплатформенной платформой для создания современных облачных приложений, подключенных к Интернету, таких как веб-приложения и службы, приложения Интернета вещей и мобильные внутренние серверы. Приложения ASP.NET Core могут работать в средах выполнения .NET Core или .NET Framework. Он был разработан для предоставления оптимизированной платформы разработки для приложений, развернутых в облаке или локальной среде. Он состоит из модульных компонентов с минимальными служебными данными, что позволяет сохранить гибкость при построении решений. Приложения ASP.NET Core можно разрабатывать и запускать на различных платформах, включая Windows, Mac и Linux. Код ASP.NET Core открыт для общего доступа в GitHub.
В этом задании вы создадите и изучите приложение ASP.NET Core с помощью Visual Studio для Mac.
Задачи
- Создание веб-приложения ASP.NET Core
- Изучение модели размещения, конфигурации и ПО промежуточного слоя в ASP.NET Core
- Отладка веб-приложения ASP.NET Core
Необходимые компоненты
Целевая аудитория
Это задание предназначено для разработчиков, знакомых с C#, но большой опыт не требуется.
Задача 1. Создание нового приложения ASP.NET Core
Запустите Visual Studio для Mac.
Щелкните Файл > Новое решение.
Выберите категорию приложений .NET Core > и шаблон ASP.NET Core Web App Model-View-Controller (C#). Нажмите кнопку Далее.
Введите имя CoreLab и нажмите кнопку Создать для создания проекта. Выполнение может занять некоторое время.
Задача 2. Обзор решения
Шаблон по умолчанию создаст решение с одним проектом ASP.NET Core с именем CoreLab. Разверните узел проекта, чтобы увидеть его содержимое.
Этот проект следует парадигме контроллера представления модели (MVC), чтобы обеспечить четкое разделение обязанностей между данными (моделями), презентацией (представлениями) и функциями (контроллерами). Откройте файл HomeController.cs в папке Controllers.
Класс HomeController по соглашению обрабатывает все входящие запросы, которые начинаются с /Home. Метод Index обрабатывает запросы к корневому каталогу (как
http://site.com/Home
) и другие методы обрабатывают запросы к их именованному пути по соглашению, например About(), обрабатывающему запросы кhttp://site.com/Home/About
. Разумеется, здесь все можно настроить. Примечательно, что HomeController является контроллером по умолчанию в новом проекте, так что запросы к корню сайта (http://site.com
) будут проходить через Index() контроллера HomeController, как запросы кhttp://site.com/Home
илиhttp://site.com/Home/Index
.Кроме того, проект включает в себя папку Views, которая содержит другие папки, соответствующие каждому контроллеру (а также папку для общих представлений). Например, файл CSHTML (расширение HTML) представления для пути /Home/About будет находиться по пути Views/Home/About.cshtml. Откройте этот файл.
Этот файл CSHTML использует синтаксис Razor для отрисовки HTML на основе сочетания стандартных тегов и встроенного кода C#. См. подробнее в электронной документации.
Решение также содержит папку wwwroot, которая будет корнем веб-сайта. Вы можете поместить статическое содержимое сайта, такое как CSS, изображения и библиотеки JavaScript, непосредственно по путям, по которым оно должно находиться при развертывании сайта.
Имеются также различные файлы конфигурации, которые служат для управления проектом, его пакетами и приложением во время выполнения. Например, конфигурация приложения по умолчанию хранится в файле appsettings.json. Приведенный ниже файл appsettings.json является файлом appsettings.Development.json. Здесь можно переопределить некоторые или все параметры для той или иной среды. Visual Studio для Mac вкладывает файлы таким образом, используя ту же логику, что и Visual Studio для Windows, чтобы файлы, к которым часто требуется доступ, располагались первыми.
Задача 3. Понимание размещения приложения
В обозревателе решений откройте Program.cs. Это загрузчик, который запустит приложение.
Хотя здесь только две строки кода, они очень важны. Давайте рассмотрим их. Во-первых, создается новый WebHostBuilder. Приложениям ASP.NET Core требуется узел для выполнения. Узел должен реализовывать интерфейс IWebHost, который предоставляет доступ к коллекции функций и служб, и метод Start. Узел обычно создается с использованием экземпляра WebHostBuilder, который создает и возвращает экземпляр WebHost. WebHost ссылается на сервер, который будет обрабатывать запросы.
WebHostBuilder отвечает за создание узла, который будет выполнять начальную загрузку сервера для приложения, поэтому укажите сервер, который реализует
IServer
. По умолчанию это Kestrel, кроссплатформенный веб-сервер для ASP.NET Core на основе libuv, кроссплатформенной асинхронной библиотеки ввода-вывода.Затем устанавливается корень содержимого сервера. Он определяет, где искать файлы содержимого, например файлы представлений MVC. Корневой каталог содержимого по умолчанию — папка, из которой выполняется приложение.
Если приложение должно работать с веб-сервером IIS, метод UseIISIntegration должен вызываться в процессе создания узла. Он не настраивает сервер, как это делает метод UseKestrel. Чтобы использовать IIS с ASP.NET Core, необходимо указать UseKestrel и UseIISIntegration. Kestrel предназначен для запуска за прокси-сервером и не должен иметь прямой доступ в Интернет. UseIISIntegration задает IIS в качестве обратного прокси-сервера, но он применим только при запуске на компьютерах с IIS. Если вы развертываете приложение для Windows, оставьте его включенным. Это не помешает.
Рекомендуется отделять загрузку параметров от начальной загрузки приложения. Для этого вызывается UseStartup, чтобы указать, что класс Startup будет вызываться для загрузки параметров и других задач запуска, например вставка ПО промежуточного слоя, в конвейер HTTP. При необходимости можно использовать несколько вызовов UseStartup , ожидая, что каждая из них перезаписывает предыдущие параметры.
Последний шаг в создании IWebHost — вызов Build.
Хотя классы IWebHost необходимы для реализации неблокирующего метода Start, в проектах ASP.NET Core есть метод расширения Run, который служит оболочкой для Start с блокировкой кода, поэтому не нужно вручную запрещать методу немедленный выход.
Задача 4. Запуск и отладка приложения
В обозревателе решений щелкните правой кнопкой мыши узел проекта CoreLab и выберите Параметры.
Диалоговое окно Параметры проекта содержит все необходимое для настройки способа сборки и выполнения приложения. Выберите узел Запуск > Конфигурации > По умолчанию на левой панели.
Поставьте флажок Выполнить во внешней консоли и снимите флажок Приостановить вывод на консоль. Обычно у локального приложения консоль не отображается, а результаты записываются в окно вывода. В рамках этого задания мы покажем ее в отдельном окне, хотя это не требуется при обычной разработке.
Щелкните OK.
Нажмите клавишу F5 для сборки и запуска приложения. Или выберите Запуск > Начать отладку.
Visual Studio для Mac запустит два окна. Первое — это окно консоли со сведениями о локальном приложении на сервере.
Второе — обычное окно браузера для тестирования сайта. Браузер не учитывает, где размещено приложение. Нажмите Сведения для перехода на эту страницу.
Помимо прочего, страница сведений отображает текст, заданный в контроллере.
Не закрывайте окна и вернитесь в Visual Studio для Mac. Откройте файл Controllers/HomeController.cs, если он еще не открыт.
Установите точку останова в первой строке метода About. Это можно сделать, щелкнув в поле или установив курсор в строку и нажав клавишу F9. В этой строке задаются данные в коллекции ViewData, которые отображаются на CSHTML-странице по пути Views/Home/About.cshtml.
Вернитесь в браузер и обновите страницу сведений. В Visual Studio для Mac будет достигнута точка останова.
Наведите указатель на член ViewData, чтобы просмотреть его данные. Вы также можете развернуть его дочерние элементы, чтобы увидеть вложенные данные.
Удалите точку останова в приложении, выполнив те же действия, что и для ее добавления.
Откройте файл Views/Home/About.cshtml.
Замените слово additional на changed и сохраните файл.
Нажмите кнопку Продолжить, чтобы продолжить выполнение.
Вернитесь в окно браузера, чтобы увидеть новый текст. Это изменение можно сделать в любое время. Для него не требуется точка останова отладчика. Если вы не видите измененный текст, обновите браузер.
Закройте окно браузера и консоль приложения. Отладка остановится.
Задача 5. Настройка запуска приложения
В обозревателе решений откройте файл Startup.cs. Вы можете заметить, что некоторые красные волнистые линии изначально восстанавливаются, так как пакеты NuGet восстанавливаются в фоновом режиме, и компилятор Roslyn создает полную картину зависимостей проекта.
Найдите метод Startup. В этом разделе определяется начальная конфигурация приложения, и здесь много сведений. Давайте разберемся.
Метод запускается путем инициализации ConfigurationBuilder и задания базового пути.
Затем он загружает обязательный файл appsettings.json.
После этого он пытается загрузить зависящий от среды appsettings.json, который будет переопределять существующие параметры. Например, это предоставленный файл appsettings.Development.json, используемый для этой среды. Дополнительные сведения о конфигурации в ASP.NET Core см. в документации.
Наконец, в построитель конфигурации добавляются переменные среды, конфигурация собирается и готовится для использования.
Задача 6. Вставка ПО промежуточного слоя приложения
Найдите метод Configure в классе Startup. Здесь настраивается ПО промежуточного слоя, чтобы его можно было вставить в конвейер HTTP и использовать для обработки каждого запроса к серверу. Хотя этот метод вызывается только один раз, содержимое методов (например , UseStaticFiles) может выполняться при каждом запросе.
Вы также можете добавить дополнительное ПО промежуточного слоя, которое выполняется как часть конвейера. Добавьте следующий код после приложения. ИспользуйтеStaticFiles для автоматического добавления заголовка X-Test к каждому исходящему ответу. Технология IntelliSense дает подсказки при вводе.
app.Use(async (context, next) => { context.Response.Headers.Add("X-Test", new[] { "Test value" }); await next(); });
Нажмите клавишу F5 для сборки и запуска проекта.
В браузере можно проверить, что заголовки добавились. Следующие инструкции предназначены для Safari, но вы можете сделать то же самое в Chrome или Firefox.
Когда браузер загрузит сайт, выберите Safari > Настройки.
На вкладке Дополнения поставьте флажок Показывать меню "Разработка" в строке меню и закройте диалоговое окно.
Выберите Разработка > Показать ресурсы страницы.
Обновите окно браузера, чтобы открытые средства разработчика могли отследить и проанализировать трафик и содержимое.
HTML-страница localhost, отображенная сервером, будет соответствовать элементу, выбранному по умолчанию.
Разверните боковую панель сведений.
Прокрутите до нижней части боковой панели, чтобы увидеть заголовок ответа, добавленный в код ранее.
Закройте окно браузера и консоль, когда закончите проверку.
Итоги
В этом задании вы узнали, как приступить к разработке приложений ASP.NET Core с помощью Visual Studio для Mac. Если вы хотите изучить разработку более функционального приложения с базой данных фильмов, см. руководство Начало работы с MVC ASP.NET Core.