بررسی کلاس Startup.cs در ASP.NET Core

بررسی کلاس Startup.cs در ASP.NET Core

در این پست از وبسایت پرووید، در رابطه با بررسی کلاس Startup.cs در ASP.NET Core صحبت خواهیم کرد. به ادامه ی مطلب بروید.

در این قسمت از سری آموزش متنی و رایگان ASP.NET Core از وب سایت پرووید بطور مفصل و دقیق در رابطه با کلاس Startup که در فایل Startup.cs تعریف شده است صحبت خواهیم کرد.

بسته ی آموزش ویدئویی تست نرم افزار در ASP.NET Core MVC

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی تست نرم افزار در ASP.NET Core MVC دیدن کنید.

در وب اپلیکیشن هایی که با ASP.NET Core ساخته می شوند حتماً باید کلاس Startup را داشته باشیم. در واقع نقش کلاس Startup شبیه به فایل Global.asax در ASP.NET است. ضمناً همانطور که از نام این کلاس مشخص است در زمان اجرا شدن برنامه در ابتدا کلاس Startup وارد عمل می شود. بمنظور پیکربندی کلاس Startup می توانید از متد UseStartup() استفاده کنید. اینکار در زمان پیکر بندی کردن میزبان و یا Host در درون متد Main() از کلاس Program اتفاق می افتد. کد زیر این موضوع را نشان می دهد.

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

    public static IWebHost BuildWebHost(string[] args)
    {
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();
    }
}

همانطور که در قسمت قبل از این آموزش نیز گفتیم لزوماً مجبور نیستید که نام کلاس Startup را Startup بگذارید. در واقع این یکی از رسم ورسومات و یا Convention هایی است که در ASP.NET Core وجود دارد. شما می توانید هر نام دیگری را برای این کلاس در نظر بگیرید. فقط باید فراموش نکنید که بعنوان پارامتر جنریک متد UseStartup() آن نام را تنظیم کنید. برای مثال اگر نام فایل خود را MyStartup بگذارید باید دستور UseStartup را بنویسید. با کلیک کردن بر روی فایل Startup.cs از Solution Explorer می توانید کلاس Startup و محتویات آنرا ببینید. تصویری که در قسمت زیر مشاهده می کنید مربوط به محتوای کلاس Startup در یک پروژه با ASP.NET Core 2.x است.

همانطور که در این تصویر می بینید در درون کلاس Startup دو متد بصورت Public تعریف شده اند. نام این دو متد ConfigureServices و Configure می باشند.

کلاس Startup حتماً باید متد Configure را داشته باشد اما وجود متد ConfigureServices اختیاری است.

بررسی متد ConfigureServices

در درون متد ConfigureServices می توانید Dependency هایی که در درون برنامه وجود دارند را Register کنید. حتماً از شما می خواهیم که آموزش اصل Inversion of Control در برنامه نویسی و همچنین بسته ی آموزش ویدئویی Inversion of Control و IoC Container ها وب سایت پرووید را استفاده کنید.

بسته ی آموزش ویدئویی پروژه محور ASP.NET Core MVC و EF Core

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی پروژه محور ASP.NET Core MVC و EF Core دیدن کنید.

در واقع در درون کلاس ConfigureServices شما Dependency های برنامه را با IoC Container ای که بصورت پیش فرض در ASP.NET Core وجود دارند را Register کرده و پس از آن می توانید به راحتی از آنها استفاده کنید. کافی است که از Dependency ها به عنوان پارامتر ورودی توابع سازنده و یا Constructor های یک کلاس پارامتری را بسازید. این موضوع باعث می شود که IoC Container موجود در ASP.NET Core بصورت خودکار این Dependency ها را تزریق یا اصطلاحاً Inject کند. در ASP.NET Core نام Dependency ها را Service می گذاریم. پس از این به بعد اگر کلمه ی Service را در جایی در رابطه با ASP.NET Core دیدید بدانید که منظور همان Dependency است.

به عنوان پارامتر ورودی متد ConfigureServices یک Object از نوع IServiceCollection را دریافت می کنیم که با استفاده از همین Object می توانیم به IoC Container دسترسی پیدا کنیم و Dependency ها را Register کنیم. در رابطه با این موضوع بطور مفصل در قسمت های بعد صحبت خواهیم کرد.

بررسی متد Configure

در درون متد Configure می توانیم Request Pipeline و یا خط لوله درخواست مربوط به برنامه را پیکر بندی کنیم. اینکار با استفاده از یک Object از نوع IApplicationBuilder توسط IoC Container موجودی که در ASP.NET Core وجود دارد انجام می شود.

در ASP.NET Core مفهوم Middleware Component ها مطرح شد که با استفاده از آن می توانیم خط لوله درخواست و یا همان Request Pipeline را پیکر بندی کنیم. این خط لوله به ازای هر Request اجرا می شود. با استفاده از این مکانیزم در ASP.NET Core فقط مجبور هستیم که Middleware Component هایی که به آنها نیاز داریم را مورد استفاده قرار دهیم که این خود موجب افزایش سرعت برنامه می شود. کدی که در قسمت زیر مشاهده می کنید محتوای متد Configure را نشان می دهد.

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

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

همانطور که در این کد می بینید سه پارامتر ورودی از Type های IApplicationBuilder و IHostingEnvironment و ILoggerFactory بطور پیش فرض وارد متد Configure می شوند. در بسته ی آموزش ویدئویی اینترفیس ها در سی شارپ به طور مفصل در رابطه با اهمیت اینترفیس ها صحبت کرده ایم. این Dependency ها و یا همان Service ها توسط IoC Container موجود در ASP.NET Core به دورن متد Configure تزریق می شوند.

در زمان اجرای برنامه ابتدا متد ConfigureServices و سپس متد Configure اجرا می شود. دلیل اجرا شدن ConfigureServices قبل از متد Configure این است که Dependency های مورد نظر را بتوانیم در IoC Container رجیستر کنیم و سپس در متد Configure از آنها استفاده کنیم.

در رابطه با متد Configure و Middleware Component مربوط به ASP.NET Core در قسمتهای بعد بطور مفصل صحبت خواهیم کرد.

امیدواریم که این آموزش از وبسایت پرووید نیز مورد توجه تمامی دوستان عزیز قرار گرفته باشد. از شما دعوت می‌کنیم که از دیگر آموزش های ما در رابطه با فریم ورک ASP.NET Core استفاده کنید. لیست کامل این آموزش ها را می توانید در پست مربوط به آموزش کامل توسعه وب اپلیکیشن با ASP.NET Core مشاهده کنید.

مرتضی گیتی
بدون نظر

ارسال نظر

نظر
نام
ایمیل
وب سایت