Nedir Bu Kestrel Web Sunucusu ? Artısı – Eksisi ve Daha Fazlası

Ben ise kendilerini .Net ortamının Tomcat'i olarak adlandırıyorum.

0 7.007

Bu makaleyi yazmamın sebebi Performance Comparison of Java EE and ASPNET Core adlı üniversite makalesi oldu. Kristiāns Kronis, Marina Uhanova tarafından yazılmıştı.Kendilerine bu çalışma için  teşekkür ediyorum. Bu makaleyi okuyunca Kestrel hakkında bir seri yazmak istedim.

Kestrel .net core ile ortaya çıkan platform bağımsızılığın bir sonucudur diyebiliriz. Bildiğiniz üzere asp.net uygulamaları IIS bağımlı olarak yazılıyordu. Daha sonra bağımsız ortamlara taşınsa da her sunucu için özel ayarlar gerektiriyordu. İşte Kestrel sistemin gerçekten bağımsız olabilmesi için ortaya çıkan bir sonuçtur. Ben ise kendilerini .Net ortamının Tomcat’i olarak adlandırıyorum.

Kestrel, herhangi bir platformda ASP.NET uygulamalarını barındırmak için kullanılan açık kaynaklı kodlu, olaya dayalı ve  eşzamansız,  I / O tabanlı bir sunucudur. Sunucu Windows , Linux veya Mac  üzerinde komut satırı ile kullanabilir bir arayüz ile geliyor.

Kestrel Yapısı

Kestrel sunucusunun yapısını incelediğimizde yeni Asp.Net uygulamaları desteklediğini göreceğiz. Event-driven ve asenkron yapıyı da desteklemesi için node.js tarafında kullanılan Libuv kütüphanelerini kullanmaktadır.

Hepimizin bildiği üzere uygulamalar genellikle insan davranışlarına cevap vermek için yazılır. Olay odaklı(event-driven) programlama ile de bu davranışları program içerisinde yönetiriz. İşte bu olayan dolayı SYS de oluşan çağrılar .net core programcıkları tarafından yürütülür.

Kestrel, olay döngüsü  ve I/O tabanlı  geri çağrım (callback) bildirimlerini kullanmamızı sağlar. Libuv ise , OS’den olayların toplanmasını ve izlenmesini yönetir. Dolayısıyla Kestrel, I / O işlemleri için libuv kullanırken çoklu olay döngülerinin çalıştırılmasını destekler.

Görüldüğü üzere çok yalın bir sistemdir. Bundan dolayı standart bir web sunucusunun desteklediği çoğu şeyi desteklemez.Örnek olarak URL rewrites ve  GZip sıkıştırması verilebilir. Ama bunların olmaması onu gerçekten de çok hızlı bir sunucu haline getirmiştir.

Kestrel’in önerilen kullanımı aşağıda göreceğiniz gibi ön tarafında IIS Nginx,Apache vb. bir sunucu şeklindedir.

Kısa bir IIS Kestrel kaşılaştırması

Sunucu IIS Kestrel
Platform Support Windows Windows/Linux/Mac
Static Files Evet Evet
HTTP Access Logs Evet Hayır
Port Sharing / Multiple apps* Evet Hayır
SSL Certificates Evet Internal**
Windows Authentication Evet Hayır
Management Console Evet Hayır
Process Activation (start it up) Evet Hayır
Application Initialization (warm it up) Evet Hayır
Configuration API Evet Hayır
Request Filtering & Limits Evet Hayır
IP & Domain Restrictions Evet Hayır
HTTP Redirect Rules Evet Hayır
WebSocket Protocol Evet Orta Katman
Response Output Caching Evet Hayır
Compression Opsiyonel Opsiyonel
FTP Server Evet Hayır

 

Uygulama Geliştiriciler Önemli Notlar

  • Gerçekten Hızlı
  • ASP.NET 5 için kullanılması amaçlanmıştır.
  • Tam özellikli bir web sunucusu değildir. ISS, NGNIX  vb. gibi düşünemezsiniz.
  • Windows üzerinde IIS veya Linux üzerinde NGNIX gibi daha özellikli bir web sunucusunun arkasından çalıştırmanızı öneriyorum.
  • HttpPlatformHandler’ı kullanarak IIS’nin arkasında çalışır.
  • ASP.NET 5 projeleriniz için desteklemeniz sayesinde projeniz desteklenen platformlardan herhangi birinde geliştiriciler tarafından kolayca çalıştırılabilir.
  • .NET çerçevesinde https destekler ve .NET Core için geliştirilmiştir.

 

Kaynakça;

docs.microsoft.com

stackify.com

Performance Comparison of Java EE and ASPNET Core

Email adresiniz yayınlanmayacaktır.