Lekce 1 - Úvod do .NET MAUI Nové
Vítejte u první lekce kurzu, ve kterém se v jazyce C# .NET naučíme vytvářet multiplatformní mobilní a desktopové aplikace pro systémy Android, iOS, macOS a Windows. Budeme pracovat nejen s tlačítky, textovými poli a seznamy, ale také s obrázky, dialogy a dalšími ovládacími prvky, které máme v těchto aplikacích k dispozici. Naše aplikace budeme tvořit pomocí technologie .NET MAUI.
Požadavky na znalosti
Tento kurz předpokládá znalosti v rozsahu kurzů:
- Základní konstrukce jazyka C# .NET,
- Objektově orientované programování v C# .NET,
- Kolekce a LINQ v C# .NET,
- Soubory v C# .NET.
Mobilní a desktopové aplikace
Mobilní aplikace jsou dnes, stejně jako aplikace webové, velice populární jak mezi uživateli, tak i mezi firmami. Zamysleme se, proč tomu tak je. Je to velmi jednoduché.
Pokud si uživatel nainstaluje naši aplikaci, má ji vždy ihned po ruce a spustí ji s minimální námahou, stačí akorát kliknout na ikonu někde na ploše. Dále může být pro uživatele mnohdy výhodou i to, že většinu obsahu aplikace může procházet offline, například při cestě metrem.
Pro nás vývojáře pak mají mobilní aplikace výhodu v tom, že uživatele můžeme jednoduše informovat o novinkách, výhodách atd. prostřednictvím notifikací přímo na jeho telefonu. Tím se zvyšuje šance, že něco prodáme. Jako bonus ještě dostaneme informace o uživatelově zařízení, jako je třeba poloha, díky čemuž můžeme cílit naše nabídky.
Zní to dobře, že? Vývoj mobilních aplikací má však také svá úskalí. V současné době existují dvě dominantní mobilní platformy – Android a iOS. Pro každou z nich se používá jiný programovací jazyk. Pokud navíc chceme podporovat i desktopové platformy (Windows a macOS), rázem místo dvou jazyků musíme ovládat minimálně tři:
- Android – Java (kurz Android - Mobilní aplikace v Javě) nebo Kotlin (kurz Android - Tvorba mobilních aplikací v Kotlinu),
- iOS – Swift (kurz iOS - Vyvíjíme mobilní aplikace ve Swiftu),
- macOS – Swift (kurz macOS - Desktopové aplikace ve Swiftu),
- Windows – C# (například kurz WinUI 3 - Okenní aplikace v C# .NET) nebo C++.
Když tedy po nás bude zákazník chtít vytvořit aplikaci pro všechny platformy, pořádně se u toho asi zapotíme. Jestli vás napadlo, že psát stejnou aplikaci třeba třikrát – jednu pro Android, druhou pro iOS a macOS, třetí pro Windows – a ještě k tomu každou v jiném jazyce je zbytečné, pak jste na správném místě.
Multiplatformní aplikace
Řešením výše zmíněného problému jsou multiplatformní nebo též cross-platform aplikace. Multiplatformní aplikaci stačí napsat pouze jednou, ale přitom je možné ji rozběhnout na několika platformách (operačních systémech). Sdílíme tak jeden zdrojový kód pro více platforem, čímž značně omezujeme náklady a především potřebný čas na vývoj a následnou údržbu.
Multiplatformní aplikace jsou na vzestupu, proto dnes máme na výběr z množství frameworků, pomocí nichž můžeme aplikace tvořit. Mezi nejznámější patří Flutter, React Native (kurz React Native) a právě .NET MAUI. V tomto kurzu se zaměříme na poslední zmiňovaný.
.NET MAUI
.NET Multi-platform App UI, zkráceně jen .NET MAUI, je framework pro vývoj nativních multiplatformních aplikací spravovaný firmou Microsoft. Vychází ze staršího frameworku Xamarin.Forms (kurz Xamarin - Mobilní aplikace v C# .NET), který byl jedním z prvních v tomto odvětví. .NET MAUI si ze Xamarin.Forms bere to nejlepší a přidává k tomu moderní technologie a principy, jako je například vestavěná dependency injection (kurz Dependency injection a softwarové architektury). .NET MAUI máme k dispozici od verze .NET 6.
.NET MAUI podporuje následující operační systémy:
- Android,
- iOS,
- macOS (pomocí technologie Mac Catalyst),
- Windows,
- Tizen (komunitou podporovaný).
Poskytované funkcionality
Hlavním cílem .NET MAUI je poskytnout jednotné aplikační rozhraní neboli API pro přístup k funkcionalitám jednotlivých operačních systémů.
V tomto kontextu budeme API (Application Programming Interface) chápat jako třídy a jejich metody, které máme v .NET k dispozici a pomocí nichž můžeme nějakou funkcionalitu používat.
Mezi tyto funkcionality patří například:
- nástroje pro tvorbu uživatelského rozhraní,
- příjem a zpracování uživatelských vstupů (dotyk, myš, klávesnice…),
- správa životního cyklu aplikace,
- přístup k senzorům zařízení a mnohé další.
V tomto kurzu se zaměříme především na tvorbu uživatelského rozhraní.
Komponentová architektura
Uživatelským rozhraním chápeme část aplikace, kterou vidí a s níž přímo interaguje uživatel. V případě mobilních a desktopových aplikací se tak jedná především o samotné okno aplikace a tlačítka, textová pole, popisky a další prvky v něm.
.NET MAUI nám nabízí spoustu hotových komponent, ze kterých uživatelské rozhraní jednoduše poskládáme. Jedná se o zmiňovaná tlačítka, textová pole, posuvníky, popisky a další komponenty, které Microsoft označuje jako controls (česky ovládací prvky nebo někdy též „kontrolky“). Framework nám samozřejmě nebrání v tvorbě vlastních ovládacích prvků, což však není příliš často nutné. Všechny ovládací prvky se ve výchozím nastavení drží designu odpovídajícího operačního systému, aby zapadaly do jeho celkového vizuálu. Během kurzu si řadu ovládacích prvků popíšeme a naučíme se s nimi pracovat.
Proč zvolit .NET MAUI
V čem .NET MAUI vyniká oproti ostatním? Pravděpodobně největší výhodou je samotný .NET, díky němuž máme přístup k velkému množství odladěných knihoven a nástrojů se zaručenou dlouhodobou podporou.
Multiplatformní aplikace není vždy možné psát pouze pomocí sdíleného kódu, který je nezávislý na konkrétní platformě. Někdy se jednoduše nevyhneme potřebě přistupovat k funkcionalitám a knihovnám specifickým pro určitou platformu. Výhodou .NET MAUI však je, že i takový kód je možné psát v C#. Jiné multiplatformní technologie tuto možnost nenabízejí a vyžadují v takových případech psaní kódu v jazyce dané platformy.
S .NET MAUI tak dokážeme napsat celou naši aplikaci v jazyce C# a nemusíme se učit žádný jiný.
Vykreslování ovládacích prvků
V neposlední řadě může být výhodou i to, jak .NET MAUI přistupuje k vykreslování ovládacích prvků uživatelského rozhraní. Každý operační systém poskytuje vlastní sadu ovládacích prvků, ze kterých je možné tvořit uživatelské rozhraní. Takové ovládací prvky označujeme jako nativní nebo specifické pro platformu (anglicky platform-specific). Ovládací prvky v .NET MAUI jsou pouze jednotnou abstrakcí nad těmito nativními ovládacími prvky.
Představme si, že v .NET MAUI vložíme do aplikace například tlačítko. Při následném sestavení této aplikace pro Android se použije tlačítko poskytované knihovnami Androidu, při sestavení aplikace pro iOS se pak použije tlačítko z iOS a tak dále:
Každá platforma se tedy sama postará o to, jak se má tlačítko vykreslit a jak má třeba vizuálně reagovat na kliknutí. Toto samozřejmě platí nejen pro tlačítka, ale také pro všechny ovládací prvky. Výsledkem je, že naše aplikace budou vždy odpovídat zvyklostem dané platformy a poskytovat tak příjemný uživatelský zážitek.
Alternativní přístup k vykreslování ovládacích prvků nabízí například Flutter nebo Avalonia. Tyto frameworky nespoléhají na nativní ovládací prvky, ale vše si vykreslují samy.
Vývojové prostředí
.NET MAUI aplikace lze vyvíjet na operačním systému Windows nebo macOS. Pro vývoj iOS a macOS aplikací je však nutné mít k dispozici operační systém macOS. iOS ani macOS totiž nelze oficiální cestou emulovat na systému Windows. Obdobně to platí i pro Windows aplikace, pro které potřebujeme mít k dispozici systém Windows (ten však lze na macOS emulovat například pomocí Parallels Desktop).
Co se týče vývojového prostředí, na Windows můžeme použít:
- Visual Studio 2022 a novější,
- Visual Studio Code s rozšířením pro .NET MAUI,
- Rider od JetBrains.
Na macOS je k dispozici pouze Visual Studio Code nebo Rider.
Pro začátek je nejvhodnější použít Visual Studio na systému Windows. Značnou část konfigurace vývojových nástrojů a knihoven totiž VS vyřeší automaticky za nás, což se určitě hodí. Komponent, které se musí vhodně poskládat, aby bylo možné aplikaci sestavit na všech podporovaných systémech, není zrovna málo. Právě proto i my budeme v tomto kurzu pracovat s Visual Studiem na systému Windows.
Postup přípravy Visual Studia Code pro vývoj .NET MAUI aplikací nalezneme v oficiální dokumentaci.
Příprava Visual Studia
Ve Visual Studiu je nutné mít nainstalovanou sadu funkcí Vývoj .NET Multi-Platform App UI (.NET Multi-platform App UI development). To ověříme nahlédnutím do Visual Studio Installeru, prostřednictvím nějž jsme si Visual Studio nainstalovali. Spustíme tedy Visual Studio Installer, najdeme námi používanou instalaci Visual Studia a klikneme na Změnit (Modify):
Otevře se nám okno se všemi dostupnými sadami funkcí a komponentami. Ke stejnému oknu se případně můžeme dostat kliknutím na položku Tools v aplikačním menu Visual Studia a volbou položky Get Tools and Features…. Ujistíme se, že máme zaškrtnutou sadu Vývoj .NET Multi-Platform App UI (.NET Multi-platform App UI development), případně ji zaškrtneme a potvrdíme její instalaci:
Je-li to možné, Visual Studio si ještě aktualizujeme, abychom měli aktuální verzi .NET a všech nástrojů.
.NET MAUI stále ještě obsahuje řadu chyb, které vývojáři postupně opravují a k nimž pravidelně vydávají servisní aktualizace. Proto je vhodné vždy pracovat s tou nejnovější verzí Visual Studia, a tedy i nejnovější verzí .NET a .NET MAUI.
V příští lekci, První .NET MAUI aplikace, si vytvoříme svou první multiplatformní aplikaci v .NET MAUI. Mimo jiné si ukážeme, jak tuto aplikaci spustit, a seznámíme se se strukturou .NET MAUI projektu.