.Net Core Config File’ları

1)  .CSPROJ 

  .csproj çerisinde, kullanılan .net core versiyonunu ve nuget paketlerinin belirtildiği filedır. Aşağıda .csproj örneğinde  projemizin target frameworkünün netcoreapp3.1 olduğu belirtilmiş. Bunun yanında ItemGroup taglerinin içerisinde projede kullandığımız paketler yer almaktadır. Nuget package managerden indirdiğimiz her pakette package reference’lara bir yenisi daha otomatik olarak eklenir.

2) PROGRAM.CS

  Program.cs içerisine bakıldığı zaman console uygulamalarımızda gördüğümüz main metoda benzer çünkü .net core console mode applicationdır. Nasıl ki bir console uygulamasını başlatıldığında ilk çağrılan metot main metot ise .net core projemizin başladığı yer de program.cs içerisindeki Main metottur.

Program.cs içerisindeki main metodun amacı Builder pattern ile bir webHostBuilder nesnesi yaratmaktır. Bu nesneyi yaratırken de içerisine istediğimiz modülleri dahil edip en sonunda da build ederiz. 

Örneğin aşağıdaki webHostBuilder  ile nesne yaratırken içerisinde  UseKestrel(), UseContentRoot(Directory.GetCurrentDirectory()) , UseIISIntegration() , UseStartup() vs. gibi modüller dahil edilmiş. 

 public static void Main(string[] args)
 {
   var host = new WebHostBuilder()  
   .UseKestrel()
   .UseContentRoot(Directory.GetCurrentDirectory())
   .UseIISIntegration()   
   .UseStartup<Startup>()
   .UseApplicationInsights()
   .Build();

   host.Run();
 }

UseKestrel() :Uygulamanın hangi web server’da host edileceğidir. ASP.NET Core uygulamaları Kestel ve WebListener web server’larından biri üzerinde host edilebiliyor. Bu iki server ancak IIS, Nginx veya Apache gibi web server’ların arkasında durarak uygulamamızı host edebiliyor, bu ana web server’lar ise reverse proxy olarak kullanılıyor. Main metodunda UseKestrel() metodu ile uygulamanın Kestrel’de host edileceği belirlenmiş.

UseIISIntegration()  :UseIISIntegration()metodu ise IIS’e özel client certificate forwarding, sub application oluşturma gibi bazı reverse proxy özelliklerinin kullanılmasını sağlıyor. 

UseContentRoot(Directory.GetCurrentDirectory())  :Adından ve parametresinden anlaşılacağı üzere proje içeriklerinin ana dizininin neresi olduğunu belirliyor.

UseStartup() : Startup.cs modülünü projeye katar.


3) STARTUP.CS

Startup.cs host nesnemize program.cs içerisindeki Main metotta uygulamamıza dahil ettiğimiz, uygulamanın nasıl davranacağını belirleyen classtır. İçerisinde ConfigureServices ve  Configure adında  2  ana metot vardır. Bunların ne işe yaradığına bakacak olursak.

–  Configure metodu

Configure classı HTTP processing pipelini ayarlar.  Aldığımız her HTTP mesajı için bu mesajlara response tanımlayan ayarları içeren metottur.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole();

     if(env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
     }
  
      //şuan içi nher gelen requeste url header önemli değil hello world yazamn bir response ile cevap ver
      app.Run(async (context) => 
     {
            await context.Response.WriteAsync("Hello World!");
     });
}

– ConfigureServices metodu

.Net core’ın getirdiği bir diğer yenilik ise IOC için ekstra bir tool ya da pakete ihtiyaç duymaması. .Net içerisinde bazı servisler bizim için önceden register edilmiştir ancak  kendi yazdığımız custom servisleri register etmek için ise aşağıdaki gibi bir yol izleriz.
public void ConfigureServices(IServiceCollection services)
 {
   services.AddSingleton<IGreeting,Greeting>();
   services.AddTransient<IFoo, Foo>();
   services.Addscoped<IMoo, Moo>();
 }

.net core’da ıoc işlemi bu kadar basit 🙂 .  İsterseniz bir de .net core Ioc ile oluşturacağımız nesneler için tanımladığımız lifetime’lara bakalım.

AddSingleton<>() : İlgili nesnenin singleton olarak yalnızca 1 intancesinin olacağını her requestte aynı instance’ın döneceğini belirtir.
Addscoped<>()  :  İlgili nesnenin http requestinde yeni bir tane döneceğini belirtir. Scoped nesneleri aynı request içerisinde aynı, farklı requestler için farklıdır. Kısaca her istekde yaratılıp, dispose edilirler.
AddTransient<>() :  Nesneye yapılan her çağrıda yeni bir nesne oluşturulur. Her kontroller ve servis için yeni bir örnek sağlanır. Stateless nesneye ihtiyaç duyulan durumlarda kullanılır.

4) APPSETTINGS.JSON

  • Appsettings.json eski web.config fileımızın yerine gelmiş config fileımızdır. Web.config xml tabanlıyken appsettings json tabanlıdır.

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir