ASP.NET Core 3.0'daki yenilikler

Bu makalede, ASP.NET Core 3.0'daki en önemli değişiklikler, ilgili belgelerin bağlantıları ile vurgulanır.

Blazor

Blazor , .NET ile etkileşimli istemci tarafı web kullanıcı arabirimi oluşturmak için ASP.NET Core'da yeni bir çerçevedir:

  • C# kullanarak zengin etkileşimli UI'ler oluşturun.
  • .NET'te yazılmış sunucu tarafı ve istemci tarafı uygulama mantığını paylaşın.
  • Mobil tarayıcılar da dahil olmak üzere geniş tarayıcı desteği için kullanıcı arabirimini HTML ve CSS olarak işleyin.

Blazor desteklenen çerçeve senaryoları:

  • Yeniden kullanılabilir kullanıcı arabirimi bileşenleri (Razor bileşenler)
  • İstemci tarafı yönlendirme
  • Bileşen düzenleri
  • Bağımlılık ekleme desteği
  • Formlar ve doğrulama
  • Razor Sınıf kitaplıklarında Razor bileşenleri sağlama
  • JavaScript ile birlikte çalışma

Daha fazla bilgi için bkz . ASP.NET Core Blazor.

Blazor Server

Blazor bileşen işleme mantığını kullanıcı arabirimi güncelleştirmelerinin uygulanmasından ayırır. Blazor Server bir ASP.NET Core uygulamasında sunucudaki Razor bileşenlerini barındırmak için destek sağlar. Kullanıcı arabirimi güncelleştirmeleri bir SignalR bağlantısı üzerinden işlenir. Blazor Server ASP.NET Core 3.0'da desteklenir.

Blazor WebAssembly (Önizleme)

Blazor uygulamalar, WebAssembly tabanlı bir .NET çalışma zamanı kullanılarak doğrudan tarayıcıda da çalıştırılabilir. Blazor WebAssembly önizleme aşamasındadır ve ASP.NET Core 3.0'da desteklenmez . Blazor WebAssembly ASP.NET Core'un gelecek bir sürümünde desteklenecektir.

Razor bileşenleri

Blazor uygulamalar bileşenlerden oluşturulur. Bileşenler, sayfa, iletişim kutusu veya form gibi kullanıcı arabiriminin (UI) bağımsız öbekleridir. Bileşenler, ui işleme mantığını ve istemci tarafı olay işleyicilerini tanımlayan normal .NET sınıflarıdır. JavaScript olmadan zengin etkileşimli web uygulamaları oluşturabilirsiniz.

içindeki Blazor bileşenler genellikle HTML ve C# değerlerinin doğal bir karışımı olan söz dizimi kullanılarak Razor yazılmıştır. Razorbileşenleri, her ikisinin de kullandığı RazorSayfalar ve MVC görünümlerine benzerRazor. İstek yanıtı modelini temel alan sayfalardan ve görünümlerden farklı olarak, bileşenler özellikle kullanıcı arabirimi oluşturma işlemi için kullanılır.

gRPC

gRPC:

  • Popüler, yüksek performanslı bir RPC (uzaktan yordam çağrısı) çerçevesidir.

  • API geliştirme için önceden belirlenmiş bir sözleşme öncelikli yaklaşım sunar.

  • Aşağıdaki gibi modern teknolojileri kullanır:

    • Aktarım için HTTP/2.
    • Arabirim açıklama dili olarak Protokol Arabellekleri.
    • İkili serileştirme biçimi.
  • Aşağıdakiler gibi özellikler sağlar:

    • Kimlik Doğrulaması
    • Çift yönlü akış ve akış denetimi.
    • İptal ve zaman aşımları.

ASP.NET Core 3.0'daki gRPC işlevselliği şunları içerir:

  • Grpc.AspNetCore: gRPC hizmetlerini barındırmaya yönelik bir ASP.NET Core çerçevesi. ASP.NET Core'da gRPC günlük kaydı, bağımlılık ekleme (DI), kimlik doğrulaması ve yetkilendirme gibi standart ASP.NET Core özellikleriyle tümleşir.
  • Grpc.Net.Client: .NET Core için bilinen HttpClientüzerine oluşturulan bir gRPC istemcisi.
  • Grpc.Net.ClientFactory: ile HttpClientFactorygRPC istemci tümleştirmesi.

Daha fazla bilgi için bkz . .NET üzerinde gRPC'ye genel bakış.

SignalR

Geçiş yönergeleri için bkz. Kodu güncelleştirmeSignalR. SignalRşimdi ON iletilerini serileştirmek/seri durumdan çıkarmak JSiçin kullanırSystem.Text.Json. Tabanlı seri hale getiriciyi geri yükleme yönergeleri için bkz . Newtonsoft.Json'aNewtonsoft.Jsongeçiş yapma.

için SignalRJavaScript ve .NET İstemcileri'ne otomatik yeniden bağlantı desteği eklendi. Varsayılan olarak, istemci hemen yeniden bağlanmayı dener ve gerekirse 2, 10 ve 30 saniye sonra yeniden dener. İstemci başarıyla yeniden bağlanırsa yeni bir bağlantı kimliği alır. Otomatik yeniden bağlantı kabul edilir:

const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chathub")
    .withAutomaticReconnect()
    .build();

Yeniden bağlantı aralıkları, milisaniye tabanlı süreler dizisi geçirilerek belirtilebilir:

.withAutomaticReconnect([0, 3000, 5000, 10000, 15000, 30000])
//.withAutomaticReconnect([0, 2000, 10000, 30000]) The default intervals.

Yeniden bağlantı aralıklarının tam denetimi için özel bir uygulama geçirilebilir.

Yeniden bağlantı son yeniden bağlanma aralığından sonra başarısız olursa:

  • İstemci, bağlantının çevrimdışı olduğunu düşünüyor.
  • İstemci yeniden bağlanmayı denemeyi durdurur.

Yeniden bağlanma girişimleri sırasında, yeniden bağlanma girişiminde bulunuluyor olduğunu kullanıcıya bildirmek için uygulama kullanıcı arabirimini güncelleştirin.

Bağlantı kesildiğinde kullanıcı arabirimi geri bildirimi sağlamak için istemci SignalR API'si aşağıdaki olay işleyicilerini içerecek şekilde genişletilmiştir:

  • onreconnecting: Geliştiricilere kullanıcı arabirimini devre dışı bırakma veya kullanıcılara uygulamanın çevrimdışı olduğunu bildirme fırsatı verir.
  • onreconnected: Bağlantı yeniden kurulduktan sonra geliştiricilere kullanıcı arabirimini güncelleştirme fırsatı verir.

Bağlanmaya çalışırken kullanıcı arabirimini güncelleştirmek için aşağıdaki kod kullanılır onreconnecting :

connection.onreconnecting((error) => {
    const status = `Connection lost due to error "${error}". Reconnecting.`;
    document.getElementById("messageInput").disabled = true;
    document.getElementById("sendButton").disabled = true;
    document.getElementById("connectionStatus").innerText = status;
});

Bağlantıdaki kullanıcı arabirimini güncelleştirmek için aşağıdaki kod kullanılır onreconnected :

connection.onreconnected((connectionId) => {
    const status = `Connection reestablished. Connected.`;
    document.getElementById("messageInput").disabled = false;
    document.getElementById("sendButton").disabled = false;
    document.getElementById("connectionStatus").innerText = status;
});

SignalR 3.0 ve üzeri, bir hub yöntemi yetkilendirme gerektirdiğinde yetkilendirme işleyicilerine özel bir kaynak sağlar. Kaynak bir örneğidir HubInvocationContext. şunları HubInvocationContext içerir:

  • HubCallerContext
  • Çağrılan hub yönteminin adı.
  • Hub yöntemine yönelik bağımsız değişkenler.

Azure Active Directory aracılığıyla birden çok kuruluşta oturum açmaya izin veren bir sohbet odası uygulamasının aşağıdaki örneğini göz önünde bulundurun. Microsoft hesabı olan herkes sohbette oturum açabilir, ancak yalnızca sahibi olan kuruluş üyeleri kullanıcıları yasaklayabilir veya kullanıcıların sohbet geçmişlerini görüntüleyebilir. Uygulama belirli kullanıcıların belirli işlevlerini kısıtlayabilir.

public class DomainRestrictedRequirement :
    AuthorizationHandler<DomainRestrictedRequirement, HubInvocationContext>,
    IAuthorizationRequirement
{
    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
        DomainRestrictedRequirement requirement,
        HubInvocationContext resource)
    {
        if (context.User?.Identity?.Name == null)
        {
            return Task.CompletedTask;
        }

        if (IsUserAllowedToDoThis(resource.HubMethodName, context.User.Identity.Name))
        {
            context.Succeed(requirement);
        }

        return Task.CompletedTask;
    }

    private bool IsUserAllowedToDoThis(string hubMethodName, string currentUsername)
    {
        if (hubMethodName.Equals("banUser", StringComparison.OrdinalIgnoreCase))
        {
            return currentUsername.Equals("bob42@jabbr.net", StringComparison.OrdinalIgnoreCase);
        }

        return currentUsername.EndsWith("@jabbr.net", StringComparison.OrdinalIgnoreCase));
    }
}

Yukarıdaki kodda, DomainRestrictedRequirement özel IAuthorizationRequirementolarak hizmet eder. HubInvocationContext Kaynak parametresi geçirildiği için iç mantık şunları yapabilir:

  • Hub'ın çağrıldığı bağlamı inceleyin.
  • Kullanıcının tek tek Hub yöntemlerini yürütmesine izin verme konusunda kararlar alın.

Tek tek Hub yöntemleri, kodun çalışma zamanında denetleyebileceği ilke adıyla işaretlenebilir. İstemciler tek tek Hub yöntemlerini çağırmaya çalışırken işleyici DomainRestrictedRequirement çalışır ve yöntemlere erişimi denetler. Denetimlerin erişim şekline DomainRestrictedRequirement bağlı olarak:

  • Oturum açan tüm kullanıcılar yöntemini çağırabilir SendMessage .
  • Yalnızca e-posta @jabbr.net adresiyle oturum açmış kullanıcılar kullanıcıların geçmişlerini görüntüleyebilir.
  • Kullanıcıları yalnızca bob42@jabbr.net sohbet odasından yasaklayabilir.
[Authorize]
public class ChatHub : Hub
{
    public void SendMessage(string message)
    {
    }

    [Authorize("DomainRestricted")]
    public void BanUser(string username)
    {
    }

    [Authorize("DomainRestricted")]
    public void ViewUserHistory(string username)
    {
    }
}

İlkenin oluşturulması şunları DomainRestricted içerebilir:

  • içinde Startup.cs, yeni ilkeyi ekler.
  • Özel DomainRestrictedRequirement gereksinimi parametre olarak sağlayın.
  • DomainRestricted Yetkilendirme ara yazılımına kaydolma.
services
    .AddAuthorization(options =>
    {
        options.AddPolicy("DomainRestricted", policy =>
        {
            policy.Requirements.Add(new DomainRestrictedRequirement());
        });
    });

SignalRhub'lar Endpoint Routing kullanır. SignalR hub bağlantısı önceden açıkça yapılmıştı:

app.UseSignalR(routes =>
{
    routes.MapHub<ChatHub>("hubs/chat");
});

Önceki sürümde geliştiricilerin çeşitli yerlerde denetleyicileri, Razor sayfaları ve hub'ları bağlaması gerekiyordu. Açık bağlantı, neredeyse aynı yönlendirme kesimlerinden oluşan bir dizi sonuç sağlar:

app.UseSignalR(routes =>
{
    routes.MapHub<ChatHub>("hubs/chat");
});

app.UseRouting(routes =>
{
    routes.MapRazorPages();
});

SignalR 3.0 hub'ları uç nokta yönlendirme yoluyla yönlendirilebilir. Uç nokta yönlendirmesi ile, genellikle tüm yönlendirme içinde UseRoutingyapılandırılabilir:

app.UseRouting(routes =>
{
    routes.MapRazorPages();
    routes.MapHub<ChatHub>("hubs/chat");
});

ASP.NET Core 3.0 SignalR eklendi:

İstemciden sunucuya akış. İstemciden sunucuya akışla, sunucu tarafı yöntemleri veya IAsyncEnumerable<T>ChannelReader<T>örneklerini alabilir. Aşağıdaki C# örneğinde Hub'daki UploadStream yöntemi istemciden bir dize akışı alacaktır:

public async Task UploadStream(IAsyncEnumerable<string> stream)
{
    await foreach (var item in stream)
    {
        // process content
    }
}

.NET istemci uygulamaları, yukarıdaki Hub yönteminin UploadStreamstream bağımsız değişkeni olarak bir IAsyncEnumerable<T> veya ChannelReader<T> örneği geçirebilir.

for Döngü tamamlandıktan ve yerel işlev çıktıktan sonra akış tamamlama gönderilir:

async IAsyncEnumerable<string> clientStreamData()
{
    for (var i = 0; i < 5; i++)
    {
        var data = await FetchSomeData();
        yield return data;
    }
}

await connection.SendAsync("UploadStream", clientStreamData());

JavaScript istemci uygulamaları, yukarıdaki Hub yönteminin SignalRstreamSubject bağımsız değişkeni UploadStream için öğesini (veya Rx JS Konusunu) kullanır.

let subject = new signalR.Subject();
await connection.send("StartStream", "MyAsciiArtStream", subject);

JavaScript kodu, yakalanan ve sunucuya gönderilmeye hazır dizeleri işlemek için yöntemini kullanabilir subject.next .

subject.next("example");
subject.complete();

Önceki iki kod parçacığı gibi kod kullanılarak gerçek zamanlı akış deneyimleri oluşturulabilir.

Yeni JSON serileştirmesi

ASP.NET Core 3.0 artık ON serileştirmesi için JSvarsayılan olarak kullanırSystem.Text.Json:

  • Zaman uyumsuz olarak ON'ı okur ve yazar JS.
  • UTF-8 metni için iyileştirilmiştir.
  • Genellikle değerinden daha Newtonsoft.Jsonyüksek performans.

ASP.NET Core 3.0'a Json.NET eklemek için bkz . Newtonsoft.Json tabanlı JSON biçim desteği ekleme.

Yeni Razor yönergeler

Aşağıdaki listede yeni Razor yönergeler yer alır:

  • @attribute: Yönerge, @attribute verilen özniteliği oluşturulan sayfanın veya görünümün sınıfına uygular. Örneğin, @attribute [Authorize].
  • @implements: yönergesi @implements , oluşturulan sınıf için bir arabirim uygular. Örneğin, @implements IDisposable.

IdentityServer4, web API'leri ve SPA'ları için kimlik doğrulama ve yetkilendirmeyi destekler

ASP.NET Core 3.0, web API yetkilendirmesi desteğini kullanarak Tek Sayfalı Uygulamalarda (SPA) kimlik doğrulaması sunar. Kullanıcıların kimliğini doğrulamak ve depolamak için ASP.NET CoreIdentity, OpenID Bağlan uygulamak için Server4 ile Identitybirleştirilir.

IdentityServer4, ASP.NET Core 3.0 için bir OpenID Bağlan ve OAuth 2.0 çerçevesidir. Aşağıdaki güvenlik özelliklerini etkinleştirir:

  • Hizmet Olarak Kimlik Doğrulaması (AaaS)
  • Birden çok uygulama türü üzerinde çoklu oturum açma/kapatma (SSO)
  • API'ler için erişim denetimi
  • Federasyon Ağ Geçidi

Daha fazla bilgi için BkzIdentity. Server4 belgeleri veya SPA'lar için kimlik doğrulaması ve yetkilendirme.

Sertifika ve Kerberos kimlik doğrulaması

Sertifika kimlik doğrulaması şunları gerektirir:

  • Sunucuyu sertifikaları kabul etmek için yapılandırma.
  • içinde kimlik doğrulama ara yazılımını Startup.Configureekleme.
  • içinde sertifika kimlik doğrulama hizmetini Startup.ConfigureServicesekleme.
public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(
        CertificateAuthenticationDefaults.AuthenticationScheme)
            .AddCertificate();
    // Other service configuration removed.
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseAuthentication();
    // Other app configuration removed.
}

Sertifika kimlik doğrulaması seçenekleri şunlardır:

  • Otomatik olarak imzalanan sertifikaları kabul edin.
  • Sertifika iptalini denetleyin.
  • Teslim edilen sertifikanın içinde doğru kullanım bayrakları olup olmadığını denetleyin.

Sertifika özelliklerinden varsayılan bir kullanıcı sorumlusu oluşturulur. Kullanıcı sorumlusu, sorumlunun desteklenmesine veya değiştirilmesine olanak tanıyan bir olay içerir. Daha fazla bilgi için bkz . ASP.NET Core'da sertifika kimlik doğrulamasını yapılandırma.

Windows Kimlik Doğrulaması Linux ve macOS'a genişletildi. Önceki sürümlerde Windows Kimlik Doğrulaması IIS ve HTTP.sys ile sınırlıydı. ASP.NET Core 3.0'da, Kestrel Windows etki alanına katılmış konaklar için Windows, Linux ve macOS üzerinde Negotiate, Kerberos ve NTLM kullanma özelliği vardır. Kestrelbu kimlik doğrulama düzenlerinin desteği Microsoft.AspNetCore.Authentication.Negotiate NuGet paketi tarafından sağlanır. Diğer kimlik doğrulama hizmetlerinde olduğu gibi, kimlik doğrulama uygulamasını geniş olarak yapılandırın ve ardından hizmeti yapılandırın:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
        .AddNegotiate();
    // Other service configuration removed.
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseAuthentication();
    // Other app configuration removed.
}

Konak gereksinimleri:

  • Windows konaklarında, uygulamayı barındıran kullanıcı hesabına Hizmet Asıl Adları (SPN) eklenmelidir.
  • Linux ve macOS makineleri etki alanına katılmalıdır.

Daha fazla bilgi için bkz . ASP.NET Core'da Windows Kimlik Doğrulamasını Yapılandırma.

Şablon değişiklikleri

Web kullanıcı arabirimi şablonları (Razor Sayfalar, denetleyici ve görünümler içeren MVC) aşağıdakiler kaldırılmıştır:

Angular şablonu Angular 8 kullanacak şekilde güncelleştirildi.

Sınıf Razor kitaplığı (RCL) şablonu varsayılan olarak bileşen geliştirme olarak Razor kullanılır. Visual Studio'daki yeni şablon seçeneği, sayfalar ve görünümler için şablon desteği sağlar. Komut kabuğundaki şablondan RCL oluştururken (dotnet new razorclasslib --support-pages-and-views seçeneğini geçirin--support-pages-and-views.

Genel Konak

ASP.NET Core 3.0 şablonları, ASP.NET Core'da .NET Genel Ana Bilgisayarı kullanır. Kullanılan önceki sürümler WebHostBuilder. .NET Core Genel Ana Bilgisayarının (HostBuilder) kullanılması, ASP.NET Core uygulamalarının web'e özgü olmayan diğer sunucu senaryolarıyla daha iyi tümleştirilmesini sağlar. Daha fazla bilgi için bkz . HostBuilder, WebHostBuilder'ın yerini alır.

Konak yapılandırması

ASP.NET Core 3.0'ın yayımlanmasından önce, ön ekli ASPNETCORE_ ortam değişkenleri Web Konağı'nın konak yapılandırması için yüklendi. 3.0'da, AddEnvironmentVariables ile konak yapılandırması CreateDefaultBuilderiçin ön ekli DOTNET_ ortam değişkenlerini yüklemek için kullanılır.

Başlangıç oluşturucu ekleme değişiklikleri

Genel Konak yalnızca oluşturucu ekleme için Startup aşağıdaki türleri destekler:

Tüm hizmetler yine de doğrudan yöntemine Startup.Configure bağımsız değişken olarak eklenebilir. Daha fazla bilgi için bkz . Genel Konak Başlangıç oluşturucu eklemesini kısıtlar (aspnet/Duyurular #353).

Kestrel

  • Kestrel yapılandırması, Genel Ana Bilgisayara geçiş için güncelleştirildi. 3.0'da, Kestrel tarafından ConfigureWebHostDefaultssağlanan web ana bilgisayar oluşturucusunda yapılandırılır.
  • Bağlan Ion Bağdaştırıcıları, ASP.NET Core işlem hattındaki HTTP Ara Yazılımına benzer ancak alt düzey bağlantılar için Bağlan ion Ara Yazılımı'ndan Kestrel kaldırılmıştır ve bu ara yazılımla değiştirilmiştir.
  • Aktarım Kestrel katmanı, içinde Connections.Abstractionsgenel arabirim olarak kullanıma sunuldu.
  • Üst bilgiler ve fragmanlar arasındaki belirsizlik, sonundaki üst bilgiler yeni bir koleksiyona taşınarak çözülmüştür.
  • gibi HttpRequest.Body.Readzaman uyumlu G/Ç API'leri, uygulama kilitlenmelerine neden olan iş parçacığı yetersizliğiyle ilgili yaygın bir kaynaktır. 3.0'da varsayılan AllowSynchronousIO olarak devre dışıdır.

Daha fazla bilgi için bkz . ASP.NET Core 2.2'den 3.0'a geçiş.

HTTP/2 varsayılan olarak etkin

HTTP/2, HTTPS uç noktaları için içinde Kestrel varsayılan olarak etkindir. İŞLETIM sistemi tarafından desteklendiğinde IIS veya HTTP.sys için HTTP/2 desteği etkinleştirilir.

İstek üzerine EventCounters

Barındırma EventSource, Microsoft.AspNetCore.Hostinggelen isteklerle ilgili aşağıdaki yeni EventCounter türleri yayar:

  • requests-per-second
  • total-requests
  • current-requests
  • failed-requests

Uç nokta yönlendirme

Çerçevelerin (örneğin, MVC) ara yazılımla iyi çalışmasına olanak tanıyan Uç Nokta Yönlendirmesi iyileştirilmiştir:

  • Ara yazılım ve uç noktaların sırası, 'nin istek işleme işlem hattında Startup.Configureyapılandırılabilir.
  • Uç noktalar ve ara yazılım, Sistem Durumu Denetimleri gibi diğer ASP.NET Temel tabanlı teknolojilerle iyi bir şekilde oluşturur.
  • Uç noktalar hem ara yazılımda hem de MVC'de CORS veya yetkilendirme gibi bir ilke uygulayabilir.
  • Filtreler ve öznitelikler denetleyicilerdeki yöntemlere yerleştirilebilir.

Daha fazla bilgi için, bkz. ASP.NET Core’da Yönlendirme.

Durum Denetimleri

Sistem Durumu Denetimleri, Genel Ana Bilgisayar ile uç nokta yönlendirme kullanır. içinde uç nokta URL'si Startup.Configureveya göreli yolu ile uç nokta oluşturucusunu çağırın MapHealthChecks :

app.UseEndpoints(endpoints =>
{
    endpoints.MapHealthChecks("/health");
});

Sistem Durumu Denetimleri uç noktalarının yapabilecekleri:

  • İzin verilen bir veya daha fazla konak/bağlantı noktası belirtin.
  • Yetkilendirme gerektir.
  • CORS gerektir.

Daha fazla bilgi için aşağıdaki makaleleri inceleyin:

HttpContext'te Kanallar

Artık API'yi kullanarak istek gövdesini okumak ve yanıt gövdesini System.IO.Pipelines yazmak mümkündür. özelliği, HttpRequest.BodyReader istek gövdesini okumak için kullanılabilecek bir PipeReader sağlar. HttpResponse.BodyWriter özelliği, yanıt gövdesini yazmak için kullanılabilecek bir PipeWriter sağlar. HttpRequest.BodyReader akışın HttpRequest.Body bir analogudur. HttpResponse.BodyWriter akışın HttpResponse.Body bir analogudur.

IIS'de geliştirilmiş hata raporlama

IIS'de ASP.NET Core uygulamalarını barındırırken oluşan başlangıç hataları artık daha zengin tanılama verileri üretir. Bu hatalar, uygun olduğunda yığın izlemeleri içeren Windows Olay Günlüğü'ne bildirilir. Ayrıca tüm uyarılar, hatalar ve işlenmeyen özel durumlar Windows Olay Günlüğü'ne kaydedilir.

Çalışan Hizmeti ve Çalışan SDK'sı

.NET Core 3.0, yeni Çalışan Hizmeti uygulama şablonunu tanıtır. Bu şablon, .NET Core'da uzun süre çalışan hizmetler yazmak için bir başlangıç noktası sağlar.

Daha fazla bilgi için bkz.

İletilen Üst Bilgiler Ara Yazılım geliştirmeleri

ASP.NET Core'un önceki sürümlerinde, bir Azure Linux'a veya IIS dışında herhangi bir ters ara sunucu arkasında dağıtıldığında çağrılması UseHsts ve UseHttpsRedirection sorunlu olması. Önceki sürümlerin düzeltmesi Linux ve IIS dışı ters proxy'ler için şemayı iletme bölümünde belgelenmiştir.

Bu senaryo ASP.NET Core 3.0'da düzeltildi. Konak, ortam değişkeni olarak ayarlandığında trueİletilen Üst Bilgiler Ara Yazılımını ASPNETCORE_FORWARDEDHEADERS_ENABLED etkinleştirir. ASPNETCORE_FORWARDEDHEADERS_ENABLED , kapsayıcı görüntülerimizde olarak ayarlanır true .

Performans iyileştirmeleri

ASP.NET Core 3.0, bellek kullanımını azaltan ve aktarım hızını geliştiren birçok geliştirme içerir:

  • Kapsamlı hizmetler için yerleşik bağımlılık ekleme kapsayıcısı kullanılırken bellek kullanımında azalma.
  • Ara yazılım senaryoları ve yönlendirme dahil olmak üzere çerçeve genelinde ayırmalarda azalma.
  • WebSocket bağlantıları için bellek kullanımında azalma.
  • HTTPS bağlantıları için bellek azaltma ve aktarım hızı geliştirmeleri.
  • Yeni iyileştirilmiş ve tamamen zaman uyumsuz JSON serileştiricisi.
  • Form ayrıştırmada bellek kullanımı ve aktarım hızı geliştirmelerinde azalma.

ASP.NET Core 3.0 yalnızca .NET Core 3.0 üzerinde çalışır

ASP.NET Core 3.0 itibarıyla .NET Framework artık desteklenen bir hedef çerçeve değildir. .NET Framework'ün hedeflendiği projeler .NET Core 2.1 LTS sürümünü kullanarak tam olarak desteklenen bir şekilde devam edebilir. ASP.NET Core 2.1.x ile ilgili paketlerin çoğu, .NET Core 2.1 için üç yıllık LTS döneminin ötesinde süresiz olarak desteklenecektir.

Geçiş bilgileri için bkz . Kodunuzu .NET Framework'ten .NET Core'a taşıma.

ASP.NET Core paylaşılan çerçevesini kullanma

Microsoft.AspNetCore.App meta paketinde yer alan ASP.NET Core 3.0 paylaşılan çerçevesi artık proje dosyasında açık <PackageReference /> bir öğe gerektirmez. Proje dosyasında SDK kullanılırken paylaşılan çerçeveye Microsoft.NET.Sdk.Web otomatik olarak başvurulur:

<Project Sdk="Microsoft.NET.Sdk.Web">

ASP.NET Core paylaşılan çerçevesinden kaldırılan derlemeler

ASP.NET Core 3.0 paylaşılan çerçevesinden kaldırılan en önemli derlemeler şunlardır:

Paylaşılan çerçeveden kaldırılan derlemelerin tam listesi için bkz . Derlemeler Microsoft.AspNetCore.App 3.0'dan kaldırılıyor. Bu değişikliğin motivasyonu hakkında daha fazla bilgi için bkz . 3.0'da Microsoft.AspNetCore.App hataya neden olan değişiklikler ve ASP.NET Core 3.0'da gelen değişikliklere ilk bakış.