Jednoduchý přehled .NET frameworků, které vám umožní napsat software pro různé platformy pomocí jazyka C#.
WPF – Windows Desktop
I když už starší technologie, tak stále aktuální pro vývoj čistě desktopových aplikací. Jedná se o nástupce starého WinForms, který dominoval po mnoho let. Pro front-end používá jazyk XAML. Jedná se o spolehlivou volbu s dobrou dokumentací. I když XAML dokáže být velice obsáhlý (a docela vyčerpávající), lze docílit všeho, co byste od moderní aplikace čekali. Osobně mám s WPF hodně dobrých zkušeností a zatím jsem nenašel důvod proč ho nahradit. Vždycky také doporučuji použít knihovnu CommunityToolkit, která vývoj hodně usnadní, prakticky je to už must-have.
XAML:
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Content="Cancel" Style="{StaticResource LabelButtonNOK}" Padding="20" FontSize="20">
<Label.InputBindings>
<MouseBinding MouseAction="LeftClick" Command="{Binding ClosePopup}"/>
</Label.InputBindings>
</Label>
<Label Grid.Column="1"
Content="Stop coating"
Style="{StaticResource LabelButtonOK}"
Padding="20" FontSize="20">
<Label.InputBindings>
<MouseBinding MouseAction="LeftClick" Command="{Binding CoatingStop}" />
</Label.InputBindings>
</Label>
</Grid>
.NET MAUI – Windows / macOS / iOS / Android
MAUI je odpověď Microsoftu pro multiplatformní aplikace. Hlavní záměr je mít jeden zdrojový kód pro několik platformem. Osobně jsem ho nikdy nepoužil na Mac/iOS, ale na Windows a Android ano a můžu potvrdit, že to tak funguje.
Pro front-end se opět využívá XAML, jedná se upgrade oproti WPF u kterého zůstávají některé syntaxe XAMLU složitější. Microsoft se snaží dotlačit uživatele přejít z WPF na MAUI, a tak nechává WPF ladem a vyvíjí MAUI.
Opět silně doporučuji použití CommunityToolkit, který vývoj značně usnadní. Hlavně pokud používáte MVVM. I když se bavíme o multiplatformní technologii, stále chybí podpora Linuxu.
<!-- Icons -->
<CollectionView ItemsSource="{Binding Actions}"
VerticalOptions="Center"
Grid.Column="2"
BackgroundColor="Transparent">
<CollectionView.GestureRecognizers>
<TapGestureRecognizer Command="{Binding BindingContext.OpenDayCommand,
Source={RelativeSource AncestorType={x:Type CollectionView}, AncestorLevel=2}}"
CommandParameter="{Binding .}" />
</CollectionView.GestureRecognizers>
<CollectionView.ItemsLayout>
<LinearItemsLayout Orientation="Horizontal" ItemSpacing="1"/>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<Image Source="{Binding IconName}" WidthRequest="32"/>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
Blazor – Web
Technologie na kterou se Microsoft momentálně zaměřuje. Jedná se odpověď na React (a další front-endové frameworky). Místo Javascriptu se používá C#. Blazor po vydání obdržel rozporuplné reakce. Není úplně intuitivní na naučení, hlavně pokud už máte s .NET předchozí zkušenosti. Obsahuje různé režimy renderování, které mají vlastní specifické chování a to může být matoucí.
Web dokáže udržovat kontakt se serverem pomocí SignalR, stránky se pak umí aktualizovat pouze částečně a působí jako real-time interaktivní stránka, bez nutnosti obnovení celé stránky.
V případě nového webového projektu bych tuto technologii určitě zvolil. Přitahuje hlavně odmítače javascriptu a back-endové vývojáře, kteří se nechtějí učit jiné webové frameworky. Samozřejmě se zde stále nevyhneme HTML+CSS, což dokáže spolehlivě odstrašit všechny klasické .NET vývojáře.
@page "/counter"
<h3>Počítadlo</h3>
<p>Aktuální hodnota: <strong>@count</strong></p>
<button class="btn btn-primary" @onclick="Increment">
Přidat +1
</button>
@code {
private int count = 0;
private void Increment()
{
count++;
}
}
.NET MAUI Blazor Hybrid – Web / Windows / macOS / iOS / Android
Jedná doslova o hybrid. Blazor = Web a .NET MAUI = multiplatformní aplikace. Jde defacto o webovou aplikaci zabalenou do kontejneru. Můžete tak používat HTML + CSS + C#, ale aplikaci vydat i na telefon, desktop, web….Linux ne.
Pravděpodobně se jedná o technologii, kterou budeme potkávat ještě dlouho. Microsoft zatím nevypadá, že by kutil něco jiného. Pokud vám nevadí webový vývoj, je to dobrá cesta pokud chcete vizuálně pěkné multiplatformní aplikace. Ne pro Linux.
Avalonia
Technologie, která není od Microsoftu. Také ale není zdarma….pro komerční užití. Avalonia využívá knihovnu SkiaSharp pro kreslení veškerého GUI. Není závislá na .NET MAUI a přes to dokáže vytvořit aplikaci na….no na cokoliv…i na Linux. Je postavená na .NET, takže se s ní pracuje úplně stejně. Ve výsledku tvoříte aplikaci stejně jako s WPF, které je obohaceno o všechny moderní úpravy. Jsou tam nějaké malé rozdíly, ale pokud máte zkušenost s WPF, tak nebudete mít problémy.
Je trochu škoda, že není více rozšířená, protože je to výborný framework, ale ospravedlnit platbu licence, když .NET, který už si firma platí (nebo se vývojář vejde do licence zdarma) poskytuje 90% funkčnosti. Mě osobně trochu odrazuje absence funkce HOT RELOAD. Nicméně je to perfektní možnost pro opensource projekty, které chtějí tvořit software pro…no opravdu pro všechno.
