ASP.NET Core uygulamaları, cross-platform uygulamalar olduğu için, bildiğiniz üzere geliştirdiğimiz web uygulamalar için artık IIS gereksinimi zorunlu değil. ASP.NET Core tarafında geliştirilen yeni “host” modeli sayesinde, uygulamaların nasıl host edileceği, kod seviyesinden yönetilip, geliştirilebiliyor. Bu ASP.NET Core’un ilk versiyonundan beri olan oldukça güzel, kolay ve yeni kapılar açan bir özellik bildiğiniz üzere.
Kod seviyesinde, bu host özellikleri ASP.NET Core’un IWebHost ve IWebHostBuilder arayüzlerinden yaratılan sınıflar ile gerçekleşiyor. ASP.NET Core uygulamalarının ilk giriş noktası olan kodlarda, WebHost.CreateDefaultBuilder() eminim dikkatinizi çekmiştir.

Bu method varsayılan host modelini oluşturmak için ve arka tarafta bazı standart işlemleri yapıp, geliştiricilerin işini kolaylaştırmak için sunulmaktadır. Özetle WebHost.CreateDefaultBuilder() ile web uygulamamızın, varsayılan bazı özellikleri kendiliğinden tanımlanmaktadır.
GitHub’dan da bakarsanız, varsayılan bazı özellikleri zaten görebilirsiniz. Açık kaynak geliştirmeyi bu yüzden çok seviyorum 🙂

Loglama, konfigürasyon, uygulama root dizini, Kestrel kullanımı, IIS entegrasyonu ve “dependency-injection” gibi temel şeyler bu şekilde biz direkt çok kafa yormadan mümkün oluyor ve Web uygulamasının çalışması sağlanıyor. Daha basitçe özetlemek için; basit bir konsol uygulaması ile bir web uygulamasını ayağa kaldırmak ve çalıştırmak bu sayede mümkün olabiliyor. ASP.NET Core’un en büyük artı noktalarından biri de bu. Az önce dediğim temel şeyler aslında “cross-cutting concerns” olarak adlandırdığımız tüm yazılım sistemlerinde olabilecek konular.
Farklı tipteki uygulamalar için nasıl oluyor?
WebHost, doğal olarak sadece web uygulamaları için olan özellikler de içerdiğinden farklı tipte uygulamalarda bu tarz şeyleri kullanmak çok mümkün değildi. WebHost sınıfında olduğu için, HTTP dışında,herhangi farklı bir tipte protokolü host eden bir uygulama; mesela konsol, için bu şekilde “cross-cutting concerns” leri eklemek uğraştırıcı ya da mevcut şekilde pek mümkün değildi .NET Core’un mevcut versiyonlarında. .NET Core 2.1 ile beraber farklı uygulama tiplerinde de “host” yaklaşımı ile “cross-cutting” konularını kolayca geliştirmek mümkün oluyor.
Şu an Preview aşamasında olan, ama önümüzdeki günlerde RTM olacak .NET Core 2.1 ile hayatımıza yeni bir “host” modeli geliyor. HostBuilder, IHostedService, IHostBuilder gibi, arayüz ve sınıflar ile farklı uygulama tiplerini de geliştirmek ya da arka planda sürekli çalışan operasyonları servis olarak geliştirmek mümkün. Sadece “Web Uygulaması” yaklaşımı değil de biraz daha genel kullanıma imkanlar sunan bir servis yaklaşımı, .NET Core 2.1 ile geliştirici hayatımıza girecek.
Kısaca ve özetle farklı Network servisleri(TCP,UDP…vs.), Message Queue(MQ) servisleri ya da “arka plan işleri” gibi yapılarda da “cross-cutting” konularını kolayca geliştirmek mümkün olacak .NET Core 2.1 ile.
Devam…