۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

رمزگشایی از کلاس های Program و Startup در ASP.NET Core

Program و Startup کلاس های اصلی برای پیکربندی برنامه های دات نت هستند. نحوه استفاده از آنها را در ASP.NET Core 6 بیاموزید.

Program و Startup کلاس های اصلی برای پیکربندی برنامه های دات نت هستند. نحوه استفاده از آنها را در ASP.NET Core 6 بیاموزید.

ASP.NET Core 6 یک مدل میزبانی ساده را معرفی می کند که کد دیگ بخار را کاهش می دهد که در غیر این صورت برای راه اندازی برنامه ASP.NET Core خود باید بنویسید. کلاس های Program و Startup دو کلاس اصلی هستند که معمولاً کد خود را برای پیکربندی برنامه خود می نویسید.

این مقاله در مورد نحوه پیکربندی کلاس‌های راه‌اندازی برنامه در ASP.NET Core 6 با نمونه‌های کد مربوطه در هر کجا که مناسب باشد صحبت می‌کند.

برای کار با نمونه کدهای ارائه شده در این مقاله، باید Visual Studio 2022 را در سیستم خود نصب کنید. اگر قبلاً نسخه‌ای ندارید، می‌توانید Visual Studio 2022 را از اینجا بارگیری کنید.

یک پروژه ASP.NET Core Web API در Visual Studio 2022 ایجاد کنید

ابتدا، اجازه دهید یک پروژه ASP.NET Core در Visual Studio 2022 ایجاد کنیم. با دنبال کردن این مراحل، یک پروژه ASP.NET Core Web API 6 جدید در Visual Studio 2022 ایجاد می کنیم:

  1. Visual Studio 2022 IDE را راه اندازی کنید.
  2. روی “ایجاد پروژه جدید” کلیک کنید.
  3. در پنجره “ایجاد پروژه جدید”، “ASP.NET Core Web API” را از لیست الگوهای نمایش داده شده انتخاب کنید.
  4. بعدی را کلیک کنید.
  5. در پنجره “پیکربندی پروژه جدید خود”، نام و مکان پروژه جدید را مشخص کنید.
  6. به صورت اختیاری، بسته به تنظیمات برگزیده خود، کادر انتخاب «قرار دادن راه حل و پروژه در یک فهرست راهنمای» را علامت بزنید.
  7. بعدی را کلیک کنید.
  8. در پنجره “اطلاعات اضافی” نشان داده شده در ادامه، .NET 6.0 را به عنوان چارچوب هدف از لیست کشویی در بالا انتخاب کنید. “نوع احراز هویت” را به عنوان “هیچ” (پیش‌فرض) بگذارید.
  9. مطمئن شوید که چک باکس‌های «Enable Docker»، «Configure for HTTPS» و «Enable Open API Support» علامت نخورده باشند زیرا ما در اینجا از هیچ یک از این ویژگی‌ها استفاده نخواهیم کرد.
  10. روی ایجاد کلیک کنید.
Deno Deno Cron را برای زمان بندی کار اضافه می کند

این یک پروژه ASP.NET Core 6 Web API جدید در Visual Studio 2022 ایجاد می کند. ما از این پروژه در بخش های بعدی این مقاله استفاده خواهیم کرد.

هاست در .NET و .NET Core چیست؟

یک برنامه وب .NET یا NET Core در داخل میزبانی اجرا می‌شود که راه‌اندازی برنامه، پیکربندی وب سرور و غیره را مدیریت می‌کند. میزبان منابعی مانند گزارش‌گیری، پیکربندی، تزریق وابستگی (DI) را در بر می‌گیرد، و هر پیاده سازی IHostedService. یک میزبان با استفاده از کد نوشته شده در کلاس Program ایجاد، پیکربندی و اجرا می شود.

برای ایجاد هاست در ASP.NET Core 6، باید متد Build().Run() را در سازنده میزبان فراخوانی کنید. هاست بیلدر نمونه ای از IHostBuilder است. قطعه کد زیر این را نشان می دهد:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.Run();

کلاس WebApplication اینترفیس های زیر را پیاده سازی می کند:

  • IHost – برای راه اندازی و توقف میزبان
  • استفاده می شود

  • IApplicationBuilder – برای ساخت خط لوله میان افزار
  • استفاده می شود

  • IEndpointRouteBuilder – برای افزودن نقاط پایانی استفاده می شود

همچنین می توانید متد CreateDefaultBuilder را برای ایجاد هاست فراخوانی کنید. این روش برای مقداردهی اولیه یک نمونه جدید از کلاس WebHostBuilder با پیش فرض های از پیش پیکربندی شده استفاده می شود.

قطعه کد زیر نحوه استفاده از روش CreateDefaultBuilder را نشان می دهد:

var host = new WebHostBuilder()
      .UseKestrel()
      .UseContentRoot(Directory.GetCurrentDirectory())
      .UseIISIntegration()
      .UseStartup<Startup>()
      .Build();

توجه داشته باشید که هر دو کلاس WebApplication و WebApplicationBuilder در ASP.NET Core 6 معرفی شده اند.

روش افزودنی ConfigureWebHostDefaults() را می توان برای پیکربندی میزبان برنامه وب با انتخاب Kestrel به عنوان وب سرور و پیکربندی آن با استفاده از ارائه دهندگان پیکربندی میزبانی برنامه استفاده کرد.

کلاس برنامه در .NET و .NET Core

یک پروژه NET یا NET Core برای شروع به یک نقطه ورودی نیاز دارد. متد Main() نقطه ورود در یک برنامه NET یا NET Core است. از آنجایی که Main () نقطه ورود برنامه شما است، می توانید یک و تنها یک متد Main() در پروژه خود داشته باشید. اگرچه می‌توانید Main() را در هر جایی از پروژه خود قرار دهید، اما معمولاً در کلاسی به نام Program قرار دارد که در فایلی به نام Program.cs ذخیره می‌شود.

اوراکل پشتیبانی جاوا اسکریپت را در MySQL معرفی می کند

کلاس برنامه در ASP.NET Core 5

در اینجا یک کلاس برنامه حداقل در .NET 5 چگونه به نظر می رسد:

public class Program
{
      public static void Main(string[] args) {
            CreateHostBuilder(args).Build().Run();
      }
      public static IHostBuilder CreateHostBuilder(string[] args) {
            return Host.CreateDefaultBuilder(args).
            ConfigureWebHostDefaults(x => x.UseStartup <Startup> ());
      }
}

کلاس برنامه در ASP.NET Core 6

وقتی یک پروژه Web API جدید در ASP.NET Core 6 ایجاد می کنید، یک فایل Program.cs خواهید داشت. با این حال، برخلاف ASP.NET Core 5 (و تمام نسخه های قبلی ASP.NET Core)، پروژه یک فایل Startup.cs تولید نمی کند. کد تولید شده پیش‌فرض کلاس Program در ASP.NET Core 6 به شکل زیر خواهد بود:

var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
var app = builder.Build();
// Configure the HTTP request pipeline.
app.UseAuthorization();
app.MapControllers();
app.Run();

کلاس Startup در .NET و .NET Core

کلاس Startup شامل متدهای ConfigureServices و Configure است. در حالی که اولی برای پیکربندی سرویس های مورد نیاز استفاده می شود، دومی برای پیکربندی خط لوله پردازش درخواست استفاده می شود.

متد Configure بلافاصله بعد از متد ConfigureServices اجرا می شود. هر دوی این روش ها در زمان شروع برنامه توسط زمان اجرا فراخوانی می شوند. در زمان اجرا، میزبان دات نت یک نمونه از IApplicationBuilder را به متد Configure ارسال می کند. به طور پیش فرض، ConfigureServices خدمات را به ظرف داخلی اضافه می کند.

لیست کد زیر نحوه سازماندهی کلاس Startup را نشان می دهد:

public class Startup
  {
        public void ConfigureServices(IServiceCollection services)
        {
            //Write code to add services to the container here
        }
        public void Configure(IApplicationBuilder app)
        {
         //Write code here to configure the request processing pipeline
        }
      //Other members have been removed for brevity
   }

همچنین می‌توانید یک سازنده در کلاس Startup داشته باشید که برای مقداردهی اولیه یک نمونه پیکربندی IC، همانطور که در فهرست کد در بخش بعدی نشان داده شده است، استفاده می‌شود.

نحوه استفاده از لانچر پایتون برای ویندوز

از کلاس Startup در ASP.NET Core 6

استفاده کنید

اگرچه کلاس Startup به طور پیش فرض در ASP.NET Core 6 ایجاد نمی شود، در صورت تمایل می توانید از کلاس Startup در ASP.NET Core 6 استفاده کنید. برای انجام این کار، باید کلاسی با نام Startup ایجاد کنید (شما می توانید هر نام دیگری را نیز تعیین کنید) و روش های ConfigureServices و Configure را مانند شکل زیر وارد کنید.

  public class Startup
  {
        public Startup(IConfigurationRoot configuration)
        {
            Configuration = configuration;
        }
        public IConfigurationRoot Configuration { get; }
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
        }
        public void Configure(IApplicationBuilder app)
        {
            app.UseRouting();
            app.UseEndpoints(x => x.MapControllers());
        }
   }

روش‌های UseRouting و UseEndpoints برای افزودن و پیکربندی میان‌افزار مسیریابی به خط لوله پردازش درخواست استفاده می‌شوند. کد کلاس برنامه شما باید به کلاس Startup تازه ایجاد شده اشاره داشته باشد. برای این کار کد موجود کلاس Program را با کد زیر جایگزین کنید:

var builder = WebApplication.CreateBuilder(args);
var startup = new Startup(builder.Configuration);
startup.ConfigureServices(builder.Services);
var app = builder.Build();
startup.Configure(app);
app.Run();

اکنون یک نقطه شکست در متدهای ConfigureServices و Configure کلاس Startup که قبلا ایجاد کردیم، تعیین کنید. مشاهده خواهید کرد که هنگام اجرای برنامه، نقاط شکست برخورد می کنند.

مدل جدید میزبانی حداقل در ASP.NET Core 6 به شما امکان می‌دهد تا کدهای کمتری بنویسید تا برنامه خود را راه اندازی و اجرا کنید. برای حفظ سازگاری به عقب، همچنان می‌توانید از کلاس Startup در ASP.NET Core 6 استفاده کنید. می‌توانید در مقاله قبلی من در اینجا اطلاعات بیشتری در مورد مدل میزبانی حداقل بخوانید.