ASP.NET Core 3,0 ' deki yenilikler

bu makalede, ASP.NET Core 3,0 ' deki en önemli değişiklikler ilgili belgelerin bağlantılarıyla vurgulanır.

Blazor

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

  • JavaScript yerine C# kullanarak zengin etkileşimli uo 'lar oluşturun.
  • .NET ' te yazılmış sunucu tarafı ve istemci tarafı uygulama mantığını paylaşabilirsiniz.
  • Mobil tarayıcılar dahil olmak üzere geniş tarayıcı desteği için Kullanıcı arabirimini HTML ve CSS olarak işleme.

Blazor çerçeve tarafından desteklenen 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 Razor Sınıf kitaplıklarında bileşenleri sağlama
  • JavaScript ile birlikte çalışma

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

Blazor Server

Blazor Kullanıcı arabirimi güncelleştirmelerinin uygulanma, bileşen işleme mantığını ayırır. Blazor ServerASP.NET Core uygulamasında sunucuda barındırma bileşenleri için destek sağlar Razor . Kullanıcı Arabirimi güncelleştirmeleri bir bağlantı üzerinden işlenir SignalR . Blazor ServerASP.NET Core 3,0 ' de desteklenir.

Blazor WebAssembly Önizle

Blazor uygulamalar, bir WebAssembly tabanlı .NET çalışma zamanı kullanarak doğrudan tarayıcıda da çalıştırılabilir. Blazor WebAssemblyönizlemededir ve ASP.NET Core 3,0 ' de desteklenmez. Blazor WebAssemblyASP.NET Core gelecek bir sürümünde desteklenecektir.

Razor bileşenleri

Blazor uygulamalar bileşenlerden oluşturulmuştur. Bileşenler, bir sayfa, iletişim kutusu veya form gibi kullanıcı arabirimi (UI) için kendi içinde yer alan öbeklerdir. Bileşenler, Kullanıcı arabirimi 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.

İçindeki bileşenler Blazor genellıkle Razor HTML ve C# ' nin doğal bir karışımı olan sözdizimi kullanılarak yazılır. Razor bileşenler, Razor her ikisi de kullandıkları sayfalara ve MVC görünümlerine benzerdir Razor . Bir istek-yanıt modelini temel alan sayfaların ve görünümlerin aksine, bileşenler Kullanıcı arabirimi oluşturmayı işlemek için kullanılır.

gRPC

GRPC:

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

  • , API geliştirmeye yönelik olarak yapılan bir sözleşmenin ilk yaklaşımını sağlar.

  • , Gibi modern teknolojiler kullanır:

    • Taşıma için HTTP/2.
    • Arabirim açıklaması dili olarak protokol arabellekleri.
    • İkili serileştirme biçimi.
  • Şöyle özellikler sağlar:

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

ASP.NET Core 3,0 ' deki grpc işlevselliği şunları içerir:

  • grpc. aspnetcore: grpc hizmetlerini barındırmak için bir ASP.NET Core çerçevesi. grpc on ASP.NET Core, günlüğe kaydetme, bağımlılık ekleme (dı), kimlik doğrulama ve yetkilendirme gibi standart ASP.NET Core özelliklerle tümleştirilir.
  • GRPC .net. Client: .NET Core için tanıdık bir GRPC istemcisi HttpClient .
  • GRPC .net. ClientFactory: GRPC istemcisi ile tümleştirme HttpClientFactory .

Daha fazla bilgi için bkz. .NET üzerinde gRPC'ye giriş.

SignalR

Bkz. geçiş yönergeleri için SignalR kodu güncelleştirme . SignalR Artık System.Text.Json JSON iletilerini seri hale getirmek/seri durumdan çıkarmak için kullanır. Tabanlı seri hale getirici 'yi geri yükleme yönergeleri için bkz. Newtonsoft.Js'ye geçme Newtonsoft.Json .

İçin JavaScript ve .NET Istemcilerinde SignalR , otomatik yeniden bağlanma için destek eklenmiştir. Varsayılan olarak, istemci hemen yeniden bağlanmaya çalışır 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ğlanma kabul etme:

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

Yeniden bağlantı aralıkları bir dizi milisaniyelik tabanlı süre geçirerek 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.

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

  • İstemci, bağlantının çevrimdışı olduğunu varsayar.
  • İstemci yeniden bağlanmayı denemeyi durduruyor.

Yeniden bağlanma denemeleri sırasında, kullanıcıya yeniden bağlantı denenmekte olduğunu bildirmek için uygulama kullanıcı arabirimini güncelleştirin.

Bağlantı kesildiğinde UI geri bildirimi sağlamak için, SignalR istemci API 'si aşağıdaki olay işleyicilerini içerecek şekilde genişletilir:

  • onreconnecting: Geliştiricilere Kullanıcı arabirimini devre dışı bırakma veya uygulamanın çevrimdışı olduğunu bilmesini sağlayan bir fırsat sağlar.
  • onreconnected: Bağlantı kurulduktan sonra geliştiricilere Kullanıcı arabirimini güncelleştirme fırsatı verir.

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

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;
});

Aşağıdaki kod, onreconnected bağlantıda Kullanıcı arabirimini güncelleştirmek için kullanır:

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 . HubInvocationContextŞunları içerir:

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

Azure Active Directory aracılığıyla birden çok kuruluşun oturum açmasına izin veren bir sohbet odası uygulamasının aşağıdaki örneğini göz önünde bulundurun. Microsoft hesabı herkes sohbet için oturum açabilir, ancak yalnızca sahip olunan kuruluşun üyeleri kullanıcıları veya kullanıcıların sohbet geçmişlerini görüntüleyebilir. Uygulama belirli kullanıcılardan belirli işlevleri 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 işlevi görür IAuthorizationRequirement . HubInvocationContextKaynak parametresi geçirildiğinden iç mantık şunları yapabilir:

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

Tek tek hub yöntemleri, çalışma zamanında kodun denetlediği ilkenin adıyla işaretlenebilir. İstemciler tek tek hub yöntemlerini çağırmayı denediğinden, DomainRestrictedRequirement işleyici çalışır ve yöntemlere erişimi denetler. DomainRestrictedRequirementDenetimlerin erişim yöntemine göre:

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

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

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

İlkeyi oluşturmak DomainRestricted şunları içerebilir:

  • Başlangıç. cs' de yeni ilke ekleniyor.
  • Özel DomainRestrictedRequirement gereksinimi parametre olarak belirtin.
  • DomainRestrictedYetkilendirme ara yazılımı ile kaydetme.
services
    .AddAuthorization(options =>
    {
        options.AddPolicy("DomainRestricted", policy =>
        {
            policy.Requirements.Add(new DomainRestrictedRequirement());
        });
    });

SignalR Hub uç nokta yönlendirmekullanır. SignalR Hub bağlantısı daha önce açık olarak yapıldı:

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

Önceki sürümde, geliştiriciler, Razor Sayfalar ve hub 'ları çeşitli yerlerde bağlamak için gereklidir. Açık bağlantı, neredeyse aynı bir dizi yönlendirme segmentine neden olur:

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

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

SignalR 3,0 hub 'ları, uç nokta yönlendirme aracılığıyla yönlendirilebilir. Uç nokta yönlendirme ile, genellikle tüm yönlendirme ' de yapılandırılabilir UseRouting :

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 örneklerinden birini alabilir IAsyncEnumerable<T> ChannelReader<T> . Aşağıdaki C# örneğinde, UploadStream Hub'daki yöntemi istemciden dize akışı alır:

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

.NET istemci uygulamaları, bir veya IAsyncEnumerable<T> örneğini ChannelReader<T> yukarıdaki Hub stream yönteminin bağımsız değişkeni olarak UploadStream kullanabilir.

Döngü for tamamlandıktan ve yerel işlev çıkışlandı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 bağımsız değişkeni için (veya SignalR Subject RxJS stream UploadStream Konusu) kullanır.

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

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

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

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

Yeni JSON serileştirme

ASP.NET Core 3.0 artık System.Text.Json JSON serileştirme için varsayılan olarak kullanır:

  • JSON'u zaman uyumsuz olarak okur ve yazar.
  • UTF-8 metni için iyileştirilmiştir.
  • Genellikle daha yüksek Newtonsoft.Json performans.

Json.NET 3.0'ASP.NET Core eklemek için bkz. Newtonsoft.Jstabanlı JSON biçimi desteği ekleme.

Yeni Razor yönergeler

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

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

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

ASP.NET Core 3.0, web API yetkilendirmesi desteğini kullanarak Tek Sayfalı Uygulamalarda (SPA) kimlik doğrulaması sunar. ASP.NET Core Identitykullanıcıların kimliklerini doğrulama ve depolama için, OpenID kimlik doğrulamasını uygulamak için Identity Server4 ile Bağlan.

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

  • 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 Bkz. Identity 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ğrulaması ara yazılımı Startup.Configure ekleme.
  • sertifika kimlik doğrulama hizmetini 'ye Startup.ConfigureServices ekleme.
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 şunları yapma olanağını içerir:

  • Otomatik olarak imzalanan sertifikaları kabul etme.
  • Sertifika iptali olup denetleme.
  • Proffered sertifikasının içinde doğru kullanım bayrakları olup o sertifikayı kontrol edin.

Varsayılan kullanıcı sorumlusu, sertifika özelliklerinden oluşturulur. Kullanıcı sorumlusu, sorumlu için ek veya değiştirme sağlayan bir olay içerir. Daha fazla bilgi için bkz. ASP.NET Core 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 ile sınırlıydı veHTTP.sys. ASP.NET Core 3.0'da, etki alanına katılmış konaklar için Windows, Linux ve macOS üzerinde Kestrel Negotiate, Kerberosve NTLMWindows özelliği vardır. KestrelBu kimlik doğrulama düzenlerinin desteği Microsoft.AspNetCore.Authentication.Negotiate NuGet sağlanır. Diğer kimlik doğrulama hizmetlerde olduğu gibi, kimlik doğrulama uygulamasını geniş bir şekilde yapılandırarak hizmeti de yapılandırabilirsiniz:

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ın uygulamayı barındıran kullanıcı hesabına Hizmet Asıl Adları (SPN) eklenmiş olması gerekir.
  • Linux ve macOS makinelerinin etki alanına katılmış olması gerekir.
    • Web işlemi için SPN'ler oluşturul gerekir.
    • Ana bilgisayar makinesi üzerinde anahtar sekmesi dosyaları oluşturularak yapılandırıldı.

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ümlere sahip MVC) aşağıdakiler kaldırılmıştır:

  • Onay cookie kullanıcı arabirimi artık dahil değildir. ASP.NET Core cookie 3.0 şablonuyla oluşturulmuş bir uygulamada onay özelliğini etkinleştirmek için bkz. Genel Veri Koruma Yönetmeliği 'de Genel Veri Koruma Yönetmeliği (GDPR) desteği ASP.NET Core .
  • Betiklere ve ilgili statik varlıklara artık CDN'ler kullanmak yerine yerel dosyalar olarak başvuruldu. Daha fazla bilgi için bkz. Betiklere ve ilgili statik varlıklara artık geçerli ortamı (dotnet/AspNetCore.Docsn) temel alan CDN'lerkullanmak #14350.

Uygulama Angular 8'i kullanmak Angular güncelleştirildi.

Sınıf Razor kitaplığı (RCL) şablonu varsayılan olarak bileşen Razor geliştirmeyi varsayılan olarak kullanır. Yeni bir şablon seçeneği Visual Studio ve görünümler için şablon desteği sağlar. Şablondan bir komut kabuğunda RCL oluştururken seçeneğini --support-pages-and-views () dotnet new razorclasslib --support-pages-and-views iletirsiniz.

Genel Konak

3.0 ASP.NET Core şablonları ASP.NET Core .NET genel ana bilgisayarı kullanır. Önceki sürümlerde WebHostBuilder kullanılmıştır. .NET Core Genel Ana Bilgisayarı ' nın ( ) kullanımı, ASP.NET Core web'e özgü olmayan diğer sunucu senaryolarıyla daha HostBuilder iyi tümleştirme sağlar. Daha fazla bilgi için bkz. HostBuilder, WebHostBuilder'ın yerini almaktadır.

Konak yapılandırması

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

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

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

Tüm hizmetler yine de yöntemine bağımsız değişkenler olarak doğrudan eklemeye devam Startup.Configure edilebilir. Daha fazla bilgi için bkz. Genel Ana Bilgisayar Başlangıç oluşturucu eklemeyi kısıtlar (aspnet/Duyurular #353).

Kestrel

  • Kestrel Genel Ana Bilgisayar'a geçiş için yapılandırma güncelleştirildi. 3.0'da, Kestrel tarafından sağlanan web ana bilgisayar oluşturucusu üzerinde ConfigureWebHostDefaults yapılandırılır.
  • bağlantı bağdaştırıcıları kaldırıldı ve yerine Bağlantı Ara Yazılımı değiştirildi. Bu, ASP.NET Core işlem hattında HTTP Ara Yazılımı'ASP.NET Core Kestrel alt düzey bağlantılar için kullanılır.
  • Aktarım Kestrel katmanı içinde genel arabirim olarak ortaya Connections.Abstractions çıktı.
  • Üst bilgiler ve tanıtımlar arasındaki belirsizlik, sondaki üst bilgiler yeni bir koleksiyona taşınarak çözüldü.
  • gibi zaman uyumlu I/O API'leri, uygulama kilitlenmesine neden olan yaygın iş HttpRequest.Body.Read parçacığı açlık kaynağıdır. 3.0'da AllowSynchronousIO varsayılan olarak devre dışıdır.

Daha fazla bilgi için bkz. ASP.NET Core 2,2 ' den 3,0 ' e geçiş yapın.

HTTP/2 varsayılan olarak etkindir

HTTP/2, HTTPS uç noktaları için Kestrel 'de varsayılan olarak etkindir. IIS veya sanal HTTP.sys HTTP/2 desteği, işletim sistemi tarafından destek etkinleştirildiğinde etkinleştirilir.

İstek üzerine EventCounters

Barındırma EventSource, Microsoft.AspNetCore.Hosting , gelen isteklerle ilgili aşağıdaki yeni türleri EventCounter yalıtır:

  • 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 sağlayan Uç Nokta Yönlendirme özelliği geliştirilmiştir:

  • Ara yazılım ve uç noktaların sırası, 'nin istek işleme işlem hattında Startup.Configure yapılandırılabilir.
  • Uç noktalar ve ara yazılım, Sistem Durumu Denetimleri gibi ASP.NET Core tabanlı diğer teknolojilerle iyi bir şekilde bir şekilde bir oluşur.
  • Uç noktalar cors veya yetkilendirme gibi bir ilkeyi hem ara yazılımda hem de MVC'de gerçekleştirebilirsiniz.
  • Filtreler ve öznitelikler denetleyicilerde yöntemlere yerleştirilebilirsiniz.

Daha fazla bilgi için bkz. ASP.NET Core'de yönlendirme.

Sistem durumu denetimleri

Sistem Durumu Denetimleri, Genel Ana Bilgisayar ile uç nokta yönlendirmeyi kullanır. içinde, Startup.ConfigureMapHealthChecks nokta URL'si veya göreli yolu ile uç nokta oluşturucusu üzerinde çağrısı:

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

Sistem Durumu Denetimleri uç noktaları şunları sağlar:

  • İ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 üzerindeki kanallar

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

IIS 'de geliştirilmiş hata raporlama

ııs 'de ASP.NET Core uygulamalar barındırırken başlatma hataları artık daha zengin tanılama verileri oluşturuyor. bu hatalar, uygulanabilir her yerde yığın izlemelerle Windows olay günlüğüne bildirilir. ayrıca, tüm uyarılar, hatalar ve işlenmemiş ö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 üstbilgiler ara yazılımı geliştirmeleri

önceki ASP.NET Core sürümlerinde, UseHsts UseHttpsRedirection bir Azure Linux 'a dağıtılırken veya ııs dışında herhangi bir ters proxy 'nin arkasında sorun. Önceki sürümlere yönelik düzeltmeler, Linux ve IIS olmayan ters proxy 'lerin düzenini iletmebölümünde belgelenmiştir.

bu senaryo ASP.NET Core 3,0 ' de düzeltilmiştir. Ortam değişkeni olarak ayarlandığında, ana bilgisayar Iletilen üstbilgiler ara yazılımını sağlar ASPNETCORE_FORWARDEDHEADERS_ENABLED true . ASPNETCORE_FORWARDEDHEADERS_ENABLED , true kapsayıcı görüntülerimizde olarak ayarlanır.

Performans geliştirmeleri

ASP.NET Core 3,0, bellek kullanımını azaltan ve üretilen işi geliştiren birçok geliştirme içerir:

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

ASP.NET Core 3,0 yalnızca .net Core 3,0 üzerinde çalışır

ASP.NET Core 3,0 itibariyle, .NET Framework artık desteklenen bir hedef çerçeve değildir. .NET Framework hedefleyen projeler .net Core 2,1 lts sürümünükullanarak tam olarak desteklenen bir biçimde 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 Core 'a .NET Framework.

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

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

<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 çıkarılan en önemli derlemeler şunlardır:

Paylaşılan çerçeveden kaldırılan derlemelerin tamamen listesi için, bkz. Microsoft.AspNetCore.App 3,0 öğesinden kaldırılan derlemeler. bu değişiklik için mosyon hakkında daha fazla bilgi için bkz. 3,0 içinde Microsoft.AspNetCore.App 'e yönelik son değişiklikler ve ASP.NET Core 3,0 ' de yapılan değişikliklere ilk bakış.