.NET 8 přináší další řadu novinek. Jednou z nich je možnost zkompilovat ASP.NET Core aplikaci v režimu AOT (ahead-of-time). V tomto režimu ale na MVC, Blazor nebo SignalR rovnou zapomeňte. Naopak odměnou vám bude aplikace, která bude menší, bude zabírat méně paměti a bude startovat výrazně rychleji. Kromě toho přináší .NET 8 také možnost snadných generování náhodných řetězců. A stranou nezůstal ani C#, který ve své 12. verzi zásadním způsobem zjednodušuje zápis třídy.
Co je nového v Base Class Library?
Frozen collections
.NET obsahuje nové kolekce typu
FrozenDictionary<TKey,TValue>
aFrozenSet<T>
.
Možná vás napadne, proč tomu tak je, když už .NET přece obsahuje
ImmutableDictionary<TKey,TValue>
aImmutableHashSet<T>
?
Odpověď je ve způsobu jejich použití. Frozen kolekce jsou optimalizované na rychlost čtení. Hodí se tak například pro konfiguraci aplikace, která se vytváří jen při jejím startu a často se z ní čtou hodnoty. Vytváření takové kolekce je ale časově náročnější, než v případě immutable kolekcí.
RandomNumberGenerator.GetString
Generování náhodných tokenů je v .NET 8 přímočaré:
var token = RandomNumberGenerator.GetString("abcdefghijklmnoqrstuvwxyz0123456789", 32);
Hezké na tom je, že můžete přímo definovat, jaké znaky se mají v tokenu vyskytovat.
Co je nového ve Windows Forms?
Návrh formuláře na PC s vysokým rozlišení už nebude tak náročné, protože jde nastavit, aby Visual Studio používalo pro vykreslení záložky s návrhem formuláře vždy 96 DPI.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
+ <ForceDesignerDPIUnaware>true</ForceDesignerDPIUnaware>
</PropertyGroup>
</Project>
Nezapomeňte si také přečíst tradiční souhrn výkonnostních vylepšení.
Co je nového v C# 12?
Primary constructors
Parametry konstruktoru třídy se často jen kopírovaly do jejího těla, aby byly později dostupné jejím metodám. Teď jsou parametry konstruktoru dostupné všem metodám po celou dobu životnosti třídy.
class Car(string brand, Color color) {
public string Brand => brand;
public Color color => color;
}
Collection expressions
Kdykoliv potřebujeme vytvořit kolekci, můžeme použít zkrácený zápis []
podobně jako v JavaScriptu. S touto novou syntaxí se dobře kloubí i možnost vytvářet nové instance třídy bez uvedení jejího typu na místech, kde je typ předem známý.
List<Car> cars = [
new("Jaguar", Color.DarkGreen),
new("Land Rover", Color.SandyBrown),
new("Toyota", Color.Silver)
];
.NET Aspire
Pokud architektura aplikace založená na mikroslužbách zrovna není váš šálek čaje, můžete zůstat u klasické monolitické aplikace. Ve vývoji, nasazování, konfiguraci a telemetrii je však stále co zlepšovat. Čím složitější aplikace je, tím těžší je její spouštění v testovacím prostředí. Jedním z možných řešení může být .NET Apire. Je to něco, co rozumí tomu, jak je vaše aplikace z jednotlivých projektů poskládaná. Dokáže ji spustit lokálně jako celek a jako celek ji také monitorovat a nasadit do cloudu. Ještě větší přínos je však v tom, že vnáší určitou standardizaci do značného chaosu.