.Net Core Sunucu Yapıları

09 Ekim 2020 2 dk okuma süresi 95 okunma

.Net Core bildiğiniz gibi crossplatform çalışabilen (Windows, Linux, Mac) bir yapıya dönüştürüldü. Bunu yapabilmek için de IIS, Apache, Ngnix, Lighttpd gibi diğer web sunucularına adapte olmak yerine kendi web sunucularını yapılandırdı. Bunlar Kestrel, .Net Core Modules ve Http.Sys isimli sunucu yapılarıdır. .Net Core ile bir web uygulaması oluşturduğunuzda Kestrel varsayılan olarak zaten kullanılır.

Kestrel Nedir?

Kestrel
Kestrel

Kestrel Reverse Proxy
Kestrel Reverse Proxy

Kestrel, .Net Core'un crossplatform çalışabilmesi için gerekli, https, http/2 (macOS haricinde), web socket ve unix socket destekleyen web sunucusudur. Kestrel tek başına kullanılabiliyorken aynı zamanda reverse proxy özelliği ile IIS, Apache veya Ngnix gibi web sunucuları ile de kullanılabiliyor. Ben henüz bu şekilde tecrübe etmediğim için çok detaylı bilmiyorum bu kısmı. Kestrel aynı zamanda olay odaklı (event-driven) ve asenkron yapı destekler. Bunun için de Node.JS gibi Libuv kütüphanelerini kullanmaktadır.

Kestrel startup.cs içerisinde konfigüre edilebilir. İçerisinde bir çok ayar bulunmaktadır. Bu ayarlara dökümantasyon üzerinden göz atabilirsiniz.

{
  "Kestrel": {
    "Limits": {
      "MaxConcurrentConnections": 100,
      "MaxConcurrentUpgradedConnections": 100
    },
    "DisableStringReuse": true
  }
}

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<KestrelServerOptions>(Configuration.GetSection("Kestrel"));
}

Kestrel Configuration
Kestrel Configuration


.Net Core Module Nedir?

IIS içinde bulunan doğal (native) bir pipeline'dır ve gelen isteği ASP.Net Core uygulamasına iletmekle görevlidir. 2 farklı barındırma şekli vardır. In-process veya Out-of-process. In-process IIS worker (w3wp.exe) içerisindedir. Out-Process ise Kestrel içerisindedir ve Http.Sys ile ortak çalışmaz. Asp.Net Core uygulaması varsayılan olarak In-Process host modelini kullanır.

In-process ve Out-of-process farklarını dökümantasyon üzerinden görebilirsiniz.


Http.Sys Nedir?

Kestrel'e alternatif bir web sunucusudur ve Kestrel'in desteklemediği bazı özellikleri de destekler. Bu özellikler Windows Authentication, port sharing, response caching ve websocket gibi özelliklerdir. Geri kalan özellik ve detaylara buradan bakabilirsiniz. Eğer IIS ile işiniz yoksa bu modeli kullanmanız tavsiye edilir çünkü IIS veya IIS Express ile birlikte çalışmaz.

Yazılarıma abone olmak ister misiniz?
Spam yapılmaz, sadece bildirim amaçlıdır. İstediğiniz zaman abonelikten çıkabilirsiniz.
İlginizi çekebilecek diğer yazılar.
Dotnet Core ile gelen requestin ajax olup olmadığını anlamamıza yarayan attribute

Webapi "Get exception Method not found: 'System.Collections.ObjectModel.Collection`1 System.Web.Http.HttpConfiguration.get_MessageHandlers()'" sorunu nasıl giderilir?

Önceki sürümlerde projeye çift tıkladığımızda ağaç yapısı şeklinde kırılımları açarken VS2019 ile birlikte otomatik olarak proje dosyasını açıyor. Neyseki bu alışkanlığı devam ettirebilmek için seçenek koymuşlar.