Asp.Net Core Startup Class

Asp.Net Core uygulamaları kural olarak Startup isimlendirme kuralına sahip bir Startup sınıfını kullanır.
 
Startup class ı , uygulama için gerekli servisleri barındırır aynı zamanda Reuqest Handling Pipeline içerir. ( Pipeline kelime anlamıyla boru hattına denk gelmektedir. Anlam olarak ise sıraya koyma gibi düşünülebilir. Burada pipeline ile ilgili açıklamayı bulabilirsiniz.)
 
İsteğe bağlı olarak , uygulamanın servislerini yapılandırmak için bir ConfigureServices methodu içerir. Servisler uygulama tarafından kullanılan componentlerdir. Klasik örnek olarak Log servisi verilebilir. Servisler uygulamanın işlevselliğini sağlayan yeniden kullanılabilir componentlerdir. Servisler ConfigureServices de register edilir ve uygulama genelinde DI veya ApplicationServices 
aracılığıyla kullanılır.
 
Uygulamanın request handling pipeline ı oluşturmak için Configure methodu içerir.
 
ConfigureServices ve Configure methodları uygulama çalıştığında Asp.Net Core runtime ı tarafından çağrılır.
 

 
Aşağıdaki kod bloğu Razor uygulamasından.
 
public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
            services.AddDbContext<RazorPagesMovieContext>(options =>
                    options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
        }
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
            }
            app.UseStaticFiles();
            app.UseRouting();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapRazorPages();
            });
        }
 
Startup class uygulamanın host u oluşturulduğunda belirtilir. Startup class ı genellikle host builder de WebHostBuilderExtensions.UseStartup<TStartup> methodu çağrılarak belirtilir.
 
public static void Main(string[] args)
        {
            var host = CreateHostBuilder(args).Build();
            using (var scope = host.Services.CreateScope())
            {
                var services = scope.ServiceProvider;
                try
                {
                    SeedData.Initialize(services);
                }
                catch (Exception ex)
                {
                    var logger = services.GetRequiredService<ILogger<Program>>();
                    logger.LogError(ex, "An error occured sending the DB.");
                }
            }
        }
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
 
Host , Startup class ının constructor ında kullanabileceği servisleri sağlar. Uygulama , ConfigureServices methoduyla ek servisler ekler. Hem host hem de uygulama servisleri Configure methodunda ve uygulama genelinde kullanılır.
 
Generic Host (IHostBuilder) kullanılırken Startup constructor una aşağıdaki servis tipleri inject edilebilir.
 
  • IWebHostEnvironment
  • IHostEnvironment
  • IConfiguration
Çoğu servis Configure methodu çağrılana kadar kullanılamaz.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.