Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz. .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 9 sürümüne bakın.
Tom Dykstra, Steve Smith, Stephen Halter ve Chris Ross tarafından
Bir ASP.NET Core uygulaması, bir işlem içi HTTP sunucusu uygulamasıyla çalışır. Sunucu uygulaması HTTP isteklerini dinler ve bunları bir içinde oluşturulan HttpContext kümesi olarak uygulamaya sunar.
ASP.NET Core aşağıdakilerle birlikte gelir:
- Kestrel sunucu varsayılan, platformlar arası HTTP sunucusu uygulamasıdır. Kestrel en iyi performansı ve bellek kullanımını sağlar, ancak HTTP.sys'daki bazı gelişmiş özelliklere sahip değildir. Daha fazla bilgi için Windows sekmesindeki HTTP.sysKestrel
- IIS HTTP Sunucusu, IIS için işlem içi bir sunucudur .
- HTTP.sys sunucusu , HTTP.sys çekirdek sürücüsünü ve HTTP Sunucusu API'sini temel alan yalnızca Windows'a yönelik bir HTTP sunucusudur.
IIS veya IIS Express kullanırken uygulama şu durumlardan birini çalıştırır:
- IIS HTTP Sunucusu ile IIS çalışan işlemiyle ( işlem içi barındırma modeli) aynı işlemde. İşlem içi , önerilen yapılandırmadır.
- ile IIS çalışan işleminden (Kestrel) ayrı bir işlemde.
ASP.NET Çekirdek Modülü, IIS ile işlem içi IIS HTTP Sunucusu veya Kestrelarasında yerel IIS isteklerini işleyen yerel bir IIS modülüdür. Daha fazla bilgi için bkz. IIS için ASP.NET Çekirdek Modülü (ANCM).
Kestrel ve HTTP.sys
Kestrel HTTP.sys’ye göre aşağıdaki avantajlara sahiptir:
- Daha iyi performans ve bellek kullanımı.
- Platformlar arası
- Çeviklik, işletim sisteminden bağımsız olarak geliştirilir ve yama uygulanır.
- Programlı bağlantı noktası ve TLS yapılandırması
- PPv2 ve alternatif aktarımlar gibi protokollere olanak tanıyan genişletilebilirlik.
Http.Sys, kestrel'in sahip olmadığı aşağıdaki özelliklere sahip bir paylaşılan çekirdek modu bileşeni olarak çalışır:
- Bağlantı noktası paylaşma
- Çekirdek modu windows kimlik doğrulaması. Kestrel yalnızca kullanıcı modu kimlik doğrulamayı destekler.
- Kuyruk aktarımları aracılığıyla hızlı ara sunucu oluşturma
- Doğrudan dosya iletimi
- Yanıtları Önbelleğe Alma
Barındırma modelleri
Çeşitli barındırma modelleri mevcuttur:
Kestrel kendi kendine barındırma: Kestrel Web sunucusu, IIS veya HTTP.sys gibi başka bir dış web sunucusu gerektirmeden çalışır.
HTTP.sys kendi kendine barındırma, için Kestrelbir alternatiftir. Uygulama, Kestrel içinde bulunmayan özellikler gerektirmedikçe, HTTP.sys üzerinden Kestrel önerilir.
IIS işlem içi barındırma: ASP.NET Core uygulaması, IIS çalışan işlemiyle aynı işlemde çalışır. IIS işlem içi barındırma, isteklerin aynı makineye giden ağ trafiğini geri döndüren bir ağ arabirimi olan geri döngü bağdaştırıcısı üzerinden proksid olmadığı için IIS işlem içi barındırma, IIS işlem dışı barındırmaya göre geliştirilmiş performans sağlar. IIS, Windows İşlem Etkinleştirme Hizmeti (WAS) ile işlem yönetimini işler.
IIS işlem dışı barındırma: ASP.NET Core uygulamaları IIS çalışan işleminden ayrı bir işlemde çalıştırılır ve modül işlem yönetimini işler. İlk istek geldiğinde modül ASP.NET Core uygulaması için işlemi başlatır ve uygulama kapanırsa veya kilitlenirse uygulamayı yeniden başlatır. Bu temelde , Windows İşlem Etkinleştirme Hizmeti (WAS) tarafından yönetilen işlem içinde çalışan uygulamalarda görülen davranışla aynıdır. Ayrı bir işlem kullanmak aynı uygulama havuzundan birden fazla uygulama barındırmayı da sağlar.
Daha fazla bilgi için, aşağıdakilere bakın:
Kestrel
Kestrel sunucu varsayılan, platformlar arası HTTP sunucusu uygulamasıdır. Kestrel en iyi performansı ve bellek kullanımını sağlar, ancak HTTP.sys'daki bazı gelişmiş özelliklere sahip değildir. Daha fazla bilgi için bu belgedeki HTTP.syskarşılaştırması bölümüne bakın Kestrel .
Kestrel kullanın:
İnternet dahil olmak üzere doğrudan bir ağdan gelen istekleri işleyen bir uç sunucu olarak tek başına.
Internet Information Services (IIS), Nginx veya Apache gibi bir ters ara sunucu ile. Ters ara sunucu İnternet'ten HTTP istekleri alır ve bunları Kestrel adresine iletir.
Ters ara sunucu içeren veya içermeyen barındırma yapılandırması desteklenir.
Kestrel yapılandırma yönergeleri ve ters proxy yapılandırmasında Kestrel ne zaman kullanılacağı hakkında bilgi için Kestrel ASP.NET Core'da web sunucusuna bakın.
ASP.NET Core aşağıdakilerle birlikte gelir:
- Kestrel sunucusu varsayılan, platformlar arası HTTP sunucusudur.
- HTTP.sys sunucusu , HTTP.sys çekirdek sürücüsünü ve HTTP Sunucusu API'sini temel alan yalnızca Windows'a yönelik bir HTTP sunucusudur.
IIS veya IIS Express kullanırken uygulama, Kestrel çalışan işleminden (işlem dışı) ayrı bir işlemde çalışır.
ASP.NET Core uygulamaları IIS çalışan işleminden ayrı bir işlemde çalıştırıldığından, işlem yönetimini modül gerçekleştirir. İlk istek geldiğinde modül ASP.NET Core uygulaması için işlemi başlatır ve uygulama kapanırsa veya kilitlenirse uygulamayı yeniden başlatır. Bu temelde , Windows İşlem Etkinleştirme Hizmeti (WAS) tarafından yönetilen işlem içinde çalışan uygulamalarda görülen davranışla aynıdır.
Aşağıdaki diyagramda IIS, ASP.NET Core Modülü ve işlem dışında barındırılan uygulama arasındaki ilişki gösterilir:
Web'den çekirdek modundaki HTTP.sys sürücüsüne istekler gelir. Sürücü istekleri web sitesinin yapılandırılmış bağlantı noktası üzerinden (genellikle 80 (HTTP) veya 443 (HTTPS)) IIS'ye yönlendirir. Modül istekleri uygulama için 80 veya 443 olmayan rastgele bir bağlantı noktası üzerinden Kestrel'e iletir.
Modülü, başlangıçta bir ortam değişkeni aracılığıyla bağlantı noktasını belirtir ve IIS Tümleştirme Ara Yazılımı sunucuyu üzerinde http://localhost:{port}
dinleyecek şekilde yapılandırıyor. Ek denetimler gerçekleştirilir ve modülden kaynaklanmayan istekler reddedilir. Modül HTTPS iletmeyi desteklemez, dolayısıyla IIS tarafından HTTPS üzerinden alınan istekler bile HTTP üzerinden iletilir.
Kestrel isteği modülden aldıktan sonra, istek ASP.NET Core ara yazılım işlem hattına gönderilir. Ara yazılım işlem hattı isteği işler ve bir HttpContext
örneği olarak uygulamanın mantığına geçirir. IIS Tümleştirmesi tarafından eklenen ara yazılım, isteği Kestrel'e iletme işlemini gerçekleştirmek için şemayı, uzak IP'yi ve yol tabanını güncelleştirir. Uygulamanın yanıtı IIS'ye geri geçirilir ve IIS de bunu geriye, isteği başlatan HTTP istemcisine gönderir.
IIS ve ASP.NET Core Modülü yapılandırma kılavuzu için aşağıdaki konulara bakın:
Nginx ile Kestrel
Linux üzerinde Nginx'i ters proxy sunucu olarak nasıl kullanacağınız hakkında bilgi için Kestrel bakınız: Nginx ile Linux'ta ASP.NET Core'u Barındırma.
HTTP.sys
ASP.NET Core uygulamaları Windows üzerinde çalıştırılıyorsa, HTTP.sys, Kestrel için bir alternatiftir. Uygulama, Kestrel içinde bulunmayan özellikler gerektirmedikçe, HTTP.sys üzerinden Kestrel önerilir. Daha fazla bilgi için bkz. ASP.NET Core'da web sunucusu uygulamasınıHTTP.sys.
HTTP.sys yalnızca iç ağa açık uygulamalar için de kullanılabilir.
HTTP.sys yapılandırma kılavuzu için bkz. ASP.NET Core'daHTTP.sys web sunucu uygulaması.
ASP.NET Core sunucu altyapısı
IApplicationBuilder yönteminde bulunan Startup.Configure
, ServerFeatures türünün IFeatureCollection özelliğini ortaya çıkarır.
Kestrel ve HTTP.sys, IServerAddressesFeature öğesinin her biri için yalnızca tek bir özellik sunar, ancak farklı sunucu uygulamaları ek işlevsellik gösterebilir.
IServerAddressesFeature
, sunucu uygulamasının çalışma zamanında hangi bağlantı noktasına bağlı olduğunu bulmak için kullanılabilir.
Özel sunucular
Yerleşik sunucular uygulamanın gereksinimlerini karşılamıyorsa, özel bir sunucu uygulaması oluşturulabilir. .NET için Açık Web Arabirimi (OWIN) kılavuzu, Nowin tabanlı bir uygulamanın nasıl yazılacağını gösterir. Yalnızca uygulamanın kullandığı özellik arabirimleri uygulama gerektirir, ancak en azından IHttpRequestFeature ve IHttpResponseFeature öğelerinin desteklenmesi gerekir.
Sunucu başlatma
Tümleşik Geliştirme Ortamı (IDE) veya düzenleyici uygulamayı başlattığında sunucu başlatılır:
- Visual Studio: Başlatma profilleri , uygulamayı ve sunucuyu IIS Express/ASP.NET Core Modülü veya konsol ile başlatmak için kullanılabilir.
- Visual Studio Code: Uygulama ve sunucu, CoreCLR hata ayıklayıcısını etkinleştiren Omnisharp tarafından başlatılır.
Uygulamayı projenin klasöründeki bir komut isteminden başlatırken , dotnet run uygulamayı ve sunucuyu başlatır (Kestrel ve yalnızca HTTP.sys). Yapılandırma -c|--configuration
seçeneği tarafından belirtilir ve bu seçenek Debug
(varsayılan) veya Release
olarak ayarlanır.
Bir launchSettings.json
dosyası, Visual Studio gibi araçlarda yerleşik olarak bulunan bir hata ayıklayıcı ile dotnet run
veya uygulaması başlatılırken yapılandırma sağlar. Başlatma profilleri bir launchSettings.json
dosyasında varsa, --launch-profile {PROFILE NAME}
komutuyla dotnet run
seçeneğini kullanın veya Visual Studio'da profili seçin. Daha fazla bilgi için bkz. dotnet çalıştırması ve .NET Core dağıtım paketlemesi.
HTTP/2 desteği
HTTP/2 , aşağıdaki dağıtım senaryolarında ASP.NET Core ile desteklenir:
- Kestrel
- İşletim Sistemi
- Windows Server 2016/Windows 10 veya üzeri†
- OpenSSL 1.0.2 veya üzeri yüklü Linux (örneğin, Ubuntu 16.04 veya üzeri)
- macOS 10.15 veya üzeri
- Hedef çerçeve: .NET Core 2.2 veya üzeri
- İşletim Sistemi
-
HTTP.sys
- Windows Server 2016/Windows 10 veya üzeri
- Hedef çerçeve: HTTP.sys dağıtımları için geçerli değildir.
-
IIS (işlem içi)
- Windows Server 2016/Windows 10 veya üzeri; IIS 10 veya üzeri
- Hedef çerçeve: .NET Core 2.2 veya üzeri
-
IIS (işlem dışı)
- Windows Server 2016/Windows 10 veya üzeri; IIS 10 veya üzeri
- Genel kullanıma yönelik uç sunucu bağlantıları HTTP/2 kullanır, ancak Kestrel için ters ara sunucu bağlantısı HTTP/1.1 kullanır.
- Hedef çerçeve: IIS işlem dışı dağıtımları için geçerli değildir.
†Kestrel, Windows Server 2012 R2 ve Windows 8.1 üzerinde HTTP/2 için sınırlı desteğe sahiptir. Bu işletim sistemlerinde kullanılabilen desteklenen TLS şifreleme paketlerinin listesi sınırlı olduğundan destek sınırlıdır. TLS bağlantılarının güvenliğini sağlamak için Eliptik Eğri Dijital İmza Algoritması (ECDSA) kullanılarak oluşturulan bir sertifika gerekebilir.
- Kestrel
- İşletim Sistemi
- Windows Server 2016/Windows 10 veya üzeri†
- OpenSSL 1.0.2 veya üzeri yüklü Linux (örneğin, Ubuntu 16.04 veya üzeri)
- HTTP/2, gelecek bir sürümde macOS'ta desteklenecektir.
- Hedef çerçeve: .NET Core 2.2 veya üzeri
- İşletim Sistemi
-
HTTP.sys
- Windows Server 2016/Windows 10 veya üzeri
- Hedef çerçeve: HTTP.sys dağıtımları için geçerli değildir.
-
IIS (işlem içi)
- Windows Server 2016/Windows 10 veya üzeri; IIS 10 veya üzeri
- Hedef çerçeve: .NET Core 2.2 veya üzeri
-
IIS (işlem dışı)
- Windows Server 2016/Windows 10 veya üzeri; IIS 10 veya üzeri
- Genel kullanıma yönelik uç sunucu bağlantıları HTTP/2 kullanır, ancak Kestrel için ters ara sunucu bağlantısı HTTP/1.1 kullanır.
- Hedef çerçeve: IIS işlem dışı dağıtımları için geçerli değildir.
†Kestrel, Windows Server 2012 R2 ve Windows 8.1 üzerinde HTTP/2 için sınırlı desteğe sahiptir. Bu işletim sistemlerinde kullanılabilen desteklenen TLS şifreleme paketlerinin listesi sınırlı olduğundan destek sınırlıdır. TLS bağlantılarının güvenliğini sağlamak için Eliptik Eğri Dijital İmza Algoritması (ECDSA) kullanılarak oluşturulan bir sertifika gerekebilir.
- Kestrel
- İşletim Sistemi
- Windows Server 2016/Windows 10 veya üzeri†
- OpenSSL 1.0.2 veya üzeri yüklü Linux (örneğin, Ubuntu 16.04 veya üzeri)
- HTTP/2, gelecek bir sürümde macOS'ta desteklenecektir.
- Hedef çerçeve: .NET Core 2.2 veya üzeri
- İşletim Sistemi
-
HTTP.sys
- Windows Server 2016/Windows 10 veya üzeri
- Hedef çerçeve: HTTP.sys dağıtımları için geçerli değildir.
-
IIS (işlem içi)
- Windows Server 2016/Windows 10 veya üzeri; IIS 10 veya üzeri
- Hedef çerçeve: .NET Core 2.2 veya üzeri
-
IIS (işlem dışı)
- Windows Server 2016/Windows 10 veya üzeri; IIS 10 veya üzeri
- Genel kullanıma yönelik uç sunucu bağlantıları HTTP/2 kullanır, ancak Kestrel için ters ara sunucu bağlantısı HTTP/1.1 kullanır.
- Hedef çerçeve: IIS işlem dışı dağıtımları için geçerli değildir.
†Kestrel, Windows Server 2012 R2 ve Windows 8.1 üzerinde HTTP/2 için sınırlı desteğe sahiptir. Bu işletim sistemlerinde kullanılabilen desteklenen TLS şifreleme paketlerinin listesi sınırlı olduğundan destek sınırlıdır. TLS bağlantılarının güvenliğini sağlamak için Eliptik Eğri Dijital İmza Algoritması (ECDSA) kullanılarak oluşturulan bir sertifika gerekebilir.
-
HTTP.sys
- Windows Server 2016/Windows 10 veya üzeri
- Hedef çerçeve: HTTP.sys dağıtımları için geçerli değildir.
-
IIS (işlem dışı)
- Windows Server 2016/Windows 10 veya üzeri; IIS 10 veya üzeri
- Genel kullanıma yönelik uç sunucu bağlantıları HTTP/2 kullanır, ancak Kestrel için ters ara sunucu bağlantısı HTTP/1.1 kullanır.
- Hedef çerçeve: IIS işlem dışı dağıtımları için geçerli değildir.
HTTP/2 bağlantısı Application-Layer Protokol Anlaşması (ALPN) ve TLS 1.2 veya üzerini kullanmalıdır. Daha fazla bilgi için sunucu dağıtım senaryolarınızla ilgili konulara bakın.
Kurumsal web uygulaması desenleri
Güvenilir, güvenli, performanslı, test edilebilir ve ölçeklenebilir ASP.NET Core uygulaması oluşturma yönergeleri için bkz. Kurumsal web uygulaması desenleri. Desenleri uygulayan eksiksiz bir üretim kalitesinde örnek web uygulaması mevcuttur.
Ek kaynaklar
ASP.NET Core