معرفی ConfigureServices و Configure در Asp.Net Core
در این مقاله میخواهیم به کاربرد های Configuer و ConfiguerService بپردازیم .
در Asp.Net Core
یک کلاس Startup
داریم که به محض شروع برنامه تمات پیکربندی ها انجام و پردازش می شود .
هنگامی که ما با استفاده از Dotnet CLI
یک برنامه وب ساده ایجاد میکنیم
این کد را دریافت خواهیم کرد :
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
اولین کد در متد ابتدا درخواست را پردازش میکند ، میتواند پاسخی را ایجاد کند یا درخواست را به بخش بعدی برنامه انتقال دهد .