[Программирование, .NET, ASP, C#] Что из себя представляет класс Startup и Program.cs в ASP.NET Core (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В преддверии старта курса «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
===========Похожие новости:
- [Проектирование и рефакторинг, C#, Разработка под Windows] Проектирование на C# глазами первокурсника -> NotePad++ №6
- [Программирование, Функциональное программирование] Сильные стороны функционального программирования
- [Анализ и проектирование систем, .NET, Проектирование и рефакторинг, Микросервисы] Взаимодействия. RPC vs REST vs MQ
- [C#] По пути в Авалонию
- [Тестирование IT-систем, Программирование, Тестирование веб-сервисов, Карьера в IT-индустрии] Перспективы разработчика в автоматизации тестирования ПО
- [Программирование, Управление разработкой, Управление проектами, Учебный процесс в IT, Изучение языков] Как прорешать SICP: Отчёт о создании решебника для самого известного в мире задачника по программированию (перевод)
- [Программирование, Java] Односторонние и двусторонние отношения в Hibernate
- [Python, Программирование] Как перестать беспокоиться и начать жить
- [Python, Программирование] 7 полезных расширений VS Code для Python-разработчиков (перевод)
- [.NET] .NET 5 + Source Generator = Javascript
Теги для поиска: #_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
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В преддверии старта курса «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(); } 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; } .ConfigureLogging(logging =>
{ logging.SetMinimumLevel(LogLevel.Warning); }) .ConfigureKestrel((context, options) =>
{ options.Limits.MaxRequestBodySize = 20000000; }); 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) { ... } } public void ConfigureServices(IServiceCollection services)
{ services.AddMvc(); } public void Configure(IApplicationBuilder app)
{ app.UseMvc(); } app.UseHttpsRedirection();
app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); UseCookiePolicy(); UseSession(); app.Map("/MyDelegate", MyDelegate);
Узнать подробнее о курсе «C# ASP.NET Core разработчик».Смотреть открытый вебинар по теме «Отличия структурных шаблонов проектирования на примерах».
=========== Источник: habr.com =========== =========== Автор оригинала: Ankit Mori ===========Похожие новости:
Блог компании OTUS. Онлайн-образование ), #_programmirovanie ( Программирование ), #_.net, #_asp, #_c# |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 09:18
Часовой пояс: UTC + 5