معرفی ConfigureServices و Configure در Asp.Net Core

در این مقاله میخواهیم به کاربرد های Configuer و ConfiguerService بپردازیم .

در Asp.Net Core یک کلاس Startup داریم که به محض شروع برنامه تمات پیکربندی ها انجام و پردازش می شود .

هنگامی که ما با استفاده از Dotnet CLI یک برنامه وب ساده ایجاد میکنیم

dotnet new web

این کد را دریافت خواهیم کرد :

public class Startup
{
    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(IServiceCollection services)
    {
    }
    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.Run(async (context) =>
        {
            await context.Response.WriteAsync("Hello World!");
        });
    }
}

 معرفی ConfigureServices

اگر ConfigureServices درکلاس Startup ما وجود داشته باشد توسط میزبان وب (Web Host) فراخوانی می شود .

بنابراین سازنده Startup قبل از ConfigureServices اجرا می شود و معمولا ما Configuration و تنظیمات مربوط به Logging را در داخل سازنده خواهیم داشت .

ConfigureServices به طور پیش فرض دارا ی یک پارامتر از نوع IServiceCollection می باشد .

IServiceCollection یک Container است و افزودن Service به این Container باعث می شود تا آنها برای تزریق وابستگی (Dependency injction) در دسترس باشند و به این معنی است که ما میتوانیم آن سرویس را در هر نقطه از برنامه خود تزریق کنیم .

بیایید یک نمونه را ببینیم :

public void ConfigureServices(IServiceCollection services)
{
   services.AddSingleton<IEmailSender, EmailSender>();
}

اکنون ما میتوانیم از IEmailSender در هر کجا که بخواهیم استفاده کنیم برای مثال :

public HomeController(IEmailSender emailSender)
{ 
}

اکنون به نمونه ای از IEmailSender در کنترلر (Controller) خود دسترسی داریم .

همچنین میتوانیم نمونه ای از کلاس را مستقیما به DI اضافه کنیم .

public void ConfigureServices(IServiceCollection services)
{
   var helper = new Helper();
   services.AddSingleton(helper);
}

معرفی Configure

در داخل متد Configure ما میان افزاری (Middlware) را تنظیم که هر درخواست HTTP که به برنامه می آید را مدیریت (Handle) کنیم .

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

ترتیب در Configure

اولین کد در متد ابتدا درخواست را پردازش میکند ، میتواند پاسخی را ایجاد کند یا درخواست را به بخش بعدی برنامه انتقال دهد .