Http.sys, IIS bağımsız olmasını istediğiniz asp.net core uygulamarı için kullanılan windows-only bir web server dır. Asp.Net core 1.x versiyonlarında WebListener olarak karşımızdayken 2.x ile birlikte HTTP.sys olarak değiştirildi.
Kestrel'e alternatif olmakla birlikte kestrel'de bulunmayan bazı feature'lara da sahip. Bunlardan bazıları;
- Windows Authentication
- Port sharing
- HTTPS with SNI
- HTTP/2 over TLS (Windows 10 or later)
- Direct file transmission
- Response caching
- WebSockets (Windows 8 or later)
- Supported Windows versions:
- Windows 7 or later => Windows Server 2008 R2 or later
Asp.Net Core uygulamaları için Kestrel best choise olarak önerilsede yukarıda da belirttiğimiz gibi sahip olduğu bazı özellikler bakımından kestrel'in önüne geçebilmektedir. Uygulama doğrudan HTTP.sys üzerinde built olduğundan kestrel'de olduğu gibi bazı attack'alrdan korunmak adına bir reverse proxy server'a ihtiyaç duyulmamaktadır ve sunucunun güvenliğini ve ölçeklenebilirliğini yönetebildiğinden bir çok saldırı türüne karşı uygulamayı koruyabilmektedir.
Kullanım olarak bakacak olursak;
Program.cs içerisinde WebHost konfigurasyonlarını tanımlarken uygulamamızın HttpSys üzerinde run edileceğini aşağıdaki gibi belirtmemiz gerekmekte. Bunun için UseHttpSys metodunu kullanacağız. Bu metoda erişemezseniz nuget üzerinden Microsoft.AspNetCore.Server.HttpSys paketini install etmeniz gerekmekte.
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseHttpSys(options =>
{
options.UrlPrefixes.Add("http://localhost:4440");
options.Authentication.Schemes = AuthenticationSchemes.NTLM;
options.Authentication.AllowAnonymous = false;
options.MaxRequestBodySize = 30000000;
options.MaxConnections = 100;
});
}
Uygulama HTTPsys server üzerinde 4440 portunda çalışacaktır. Uygulamayı run edebilmek için vs'da default IISExpress olan run profile'ını launchsettings.json dosyasında da tanımlı olan profile'ı aşağıdaki resimde olduğu gibi HTTPsysServer yapıp run diyelim.
Run dedikten sonra uygulama ilgili bir kaç bilginin bulunduğu bir console ekranı açılacaktır. Browser üzerinden belirtmiş olduğumuz adrese giderek uygulamaya kolayca erişebiliriz.
Yazının başında da belirttiğimiz gibi, HTTPsys, Asp.Net Core 2.0 ile birlikte IIS bağımsız uygulamalar geliştirmek istediğimizde Kestrel'e alternatif olarak karşımıza çıkmakta ve sahip olduğu bazı özellikler bakımından Kestrel'in yerini de alabilmekte. Tek can sıkıcı noktası Windows-only olsada performans ve security açısından oldukça faydalı bir option olarak seçenekler arasında bulunmakta.
HTTPsys ile ilgili daha detaylı bilgilere buradan ulaşabilirsiniz.