Přestože .NET 7 přináší další řadu novinek, hlavní důraz byl tentokrát kladen na výkon. ASP.NET obsahuje rate limiter, takže se už většinou obejdeme bez souboru web.config
. Jazyk C# ve své 11. verzi přináší lepší práci s řetězci. A jedna funkce, která byla dosud dostupná jen v UWP a Mono – kompilace v režimu AOT (ahead-of-time), je nyní dostupná pro celý framework.
Rate limiting
ASP.NET Core má teď způsob, jakým může omezit počet příchozích HTTP požadavků.
builder.Services.AddRateLimiter(options => {
options.RejectionStatusCode = StatusCodes.Status429TooManyRequests;
options.AddFixedWindowLimiter(...);
options.AddSlidingWindowLimiter(...);
options.AddTokenBucketLimiter(...);
options.AddConcurrencyLimiter(...);
});
app.UseRateLimiter();
Podrobnosti se dočtete v dokumentaci.
Co je nového v C# 11?
Modifikátor required
Pokud jste si aktivovali explicitní non-nullable reference types, určitě jste už ve vašich třídách narazili na hlášku: Non-nullable property 'Brand' must contain a non-null value when exiting constructor. Consider declaring the property as nullable.
class Car {
public string B̲r̲a̲n̲d̲ { get; set; }
public Color Color { get; set; }
}
Co když ale nechceme vytvářet konstruktor a privátní proměnnou jenom proto, abychom třídu iniciovaly s readonly hodnotou? Použijeme modifikátor required!
class Car {
public required string Brand { get; init; }
public Color Color { get; set; }
}
A pozor: Entity Framework mapuje modifikátor required do databáze jako datový typ NOT NULL.
Range operator
Práce s řetězci je zase o něco jednodušší. Doteď se určitá část řetězce získávala takto:
var str = "I'm missing Windows Phone!";
var iam = str.Substring(0, 3);
var missing = str.Substring(4, 7);
var wp = str.Substring(str.Length - 14);
Nyní se dá s řetězcem pracovat stejně jako s polem v jazyce F# (ve kterém se tomu říká slices):
var str = "I'm missing Windows Phone!";
var iam = str[..3];
var missing = str[4..11];
var wp = str[^14..];
Dejte si pozor na to, že se indexy zapisují jako v javascriptové funkci substring
. Nezapisuje se tedy index a délka, ale počáteční a koncový index. Pokud chceme uvést index od konce (nikoli od začátku) řetězce, použijeme ^
.
Nezapomeňte si také přečíst tradiční souhrn výkonnostních vylepšení.