[Программирование, .NET, ASP, C#] Что из себя представляет класс Startup и Program.cs в ASP.NET Core (перевод)

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
15-Фев-2021 18:32
В преддверии старта курса «C# ASP.NET Core разработчик» подготовили традиционный перевод полезного материала.
Также приглашаем на открытый вебинар по теме «Отличия структурных шаблонов проектирования на примерах». На вебинаре участники вместе с экспертом рассмотрят три структурных шаблона проектирования: Заместитель, Адаптер и Декоратор; а также напишут несколько простых программ и проведут их рефакторинг.

ВведениеProgram.cs — это место, с которого начинается приложение. Файл Program.cs в ASP.NET Core работает так же, как файл Program.cs в традиционном консольном приложении .NET Framework. Файл Program.cs является точкой входа в приложение и отвечает за регистрацию и заполнение Startup.cs, IISIntegration и создания хоста с помощью инстанса IWebHostBuilder, метода Main.Global.asax больше не входит в состав приложения ASP.NET Core. В ASP.NET Core заменой файла Global.asax является файл Startup.cs.Файл Startup.cs — это также точка входа, и он будет вызываться после выполнения файла Program.cs на уровне приложения. Он обрабатывает конвейер запросов. Класс Startup запускается в момент запуска приложения.ОписаниеЧто такое Program.cs?Program.cs — это место, с которого начинается приложение. Файл класса Program.cs является точкой входа в наше приложение и создает инстанс IWebHost, на котором размещается веб-приложение.
public class Program {
    public static void Main(string[] args) {
        BuildWebHost(args).Run();
    }
    public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args).UseStartup < startup > ().Build();
}
WebHost используется для создания инстансов IWebHost, IWebHostBuilder и IWebHostBuilder, которые имеют предварительно настроенные параметры. Метод CreateDefaultBuilder() создает новый инстанс WebHostBuilder.Метод UseStartup() определяет класс Startup, который будет использоваться веб-хостом. Мы также можем указать наш собственный пользовательский класс вместо Startup.Метод Build() возвращает экземпляр IWebHost, а Run() запускает веб-приложение до его полной остановки. Program.cs в ASP.NET Core упрощает настройку веб-хоста.
public static IWebHostBuilder CreateDefaultBuilder(string[] args) {
    var builder = new WebHostBuilder().UseKestrel().UseContentRoot(Directory.GetCurrentDirectory()).ConfigureAppConfiguration((hostingContext, config) => {
        /* setup config */ }).ConfigureLogging((hostingContext, logging) => {
        /* setup logging */ }).UseIISIntegration()
    return builder;
}
Метод UseKestrel() является расширением, которое определяет Kestrel как внутренний веб-сервер. Kestrel — это кроссплатформенный веб-сервер для ASP.NET Core с открытым исходным кодом. Приложение работает с модулем Asp.Net Core, и необходимо включить интеграцию IIS (UseIISIntegration()), которая настраивает базовый адрес и порт приложения.Он также настраивает UseIISIntegration(), UseContentRoot(), UseEnvironment(Development), UseStartup() и другие доступные конфигурации, например Appsetting.json и Environment Variable. UseContentRoot используется для обозначения текущего пути к каталогу.Мы также можем зарегистрировать логирование и установить минимальный loglevel, как показано ниже. Это также переопределит loglevel, настроенный в файле appsetting.json.
.ConfigureLogging(logging =>
{ logging.SetMinimumLevel(LogLevel.Warning); })
Таким же образом мы можем контролировать размер тела нашего запроса и ответа, включив эту опцию файле program.cs, как показано ниже.
.ConfigureKestrel((context, options) =>
{ options.Limits.MaxRequestBodySize = 20000000; });
ASP.net Core является кроссплатформенным и имеет открытый исходный код, а также его можно размещать на любом сервере (а не только на IIS, внешнем веб-сервере), таком как IIS, Apache, Nginx и т. д.Что такое файл Startup?Обязателен ли файл startup.cs или нет? Да, startup.cs является обязательным, его можно специализировать любым модификатором доступа, например, public, private, internal. В одном приложении допускается использование нескольких классов Startup. ASP.NET Core выберет соответствующий класс в зависимости от среды.Если существует класс Startup{EnvironmentName}, этот класс будет вызываться для этого EnvironmentName или будет выполнен файл Startup для конкретной среды в целом (Environment Specific), чтобы избежать частых изменений кода/настроек/конфигурации в зависимости от среды.ASP.NET Core поддерживает несколько переменных среды, таких как Development, Production и Staging. Он считывает переменную среды ASPNETCORE_ENVIRONMENT при запуске приложения и сохраняет значение в интерфейсе среды хоста (into Hosting Environment interface).Обязательно ли этот класс должен называться startup.cs? Нет, имя класса не обязательно должно быть Startup.Мы можем определить два метода в Startup файле, например ConfigureServices и Configure, вместе с конструктором.Пример Startup файла
public class Startup {
    // Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services) {
        ...
    }
    // Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app) {
        ...
    }
}
Метод ConfigureServicesЭто опциональный метод в классе Startup, который используется для настройки сервисов для приложения. Когда в приложение поступает какой-либо запрос, сначала вызывается метод ConfigureService.Метод ConfigureServices включает параметр IServiceCollection для регистрации сервисов. Этот метод должен быть объявлен с модификатором доступа public, чтобы среда могла читать контент из метаданных.
public void ConfigureServices(IServiceCollection services)
{
   services.AddMvc();
}
Метод ConfigureМетод Configure используется для указания того, как приложение будет отвечать на каждый HTTP-запрос. Этот метод в основном используется для регистрации промежуточного программного обеспечения (middleware) в HTTP-конвейере. Этот метод принимает параметр IApplicationBuilder вместе с некоторыми другими сервисами, такими как IHostingEnvironment и ILoggerFactory. Как только мы добавим какой-либо сервис в метод ConfigureService, он будет доступен для использования в методе Configure.
public void Configure(IApplicationBuilder app)
{
   app.UseMvc();
}
В приведенном выше примере показано, как включить функцию MVC в нашем фреймворке. Нам нужно зарегистрировать UseMvc() в Configure и сервис AddMvc() в ConfigureServices. UseMvc является промежуточным программным обеспечением. Промежуточное программное обеспечение (Middleware) — это новая концепция, представленная в Asp.net Core. Для вас доступно множество встроенных промежуточных программ, некоторые из которых указаны ниже.
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
UseCookiePolicy();
UseSession();
Промежуточное программное обеспечение можно настроить в http-конвейере с помощью команд Use, Run и Map.RunСуть Run заключается в немедленном замыкании HTTP-конвейера. Это лаконичный способ добавления промежуточного программного обеспечения в конвейер, который не вызывает никакого другого промежуточного программного обеспечения, которое находится рядом с ним, и немедленно возвращает HTTP-ответ.UseЭто передаст следующему (параметр next) делегату, так что HTTP-запрос будет передан следующему промежуточному программному обеспечению после выполнения текущего, если следующий делегат есть.MapMap просто принимает путь и функцию, которая конфигурирует отдельный конвейер промежуточного программного обеспечения.
app.Map("/MyDelegate", MyDelegate);
Чтобы получить более подробную информацию о промежуточном программном обеспечении, переходите сюдаASP.net Core имеет встроенную поддержку внедрения зависимостей (Dependency Injection). Мы можем настроить сервисы для контейнера внедрения зависимостей, используя этот метод. Следующие способы — конфигурационные методы в Startup классе.AddTransientTransient (временные) объекты всегда разные; каждому контроллеру и сервису предоставляется новый инстанс.ScopedScoped — используются одни и те же объекты в пределах одного запроса, но разные в разных запросах.SingletonSingleton — объекты одни и те же для каждого объекта и каждого запроса.Можем ли мы удалить startup.cs и объединить все в один класс с Program.cs?Ответ: Да, мы можем объединить все классы запуска в один файл.ЗаключениеВы получили базовое понимание того, почему файлы program.cs и startup.cs важны для нашего приложения Asp.net Core и как их можно настроить. Мы также немного познакомились с переменной среды (Environment Variable), внедрение зависимостей, промежуточным программным обеспечением и как его настроить. Кроме того, мы увидели, как можно настроить UseIIsintegration() и UseKestrel().
Узнать подробнее о курсе «C# ASP.NET Core разработчик».Смотреть открытый вебинар по теме «Отличия структурных шаблонов проектирования на примерах».

===========
Источник:
habr.com
===========

===========
Автор оригинала: Ankit Mori
===========
Похожие новости: Теги для поиска: #_programmirovanie (Программирование), #_.net, #_asp, #_c#, #_csharp, #_asp.net, #_asp.net_core, #_shablony_proektirovanija (шаблоны проектирования), #_blog_kompanii_otus._onlajnobrazovanie (
Блог компании OTUS. Онлайн-образование
)
, #_programmirovanie (
Программирование
)
, #_.net, #_asp, #_c#
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 25-Ноя 09:18
Часовой пояс: UTC + 5