.NET Core çapraz platform olduğundan, ASP.NET Core projeleri hem Windows hem de Linux'ta çalışabilir ve Windows'ta dağıtıldıysa, IIS'te veya doğrudan komut satırı üzerinden çalıştırılabilir; IIS hizmetlerinden bağımsız olarak, ASP.NET Core'da Kestrel konteynerlerinin yer alması nedeniyle.
IIS servislerine ASP.NET Core uygulamalarının nasıl dağıtılacağı hakkında daha fazla bilgi için aşağıdaki adrese başvurabilirsiniz:
ASP.NET Core, IIS'de konuşlandırılıyorSüreçteveSüreç Dışıİki barındırma modeli
Kaynaklar:
Bağlantı girişi görünür.
Bağlantı girişi görünür.
Süreç Içi Model
ASP.NET Core 3.0'dan beri,IIS'e dağıtılan tüm uygulamalar için varsayılan olarak süreç içi barındırma etkinleştirilmiş, web.config dosyası şöyle görünüyor:
görülebilirhostingModel="inprocess", süreç içi bir modelKestrel kullanılmaz, ancak bunun yerine IISHttpServer() kullanarak doğrudan IIS uygulama havuzunda barındırılan yeni bir web sunucusu uygular; bu, geleneksel ASP.NET'in IIS'e getirilmesine biraz benziyor.
Aşağıdaki diyagram, IIS, ASP.NET Core modülleri ile süreç içi barındırılan uygulamalar arasındaki ilişkiyi göstermektedir:
Web sitesine erişmeye çalışırken, aşağıdaki görselde gösterildiği gibi yanıt başlığı üzerinden sunucuyu görebilirsiniz:
Görev yöneticisi üzerinden süreçlere bakıldığında, aşağıdaki şekilde gösterildiği gibi sadece 2 işlem vardır:
Süreç dışı model
Bu model IIS, ters proxy olarak görev yapar ve bir talep aldığında, bunu ASP.NET Core uygulamalarına gömülü çapraz platform web sunucusu olan Kestrel hizmetine iletmelidir.
Aşağıdaki diyagram, IIS, ASP.NET Core modülleri ile süreç dışı barındırılan uygulamalar arasındaki ilişkiyi göstermektedir:
Web.config dosyasını aşağıdaki şekilde değiştiriyoruz:
Web sitesine bir tarayıcı üzerinden eriştiğimizde, yanıt başlığının sunucu değerinin Kestrel olduğunu görebiliriz; aşağıdaki şekilde gösterilmiştir:
Aynı anda görev yöneticisine baktığımda, aşağıdaki şekilde gösterildiği gibi 3 süreç olduğunu gördüm:
özet
InProcess yönetilen modelde istekler ve yanıtlar w3wp.exe veya IISExpress aracılığıyla sağlanırken, OutOfProcess çalışan sürecinde ise dotnet.exe InProcess yönetilen modelde tek bir web sunucusu kullanılırken, OutOfProcess yönetilen modelde iki web sunucusu kullanılabilir.
Yeni Süreç Içi modeli kullanmanın bariz nedeni, daha hızlı olması ve daha az kaynak kullanmasıdır.InProcess yönetilen model daha iyi performans sağlarÇünkü doğrudan IIS uygulama havuzunun sürecinde çalışır. İç HTTP trafiği ve ek yük yoktur, talepler hemen işlenir.
|