Введение в ASP.NET Core

Daniel Roth, Rick Anderson и Shaun Luttin

В данной теме представлены новые концепции в ASP.NET Core, и здесь рассказывается, как разрабатывать современные веб приложения.

Что такое ASP.NET Core?

ASP.NET Core - это кроссплатформенный фреймворк с открытым исходным кодом для создания современных облачных веб приложений. Приложения ASP.NET Core могут быть запущены под`.NET Core <https://www.microsoft.com/net/core/platform>`__ или под полной версией .NET Framework. Фреймворк состоит из модульных компонентов, что дает вам гибкость при создании решений. Вы можете разрабатывать и запускать ASP.NET Core приложения под Windows, Mac и Linux. ASP.NET Core имеет открытый исходный код на GitHub.

Почему ASP.NET Core?

Первый предварительный релиз ASP.NET появился почти 15 лет назад как часть .NET Framework. С тех пор миллионы разработчиков использовали его для создания и запуска веб приложений, и теперь он обладает гораздо большими возможностями.

В ASP.NET Core произошло большое число архитектурных изменений, в результате чего фреймворк стал компактным и модульным. ASP.NET Core не основывается на System.Web.dll. Он основывается на наборе пакетов NuGet. Это позволяет вам оптимизировать приложение, чтобы оно включало только те пакеты NuGet, которые вам нужны.

С ASP.NET Core вы получаете следующие фундаментальные улучшения:

  • Единую историю для сборки веб UI и веб API
  • Интеграцию современных клиентских фреймворков и рабочих процессов разработки
  • Облачную конфигурационную систему
  • Встроенное внедрение зависимостей
  • Новый легкий модульный поток HTTP запросов
  • Возможность хостинга на IIS или хостинга в самом процессе
  • Встроенный `.NET Core`_
  • Конструкцию в виде пакетов `NuGet`_
  • Новый инструментарий, который упрощает разработку
  • Возможность кроссплатформенного запуска ASP.NET приложений под Windows, Mac и Linux
  • Открытый исходный код

Анатомия приложения

Приложение ASP.NET Core - это просто консольное приложение, которое создает веб сервер в своем методе Main:

using System;
using Microsoft.AspNetCore.Hosting;

namespace aspnetcoreapp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                .UseKestrel()
                .UseStartup<Startup>()
                .Build();

            host.Run();
        }
    }
}

Main использует :dn:cls:`~Microsoft.AspNetCore.Hosting.WebHostBuilder`, который следует паттерну сборки для создания хоста веб приложения. У паттерна есть методы, которые определяют веб сервер (например, UseKestrel) и класс для запуска (UseStartup). В примере выше используется веб сервер Kestrel, но мы можем указать и другие серверы. В следующем разделе мы подробнее рассмотрим UseStartup. WebHostBuilder предлагает много дополнительных методов, включая UseIISIntegration для хостинга на IIS и IIS Express и UseContentRoot для указания корневой директории контента. Методы Build и Run создают IWebHost, который будет хостить приложение, и оно начнет слушать входящие HTTP запросы.

Startup

Метод UseStartup для WebHostBuilder указывает класс Startup для вашего приложения.

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }
}

В классе Startup вы определяете поток обработки запросов, а также здесь настраиваются все сервисы, необходимые вашему приложению. Класс Startup должен быть открытым и содержать следующие методы:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
    }

    public void Configure(IApplicationBuilder app)
    {
    }
}
  • ConfigureServices определяет, используемые вашим приложением (например, ASP.NET MVC Core, Entity Framework Core, Identity и тд.)
  • Configure определяет связующее ПО в потоке запросов
  • См. Запуск приложения

Сервисы

Сервис - это компонент для общего пользования в приложении. Сервисы доступны благодаря внедрению зависимостей. ASP.NET Core включает в себя встроенный IoC контейнер, который по умолчанию поддерживает внедрение конструктора, но вы можете легко заменить его IoC контейнером по вашему выбору. В дополнение к преимуществу слабого связывания, DI делает так, что сервисы доступны всему приложению. Например, везде доступно логирование. См. Внедрение зависимостей (Dependency Injection).

Связующее ПО

В ASP.NET Core сы составляете поток запросов, используя Связующее ПО (Middleware). Связующее ПО ASP.NET Core выполняет асинхронную логику для HttpContext, а затем либо вызывает следующее связующее ПО в цепочки, либо напрямую обрывает запрос. Обычно для связующего ПО используется “Use”, принимая зависимость для пакета NuGet и вызывая соответствующий метод расширения UseXYZ для IApplicationBuilder в методе Configure.

ASP.NET Core предлагает богатый набор связующего ПО:

Также вы можете использовать пользовательское связующее ПО.

С ASP.NET Core можно использовать любое связующее ПО, основанное на OWIN. См. Open Web Interface for .NET (OWIN).

Серверы

Хостинговая модель ASP.NET Core напрямую не слушает запросы - она полагается на серверную реализацию HTTP, чтобы передавать запросы приложению. Переданный запрос представляется как набор интерфейсов feature, которые приложение затем компонует в HttpContext. ASP.NET Core включает в себя кроссплатформенный веб сервер, Kestrel, который обычно запускается за производственным веб сервером, таким как IIS или nginx.

Корневая директория контента

Корневая директория - это основной путь к любому контенту, используемому в приложении, например, его представления и веб контент. По умолчанию корневая директория контента - это то же самое, что и основной путь приложения для выполняемого хостинга; альтернативу можно указать с помощью WebHostBuilder.

Корневая директория веб

Корневая директория веб (web root) - это директория для открытых статических ресурсов, таких как файлов css, js и файлов изображений. Связующее ПО статических файлов по умолчанию отрабатывает файлы только из этой директории (и поддиректорий). Путем директории является <content root>/wwwroot, но вы можете указать и другой путь с помощью WebHostBuilder.

Конфигурация

ASP.NET Core использует новую конфигурационную модель для обработки простых пар “имя-значение”. Новая конфигурационная модель не основывается на System.Configuration или web.config; она создается от упорядоченного набора конфигурационных провайдеров. Встроенные конфигурационные провайдеры поддерживают множество форматов файлов (XML, JSON, INI) и переменных среды. Также вы можете написать собственные пользовательские конфигурационные провайдеры.

См. Конфигурация.

Среды

Среды, как “Development” и “Production” в ASP.NET Core можно настроить с помощью переменных среды. См. Работа с несколькими средами.

Создание веб UI и веб API с помощью ASP.NET Core MVC

  • Вы можете создавать хорошо тестируемые веб приложения с отличной архитектурой, которые следуют паттерну Model-View-Controller (MVC). См. MVC и Тестирование.
  • Вы можете создавать HTTP сервисы, которые поддерживают несколько форматов. См. Formatting Response Data
  • Razor предлагает язык для создания представлений
  • Тэг-хэлперы включают серверный код для создания и отображения HTML элементов в Razor файлах
  • Вы можете создавать HTTP сервисы с полной поддержкой согласования содержания, используя пользовательское или встроенное форматирование (JSON, XML)
  • Связывание моделей автоматически передает данные из HTTP запросов параметрам методов действия
  • Валидация модели автоматически выполняет клиентскую и серверную валидацию

Разработка на стороне клиента

ASP.NET Core интегрируется со множеством клиентских фреймворков, включая AngularJS, KnockoutJS и Bootstrap. См. Разработка со стороны клиента.

Поделись хорошей новостью с друзьями!
Следи за новостями!