Начало работы с ASP.NET Core

Visual Studio для Mac упрощает разработку службы приложения благодаря поддержке самой новой платформы веб-разработки ASP.NET Core. Платформа ASP.NET Core выполняется на базе .NET Core — современного результата развития платформы .NET Framework и среды разработки. Она рассчитана на высокую производительность и небольшие размеры установки, а также переработана для запуска в Linux, macOS и Windows.

Установка .NET Core

.NET Core 3.1 автоматически устанавливается при установке Visual Studio для Mac. Дополнительные сведения о версиях .NET Core, поддерживаемых в Visual Studio для Mac, см. в статье Поддержка .NET Core.

Создание приложения ASP.NET Core в Visual Studio для Mac

Откройте Visual Studio для Mac. На начальном экране выберите Создать проект...

Диалоговое окно создания проекта

Отображается диалоговое окно "Новый проект", где можно выбрать шаблон для создания приложения.

Существует несколько проектов с готовым шаблоном для создания приложения ASP.NET Core. Эти особые значения приведены ниже.

  • .NET Core > Пусто
  • .NET Core > API
  • .NET Core > Веб-приложение
  • .NET Core > Веб-приложение (модель — представление — контроллер)
  • .NET Core > Серверное приложение Blazor
  • .NET Core > Приложение Blazor WebAssembly

Параметры проекта ASP.NET

Выберите Пустое веб-приложение ASP.NET Core и нажмите кнопку Далее. Присвойте проекту имя и нажмите кнопку Создать. Будет создано приложение ASP.NET Core. В левой области окна решения разверните вторую стрелку и выберите файл Startup.cs. Он должен выглядеть, как на рисунке ниже.

Новое представление пустого проекта ASP.NET Core

Пустой шаблон ASP.NET Core создает веб-приложение с двумя файлами по умолчанию: Program.cs и Startup.cs, которые описаны ниже. Оно также создает папку "Зависимости", содержащую зависимости пакета NuGet для проекта, такие как ASP.NET Core, платформа .NET Core и целевые объекты MSBuild, используемые при сборке проекта:

Отображение зависимостей в окне решения

Program.cs

Откройте и просмотрите файл Program.cs в проекте. Обратите внимание, что в методе Main — входе в приложение выполняются несколько операций:

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }

Приложение ASP.NET Core создает в основном методе веб-сервер, настраивая и запуская узел с помощью экземпляра WebHostBuilder. Этот построитель предоставляет методы, позволяющие настроить узел. В приложении-шаблоне используются следующие конфигурации:

  • .UseStartup<Startup>(). указывает класс Startup.

Тем не менее вы можете добавить дополнительные конфигурации, такие как:

  • UseKestrel. указывает, что приложением будет использоваться сервер Kestrel.
  • UseContentRoot(Directory.GetCurrentDirectory()). использует корневую папку веб-проекта в качестве корня содержимого приложения при запуске приложения из этой папки.
  • .UseIISIntegration(). указывает, что приложение должно работать с IIS. Чтобы использовать IIS с ASP.NET Core, нужно указать как UseKestrel, так и UseIISIntegration.

Startup.cs

Класс Startup для вашего приложения указывается в методе UseStartup() для CreateWebHostBuilder. Именно в этом классе вы укажете конвейер обработки запросов и настроите службы.

Откройте и просмотрите файл Startup.cs в проекте:

    public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello World!");
            });
        }
    }

Этот класс Startup всегда должен соответствовать следующим правилам:

  • Он всегда должен быть открытым.
  • Он должен содержать два открытых метода: ConfigureServices и Configure.

Метод ConfigureServices определяет службы, которые будут использоваться приложением.

Configure позволяет создать конвейер запросов с помощью ПО промежуточного слоя. Эти компоненты используются в конвейере приложения ASP.NET для обработки запросов и откликов. Конвейер HTTP состоит из нескольких делегатов запросов, вызываемых по очереди. Каждый из делегатов может определить, обработать ли запрос самостоятельно либо передать его в следующий делегат.

Делегаты можно настроить с помощью методов Run, Map и Use для IApplicationBuilder, но метод Run никогда не вызывает следующий делегат и должен всегда находиться в конце конвейера.

Метод Configure предварительно созданного шаблона используется для выполнения нескольких действий. Во-первых, он настраивает страницу обработки исключений для использования во время разработки. Кроме того, он отправляет отклик запрашивающей веб-странице с простым кодом "Hello World".

Этот простой проект "Hello World" может выполняться без добавления дополнительного кода. Чтобы запустить приложение, можно выбрать нужный браузер в раскрывающемся списке справа от кнопки воспроизведения или просто нажать кнопку воспроизведения (треугольная), чтобы использовать браузер по умолчанию:

Запуск браузера

Для запуска веб-проекта Visual Studio для Mac использует случайный порт. Чтобы узнать, что это за порт, откройте выходные данные приложения, указанные в разделе Вид > Другие окна. Они должны иметь приблизительно следующий вид:

Отображение порта прослушивания в выходных данных приложения

После запуска проекта веб-браузер по умолчанию должен запуститься и подключиться к URL-адресу, указанному в выходных данных приложения. Или вы можете открыть браузер по своему выбору и ввести http://localhost:5000/, заменив 5000 на порт, указанный Visual Studio в выходных данных приложения. Должен отображаться текст Hello World!:

Отображение текста в браузере

Добавление контроллера

Приложения ASP.NET Core используют конструктивный шаблон модель-представление-контроллер (MVC), чтобы обеспечить логическое разделение обязанностей для каждой из частей приложения. Шаблон разработки MVC состоит из следующих концепций:

  • Модель: класс, представляющий данные приложения.
  • Вид: отображает пользовательский интерфейс приложения (который часто является данными модели).
  • Контроллер: класс, который обрабатывает запросы браузера, реагирует на ввод данных пользователем и взаимодействие с ним.

Дополнительные сведения об использовании MVC см. в руководстве с обзором MVC ASP.NET Core.

Чтобы добавить контроллер, сделайте следующее:

  1. Щелкните имя проекта правой кнопкой мыши и выберите команду Добавить > Новые файлы. Выберите Общие > Пустой класс и введите имя контроллера:

    Диалоговое окно "Новый файл"

  2. Добавьте в новый контроллер следующий код:

    using System;
    using Microsoft.AspNetCore.Mvc;
    using System.Text.Encodings.Web;
    
    namespace Hello_ASP
    {
        public class HelloWorldController : Controller
        {
            //
            // GET: /HelloWorld/
    
            public string Index()
            {
                return "This is my default action...";
            }
    
        }
    }
    
  3. Добавьте зависимость Microsoft.AspNetCore.Mvc в проект, щелкнув правой кнопкой мыши папку Зависимости и выбрав пункт Добавить пакет...

  4. Используйте поле поиска, чтобы перейти к библиотеке NuGet для Microsoft.AspNetCore.Mvc, и выберите Добавить пакет. Установка может занять несколько минут, кроме того, вам может быть предложено принять различные лицензии для требуемых зависимостей:

    Добавление Nuget

  5. В классе Startup удалите лямбда-выражение app.Run и задайте используемую MVC логику маршрутизации URL-адресов, чтобы определить, какой код нужно вызывать следующим:

    app.UseMvc(routes =>
    {
        routes.MapRoute(
        name: "default",
        template: "{controller=HelloWorld}/{action=Index}/{id?}");
    });
    

    Не забудьте удалить лямбда-выражение app.Run, так как оно переопределяет логику маршрутизации.

    Чтобы определить запускаемый код, MVC использует следующий формат:

    /[Controller]/[ActionName]/[Parameters]

    Добавляя приведенный выше фрагмент кода, вы указываете приложению использовать по умолчанию контроллер HelloWorld и метод действия Index.

  6. Добавьте вызов services.AddMvc(); для метода ConfigureServices, как показано ниже:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }
    

    Вы также можете передать сведения о параметрах из URL-адреса в контроллер.

  7. Добавьте в HelloWorldController другой метод, как показано ниже:

    public string Xamarin(string name)
    {
        return HtmlEncoder.Default.Encode($"Hello {name}, welcome to Visual Studio for Mac");
    }
    
  8. Если запустить приложение сейчас, оно должно автоматически открыть браузер:

    Выполнение приложения в браузере

  9. Если перейти по адресу http://localhost:xxxx/HelloWorld/Xamarin?name=Amy (заменив xxxx на правильный порт), вы должны увидеть следующее:

    Выполнение приложения в браузере с аргументами

Устранение неполадок

Если требуется установить .NET Core вручную в macOS 10.12 (Sierra) и более поздней версии, сделайте следующее.

  1. Прежде чем начать установку .NET Core, убедитесь, что установлены все обновления ОС до последней стабильной версии. Это можно сделать, перейдя в приложение App Store и открыв вкладку обновлений.

  2. Выполните действия, указанные на сайте .NET Core.

Убедитесь, что все шаги выполнены успешно, чтобы обеспечить правильную установку .NET Core.

Сводка

Это руководство содержит вводные сведения о платформе ASP.NET Core. Он описывает, что это такое, когда ее можно использовать и как работать с ней в Visual Studio для Mac. Дополнительные сведения о дальнейших действиях см. в следующих руководствах: