Programmering

Fremtidssikret .NET applikationsudvikling med Uno-platformen

Hvis du bruger tid på at lytte og tale med Windows-udviklere, ved du, at der er meget forvirring og frustration omkring platformens retning, især omkring .NET og UWP (Universal Windows Platform). Microsoft forsøger at tegne en linje under forskellene mellem UWP og ældre Windows SDK'er, mens de prøver at bringe alle ind i en .NET 5-fremtid med Build 2020-meddelelsen om Project Reunion, men det tager stadig tid at levere en samlet platform.

Meget af det har været ned til, hvordan Windows-platformopdateringer tidligere er blevet leveret: koblet til operativsystemudgivelser. Project Reunion bygger på arbejdet med WinUI-brugergrænsefladekomponenterne, afkobler dem fra de underliggende operativsystemer og tillader udviklerplatformen at udvikle sig meget hurtigere end før.

At bygge på en open source-tilgang til platformen giver flere muligheder for at bringe .NET-udviklingsmodellen (og din kode) til så mange platforme som muligt. Et eksempel på, hvordan dette vil fungere, er Uno-platformens WinUI-implementering, som for nylig lancerede sin tredje store udgivelse.

Introduktion til Uno Platform 3.0

Hvis du ikke har set på Uno-platformen før, er det måske nemmest at tænke på det som et alternativ til Xamarin, der giver dig mulighed for at opbygge .NET-kode, der kører på iOS, Android, macOS og Internettet. Jeg har tidligere skrevet om Uno som en måde at levere velkendte brugergrænseflader over internettet ved hjælp af WinUI med WebAssembly og Microsofts Blazor-udviklingsramme.

Uno Platform 3.0 udvikles til at understøtte WinUI 3.0 sammen med WinUI 2.0. På denne måde kan du blande og matche nye og aktuelle kontroller, en tilgang, der skal fungere godt sammen med den trinvise udrulning af både WinUI 3.0 og Project Reunion API'er på systemniveau.

Der er meget at kunne lide i Uno, især at der er ringe eller ingen læringskurve. Kode kan bygges i din yndlings-IDE og bruge eksisterende værktøjer og rammer, der giver et fælles brugergrænsefladeslag til alle dine kodeversioner. Du behøver kun at skrive din C # og XAML én gang, med WinUI-koden, der kører direkte på Windows, og gennem Uno på andre platforme, der bygger oven på Xamarins oprindelige værktøjer til iOS, macOS og Android og bruger Mono-WASM-implementeringen på Internettet.

Brug af Uno til at bringe .NET-apps til macOS

Under emhætten bygger Unos macOS-implementering på lighederne mellem macOS's AppKit og iOS's UIKit. Dette gør det muligt for udviklingsteamet at sende deres eksisterende iOS-kontrolimplementeringer. Selvom dette fungerer, er der stadig problemer med nogle kontrolelementer, så det er værd at eksperimentere, før du indsætter en kode til dine brugere. Alligevel er det en effektiv måde at bringe eksisterende .NET-apps fra Windows til macOS. Ved at bygge på centrale macOS-biblioteker skal Uno forhåbentlig tillade, at din kode kører på det nyligt annoncerede ARM-baserede Apple-silicium.

Mac-support i Uno er relativt ny og lanceres i maj 2020 med en genimplementering af Windows Calculator-appen på macOS og offentliggjort via Apples macOS-butik. Opbygning af en macOS-udgivelse af din eksisterende kode kræver brug af et sæt nye Uno-skabeloner og Windows .NET kommandolinjeværktøj. Når du har installeret de nye skabeloner til enten Uno 2.3 eller 3.0, kan du oprette et app-stillads til en macOS-applikation med samme navn som det projekt, du vil målrette mod.

Du kan derefter flytte projektet til den samme mappe som resten af ​​dine applikationsfiler og føje det nye projekt til en eksisterende Visual Studio-løsning. Kompilér din kode til macOS ved hjælp af Visual Studio til Mac, og konfigurer dens iPhone-simulatorindstillinger for at målrette mod din MacOS-udviklingsenhed.

Da du ikke kan bruge Visual Studio til Mac til at arbejde på Windows WinUI-apps, er det en god ide at bruge Git eller en lignende kildekodestyringsplatform til din komplette løsning, så du kan administrere kodeændringer til macOS og Windows. Hvis du arbejder på en WebAssembly-version af din app, skal du bruge Visual Studio Code til at opbygge den med C # og JavaScript-fejlfindingsudvidelser. MacOS-support er tilgængelig i både Uno 2.4 og 3.0, med den nyeste version, der demonstrerer en WinUI-baseret platformoverskridende videoafspiller-applikation, der er tilgængelig i alle de største appbutikker.

Brug af WinUI 3.0 i Uno

Hvis du planlægger at arbejde med WinUI 3.0, skal du bruge Unos seneste 3.0-udgivelse. Brug igen Uno Platformens .NET-skabeloner til at konfigurere stillads til din kode. Hvis du flytter eksisterende kode til WinUI 3.0, skal du ændre det navneområde, du bruger, både til Microsoft-kontrollerne og til din Uno-kode - noget, der er let nok at gøre ved hjælp af refactoring-værktøjer, der er indbygget i Visual Studio.

Et interessant aspekt af Uno-platformen er understøttelse af enheder med dobbelt skærm. Ved at tage eksisterende kode til Uno og tilføje dens dobbeltskærmskontroller, skal du kunne porte apps fra Windows til den kommende Android-baserede Surface Duo med minimale ændringer. Da Microsoft prioriterer mobilapplikationer med dobbelt skærm og samarbejder med Google for at forbedre support til kommende Android-udgivelser, vil værktøjer som Uno være en vigtig vej til at tage eksisterende store skærm- og tablet-oplevelser fra Windows og bringe dem til foldning og dual-screen Android-hardware .

Uno Platform og fremtiden for .NET applikationsudvikling

Det er klart, at Microsoft sigter mod at fjerne forvirring om, hvordan man bygger applikationer i .NET-økosystemet ved hjælp af WinUI og Project Reunion for at give en meget tiltrængt klarhed om fremtiden. Men så hurtigt som Microsoft lover, at de vil blive leveret, er de sandsynligvis stadig for langsomme for mange udviklere. Både Uno-platformen og Xamarins MAUI er måder at få hurtigere adgang til disse teknologier ud over din eksisterende .NET-kode.

Ved at tilføje support til macOS og Web UI til .NET ser Uno-platformen ud til at være et bedre valg til at målrette mod så mange brugere som muligt med den mindste mængde kodeændring; det er en vej til .NET-fremtiden, der skal spare meget udviklingstid og holde supportbelastningen på et minimum.

Brug af Uno skal også fremtidssikre din eksisterende .NET-kode på andre måder. WebAssembly i browser og stand-alone WASI-applikationer (WebAssembly System Interface) skal forenkle processen med at bringe din kode til en ny generation af kanthardware, især enheder med lille formfaktor og små skærme baseret på ARM og andre processorer med lav effekt.