Programmering

Forstå .NET MAUI og fremtiden til Xamarin

I 2000 handlet Microsofts profesjonelle utviklerkonferanse om å sette scenen for .NET, og introdusere mange av teknologiene vi har brukt de siste to tiårene. Tjue år senere er det greit å si at Microsoft har trykket på en tilbakestillingsknapp på .NET og dets mange utviklerrammer. På Build 2020 la selskapet ut sin veikart for de neste tjue årene, og bygde videre på sin Project Reunion-kunngjøring.

Fremtiden er en .NET

Det er mulig å se tilbake på seks år eller så for å se dagens røtter i den åpne innkjøpet av .NET og etableringen av. NET Foundation. Plattformen trengte et uavhengig organ for å gjete det gjennom overgangen fra det gamle .NET Framework til et nytt, arvfritt, modulært .NET Core. Den overgangen måtte omfatte mer enn Windows; den måtte ta med seg Xamarins mobile klienter og Unitys 3-D-spillplattformer, samt sikte på å utvide rekkevidden til .NET til macOS og Linux.

Det bringer oss til 2020 og den kommende overgangen fra den aldrende .NET Framework 4 til en ny. NET 5, den neste store utgivelsen av. NET Core med de fleste av de kjente .NET Framework API-ene og navneområdene. Denne transformasjonen vil begynne på store endringer for Microsofts utviklingsverktøy for mobil og plattform Xamarin, ettersom Microsoft skifter ingeniørarbeid fra Xamarins Mono til .NET 5.

Å bringe Mono og .NET sammen i .NET 6

En ting er klart: Microsoft kaster ikke bort både investeringene dine og investeringene dine i Xamarin. Mono kommer ikke til å gå noen steder ennå. Mange store prosjekter er avhengige av Mono, og vi ser at Xamarin fortsetter å utvikle Mono for å støtte nye utgivelser av Android og iOS. Men hvis du vil ha nye funksjoner og nye APIer og en bredere plattformutviklingsmodell, vil din fremtidige utviklingsstrategi være basert på .NET 5 og den pågående årlige .NET-utgivelsesplanen. Et fullstendig, samlet .NET er fortsatt et stykke unna, og selv om .NET 5 vil være et viktig skritt fremover, vil vi ikke se forening før sent i 2021 og den planlagte utgivelsen av neste langsiktige støtteutgivelse .NET 6.

Hensikten er ikke å erstatte Mono helt, men å ha ett felles sett med klassebiblioteker og en enkelt verktøykjede for .NET Core og for Mono, og bygge videre på arbeidet som allerede foregår i funksjoner på plattformnivå som .NET Standard biblioteker. Det etterlater et spennende spørsmål: Hvordan ser et brukergrensesnitt på tvers av plattformer ut i den konvergerte fremtiden? Selv om det er et alternativ på tvers av plattformer i Uno Platforms port av WinUI 3, med støtte for mobilenheter sammen med WebAssembly og macOS, er kontrollene som Microsoft sender i WinUI, Windows-stasjonære kontroller, og de fungerer best i skrivebords- og nettbrettapplikasjoner.

Utvikle et plattformgrensesnitt for brukergrensesnitt for .NET

Xamarin tilbyr et alternativ til WinUI for plattformutvikling. Strategien på tvers av plattformer er basert på en blanding av XAML-støtte for innfødte kontroller for både iOS og Android, sammen med sine egne plattforms Xamarin Forms. Xamarin Forms er en MVVM (modell-visning-visningsmodell) utviklingsplattform i seg selv, med sitt eget kontrollutseende basert på Androids Material Design-språk. Xamarin Forms gir iOS- og Android-apper et konsistent utseende og samtidig gir dem tilgang til innebygde funksjoner og tjenester.

Med .NET 6 ment å forene de forskjellige. NET-plattformene, er Xamarin Forms det logiske grunnlaget for et nytt sett med mobil UI-verktøy og et nytt plattform-UI-rammeverk for. NET. Microsoft avduket denne nye tilnærmingen i Build 2020 og kalte den .NET Multiplatform App UI (MAUI).

.NET MAUI er neste generasjon av Xamarin Forms, ment å tillate utviklere å bygge en app en gang i et enkelt Visual Studio-prosjekt med en enkelt kodebase, og målrette mot alle støttede enheter. Målet er å levere en forenklet prosjektstruktur. I stedet for en enkelt løsning med separate prosjekter for hver plattform du målretter mot, vil MAUI med et enkelt prosjekt inneholde ressursene som trengs for å målrette mot spesifikke plattformer. Hvis du trenger native API-er for tilgang til enhetsspesifikke tjenester, kan disse pakkes i en plattformvisning og brukes på kompileringstidspunktet når du målretter bygg for hver plattform. Ved siden av plattformkoden kan du pakke sammen ressurser som skal brukes av XAML, inkludert bilder og skrifttyper, og gi deg ett sted å administrere alle elementene i applikasjonen din.

Den nye prosjektmodellen som følger med .NET 6 er nøkkelen til denne tilnærmingen, ettersom den bruker en mer logisk gruppering til modulene som brukes i plattformapps, og hvordan kode bygges og distribueres. Til tross for de strukturelle endringene i prosjekter, bør koden du skriver i morgen være veldig lik dagens, men lettere å distribuere på tvers av flere plattformer og å holde seg oppdatert med endringer i plattform-APIer og applikasjonsdesignressurser.

Veien til .NET MAUI

Vi er fortsatt måneder unna å se brukbar .NET MAUI-kode, ettersom det avhenger av .NET 6 SDK-funksjoner, selv om et GitHub-lager allerede er åpent med noen av de første implementeringene. Når en forhåndsvisning sendes mot slutten av 2020, bør det vi får, være ganske likt de eksisterende Xamarin Forms, som vil fortsette å bli utviklet parallelt med .NET MAUI. Viktige endringer vil være rundt hvordan du strukturerer prosjekter, med et nytt navneområde som flytter fra Xamarins eget navneområde til .NET's System.

Den publiserte veikartet for .NET MAUI antyder at vi i utgangspunktet får en forhåndsvisningskonstruksjon basert på et nytt navn på den nåværende Xamarin Forms-utgivelsen, med noen forenklinger og nye funksjoner som kommer fra .NET 6s nye funksjoner. Flere endringer vil komme i løpet av 2021 når .NET MAUI og .NET 6 utvikler seg, med macOS og Windows-kontroller som kommer til Android og iOS innen sommeren 2021. Du bør kunne levere enhetlige applikasjoner innen den tiltenkte utgivelsen fra november 2021, med en utgivelseskandidat på grunn av September 2021.

Microsoft planlegger andre endringer av Xamarin i .NET 6-tidsrammen, flytter andre Xamarin-biblioteker til System og omdøper Xamarin.iOS og Xamarin.Android til .NET for iOS og .NET for Android. Det er et logisk grep, hvis det er litt trist for de av oss som har fulgt utviklingen av Xamarin siden de første dagene av Mono.

Kanskje en mer positiv måte å tenke på det er at, med flyttingen til en .NET Core-plattform på tvers som grunnlaget for alle ting .NET, er det ikke så mye Microsoft absorberer Xamarin som Xamarin blir hjertet i .NETs open source-fremtid. . Det er en god arv for Mono-prosjektet.