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
HttpClientFactory
gRPC 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'a Newtonsoft.Json
geç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 IAuthorizationRequirement
olarak 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 UseRouting
yapı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 UploadStream
stream
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 SignalRstream
Subject
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.Json
yü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 Connect'i uygulamak için Server4 ile Identitybirleştirilir.
IdentityServer4, ASP.NET Core 3.0 için bir OpenID Connect 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.Configure
ekleme. - içinde sertifika kimlik doğrulama hizmetini
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 ş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.
- Web işlemi için SPN'ler oluşturulmalıdır.
- Ana makinede anahtar sekmesi dosyaları oluşturulup yapılandırı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:
- Onay cookie kullanıcı arabirimi artık dahil değildir. ASP.NET Core 3.0 şablon tarafından oluşturulan bir uygulamada onay özelliğini etkinleştirmek cookie için bkz . ASP.NET Core'da Genel Veri Koruma Yönetmeliği (GDPR) desteği.
- Betiklere ve ilgili statik varlıklara artık CDN'ler yerine yerel dosyalar olarak başvuruldu. Daha fazla bilgi için bkz . Betiklere ve ilgili statik varlıklara artık geçerli ortama (dotnet/AspNetCore.Docs #14350) dayalı CDN'ler kullanmak yerine yerel dosyalar olarak başvurulmaktadı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ı CreateDefaultBuilder
iç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:
- IHostEnvironment
IWebHostEnvironment
- IConfiguration
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
ConfigureWebHostDefaults
sağlanan web ana bilgisayar oluşturucusunda yapılandırılır. - Bağlantı Bağdaştırıcıları, ASP.NET Core işlem hattındaki HTTP Ara Yazılımına benzer ancak daha düşük düzeyli bağlantılar için Bağlantı 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.Abstractions
genel 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.Read
zaman uyumlu G/Ç API'leri, uygulama kilitlenmelerine neden olan iş parçacığı yetersizliğiyle ilgili yaygın bir kaynaktır. 3.0'da varsayılanAllowSynchronousIO
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. IIS veya HTTP.sys için HTTP/2 desteği, işletim sistemi tarafından desteklendiğinde etkinleştirilir.
İstek üzerine EventCounters
Barındırma EventSource, Microsoft.AspNetCore.Hosting
gelen 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.Configure
yapı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.
Sistem durumu denetimleri
Sistem Durumu Denetimleri, Genel Ana Bilgisayar ile uç nokta yönlendirme kullanır. içinde uç nokta URL'si Startup.Configure
veya 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.
- Windows Hizmetleri olarak .NET Core Çalışanları
- ASP.NET Core'da barındırılan hizmetlerle arka plan görevleri
- Windows Hizmetinde ASP.NET Core Barındırma
İ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:
- Newtonsoft.Json (Json.NET). ASP.NET Core 3.0'a Json.NET eklemek için bkz . Newtonsoft.Json tabanlı JSON biçim desteği ekleme. ASP.NET Core 3.0, ON okuma ve yazma JSiçin tanıtılıyor
System.Text.Json
. Daha fazla bilgi için bu belgedeki Yeni JSON serileştirme bölümüne bakın. - Entity Framework Core
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ış.
ASP.NET Core