Programování

Vývoj aplikací .NET pro budoucnost s platformou Uno

Pokud strávíte nějaký čas nasloucháním a rozhovorům s vývojáři Windows, budete vědět, že je tu spousta zmatků a frustrace ohledně směru platformy, zejména kolem .NET a UWP (Universal Windows Platform). Microsoft se pokouší nakreslit čáru mezi rozdíly mezi UWP a staršími Windows SDK, a zároveň se snaží přivést všechny do budoucnosti .NET 5 s oznámením Build 2020 Project Reunion, ale dodání jednotné platformy bude ještě chvíli trvat.

Mnoho z toho spočívalo v tom, jak byly v minulosti dodávány aktualizace platformy Windows: ve spojení s verzemi operačních systémů. Project Reunion staví na práci s komponentami uživatelského rozhraní WinUI, odděluje je od základních operačních systémů a umožňuje vývojářské platformě vyvíjet se mnohem rychleji než dříve.

V návaznosti na přístup k platformě s otevřeným zdrojem poskytuje více příležitostí přivést model vývoje .NET (a váš kód) na co nejvíce platforem. Jedním příkladem toho, jak to bude fungovat, je implementace WinUI platformy Uno Platform, která nedávno spustila své třetí hlavní vydání.

Představujeme platformu Uno 3.0

Pokud jste se dosud na platformu Uno nedívali, je asi nejjednodušší si ji představit jako alternativu k Xamarin, která vám umožní vytvářet .NET kód, který běží na iOS, Android, macOS a na webu. O Uno jsem psal dříve jako o způsobu poskytování známých uživatelských rozhraní přes web pomocí WinUI s WebAssembly a vývojovým rámcem Microsoftu Blazor.

Platforma Uno 3.0 je vyvíjena na podporu WinUI 3.0 vedle WinUI 2.0. Tímto způsobem můžete kombinovat nové a aktuální ovládací prvky, což je přístup, který by měl dobře fungovat společně s postupným zaváděním jak WinUI 3.0, tak API systému Reunion na úrovni systému.

V Uno se toho může hodně líbit, zejména že je tu malá nebo žádná křivka učení. Kód lze zabudovat do vašeho oblíbeného IDE a používat existující nástroje a rámce, které poskytují společnou vrstvu uživatelského rozhraní pro všechny vaše verze kódu. Musíte pouze napsat C # a XAML jednou, s kódem WinUI spuštěným přímo ve Windows a přes Uno na jiných platformách, stavějící na nativních nástrojích Xamarin pro iOS, macOS a Android a pomocí implementace Mono-WASM na Web.

Přenášení aplikací .NET do macOS pomocí Uno

Implementace macOS Uno pod kapotou staví na podobnostech mezi aplikacemi macOS AppKit a iOS UIKit. To umožňuje vývojovému týmu zveřejnit své stávající implementace ovládání iOS. I když to funguje, některé ovládací prvky stále mají problémy, takže před nasazením jakéhokoli kódu vašim uživatelům stojí za to experimentovat. Přesto je to efektivní způsob, jak přenést existující aplikace .NET z Windows do macOS. Budováním na základních knihovnách macOS by Uno snad mělo umožnit spuštění vašeho kódu na nedávno ohlášeném Apple křemíku založeném na ARM.

Podpora pro Mac v Uno je relativně nová, spuštěná v květnu 2020, s reimplementací aplikace Windows Calculator pro MacOS a publikovanou prostřednictvím obchodu Apple MacOS. Vytváření vydání stávajícího kódu pro macOS vyžaduje použití sady nových šablon Uno a nástroje příkazového řádku Windows .NET. Jakmile nainstalujete nové šablony pro Uno 2.3 nebo 3.0, můžete vytvořit aplikační lešení pro aplikaci macOS se stejným názvem jako projekt, na který chcete cílit.

Potom můžete tento projekt přesunout do stejné složky jako zbytek souborů aplikace a přidat nový projekt do existujícího řešení sady Visual Studio. Zkompilujte svůj kód pro macOS pomocí Visual Studio pro Mac a nakonfigurujte jeho nastavení simulátoru pro iPhone tak, aby cílilo na vaše vývojové zařízení macOS.

Protože Visual Studio pro Mac nemůžete používat k práci na aplikacích Windows WinUI, je vhodné použít Git nebo podobnou platformu pro ovládání zdrojového kódu pro vaše kompletní řešení, abyste mohli spravovat změny kódu pro macOS a pro Windows. Pokud pracujete na verzi vaší aplikace WebAssembly, vytvořte ji pomocí Visual Studio Code s rozšířeními ladicího programu C # a JavaScriptu. Podpora systému MacOS je k dispozici v Uno 2.4 i 3.0, přičemž nejnovější verze předvádí multiplatformní aplikaci pro videopřehrávač založenou na WinUI, která je k dispozici ve všech hlavních obchodech s aplikacemi.

Používání WinUI 3.0 v Uno

Pokud plánujete práci s WinUI 3.0, musíte použít nedávné vydání Uno 3.0. Opět použijte šablony .NET platformy Uno k nastavení lešení pro váš kód. Pokud přesouváte stávající kód do WinUI 3.0, musíte změnit obor názvů, který používáte, a to jak pro ovládací prvky Microsoftu, tak pro váš kód Uno - což je něco, co je snadné udělat pomocí refaktorovacích nástrojů zabudovaných do Visual Studio.

Jedním zajímavým aspektem platformy Uno je podpora zařízení se dvěma obrazovkami. Když vezmete existující kód do Uno a přidáte jeho ovládací prvky pro dvě obrazovky, měli byste být schopni portovat aplikace z Windows do nadcházejícího Surface Duo založeného na Androidu s minimálními změnami. Vzhledem k tomu, že společnost Microsoft upřednostňuje mobilní aplikace se dvěma obrazovkami a spolupracuje se společností Google na zlepšení podpory nadcházejících verzí systému Android, nástroje jako Uno budou důležitou cestou k převzetí stávajících zkušeností s velkoplošnou obrazovkou a tabletem ze systému Windows a jejich převedení na skládací hardware a hardware pro Android se dvěma obrazovkami .

Platforma Uno a budoucnost vývoje aplikací .NET

Je jasné, že Microsoft má v úmyslu odstranit nejasnosti ohledně toho, jak vytvářet aplikace v ekosystému .NET, pomocí WinUI a Project Reunion k zajištění tolik potřebné jasnosti o budoucnosti. Jak rychle však Microsoft slibuje, že budou dodány, je stále pravděpodobné, že budou pro mnoho vývojářů příliš pomalé. Platforma Uno i Xamarin's MAUI jsou způsoby, jak rychleji získat přístup k těmto technologiím, navíc k vašemu stávajícímu kódu .NET.

Přidáním podpory macOS a webového uživatelského rozhraní do .NET vypadá platforma Uno jako lepší volba pro cílení na co největší počet uživatelů s co nejmenší změnou kódu; je to cesta do budoucnosti .NET, která by měla ušetřit spoustu času na vývoj a udržet zatížení podpory na minimu.

Použití Uno by mělo zajistit existující .NET kód do budoucna i jinými způsoby. In-browser WebAssembly a samostatné aplikace WASI (WebAssembly System Interface) by měly zjednodušit proces přenesení vašeho kódu na novou generaci hraničního hardwaru, zejména zařízení malého formátu a zařízení na malé obrazovce založené na ARM a dalších procesorech s nízkou spotřebou.