Förstå .NET MAUI och framtiden för Xamarin

År 2000 handlade Microsofts professionella utvecklarkonferens om att sätta scenen för .NET och introducera många av de tekniker som vi har använt under de senaste två decennierna. Tjugo år senare är det rättvist att säga att Microsoft har tryckt på en återställningsknapp på spridningen av .NET och dess många utvecklarramar. Vid Build 2020 utarbetade företaget sin färdplan för de kommande tjugo åren och byggde på sitt tillkännagivande Project Reunion.

Framtiden är en .NET

Det är möjligt att se tillbaka sex år eller så för att se dagens rötter i den öppna sourcing av .NET och skapandet av. NET Foundation. Plattformen behövde en oberoende instans för att fånga den genom övergången från den gamla .NET Framework till en ny, äldre, modulär .NET Core. Den övergången var tvungen att omfatta mer än Windows; det var tvungen att ta med Xamarins mobilklienter och Unitys 3D-spelplattformar, samt att sträva efter att utöka räckvidden för .NET till macOS och Linux.

Det tar oss till 2020 och den kommande övergången från det åldrande .NET Framework 4 till ett nytt. NET 5, nästa stora utgåva av. NET Core med de flesta av de välkända .NET Framework API: er och namnområden. Den omvandlingen kommer att börja med stora förändringar för Microsofts utvecklingsverktyg för Xamarin för mobila och plattformar, eftersom Microsoft flyttar tekniska ansträngningar från Xamarins Mono till .NET 5.

För samman Mono och .NET i .NET 6

En sak är tydlig: Microsoft kastar inte bort både sina och dina investeringar i Xamarin. Mono kommer inte att gå någonstans än. Massor av stora projekt beror på Mono, och vi ser att Xamarin fortsätter att utvecklas Mono för att stödja nya versioner av Android och iOS. Men om du vill ha nya funktioner och nya API: er och en bredare plattformsutvecklingsmodell kommer din framtida utvecklingsstrategi att baseras på .NET 5 och det pågående årliga .NET-släppschemat. En fullständig, enhetlig .NET är fortfarande långt borta, och även om .NET 5 kommer att vara ett viktigt steg framåt, kommer vi inte att se enande förrän i slutet av 2021 och den planerade lanseringen av nästa långsiktiga supportrelease, .NET 6.

Avsikten är inte att helt ersätta Mono, utan att ha en gemensam uppsättning klassbibliotek och en enda verktygskedja för .NET Core och för Mono, bygga på det arbete som redan pågår i funktioner på plattformsnivå som .NET Standard bibliotek. Det lämnar en spännande fråga: Hur ser ett plattformsgränssnitt ut i den konvergerade framtiden? Även om det finns ett plattformsalternativ i Uno-plattformens hamn i WinUI 3, med stöd för mobilenheter tillsammans med WebAssembly och macOS, är de kontroller som Microsoft levererar i WinUI Windows-skrivbordskontroller, och de fungerar bäst i stationära och surfplattapplikationer.

Utveckla ett plattformsgränssnitt för .NET för .NET

Xamarin erbjuder ett alternativ till WinUI för plattformsutveckling. Dess plattformsstrategi baseras på en blandning av XAML-stöd för inbyggda kontroller för både iOS och Android tillsammans med sina egna plattformar Xamarin Forms. Xamarin Forms är en MVVM-utvecklingsplattform (model-view-viewmodel) i sig, med sitt eget kontrollutseende baserat på Androids materialdesignspråk. Xamarin Forms ger iOS- och Android-appar ett konsekvent utseende och samtidigt som de fortfarande får tillgång till integrerade funktioner och tjänster.

Med .NET 6 avsedd att förena de olika .NET-plattformarna är Xamarin Forms den logiska grunden för en ny uppsättning mobil UI-verktyg och ett nytt plattformsgränssnitt för .NET. Microsoft presenterade detta nya tillvägagångssätt vid Build 2020 och kallade det .NET Multiplatform App UI (MAUI).

.NET MAUI är nästa generation av Xamarin Forms, avsedd att tillåta utvecklare att bygga en app en gång i ett enda Visual Studio-projekt med en enda kodbas, inriktad på alla enheter som stöds. Målet är att leverera en förenklad projektstruktur. I stället för en enda lösning med separata projekt för varje plattform du riktar dig till, med MAUI kommer ett enda projekt att innehålla de resurser som behövs för att rikta in sig på specifika plattformar. Om du behöver inbyggda API: er för åtkomst till enhetsspecifika tjänster kan dessa buntas i en plattformsvy och användas vid kompileringstid när du inriktar byggningar för varje plattform. Förutom plattformskoden kan du samla resurser som kommer att användas av din XAML, inklusive bilder och teckensnitt, vilket ger dig en plats att hantera alla element i din applikation.

Den nya projektmodellen som medföljer .NET 6 är nyckeln till detta tillvägagångssätt, eftersom den tillämpar en mer logisk gruppering på modulerna som används i plattformsappar och hur kod byggs och distribueras. Trots de strukturella förändringarna av projekt bör koden du skriver imorgon vara väldigt som dagens, men lättare att distribuera över flera plattformar och hålla sig uppdaterad med ändringar i plattforms-API: er och applikationsdesignresurser.

Vägen till .NET MAUI

Vi är fortfarande månader kvar från att se användbar. NET MAUI-kod, eftersom det beror på. NET 6 SDK-funktioner, även om ett GitHub-arkiv redan är öppet med några av de första implementeringarna. När en förhandsgranskning skickas mot slutet av 2020 bör det vi får vara ganska lik de befintliga Xamarin Forms, som kommer att fortsätta utvecklas parallellt med .NET MAUI. Viktiga förändringar kommer att vara kring hur du strukturerar projekt, med ett nytt namnområde som flyttar från Xamarins eget namnområde till .NET: s system.

Den publicerade färdplanen för .NET MAUI föreslår att vi initialt får en förhandsgranskningsbyggnad baserad på ett nytt namn på den nuvarande versionen av Xamarin Forms, med några förenklingar och nya funktioner som kommer från .NET 6: s nya funktioner. Fler förändringar kommer under 2021 när .NET MAUI och .NET 6 utvecklas, med macOS- och Windows-kontroller som ansluter till Android och iOS sommaren 2021. Du borde kunna leverera enhetliga applikationer till den avsedda november 2021-versionen, med en släppkandidat förfaller September 2021.

Microsoft planerar andra ändringar av Xamarin inom .NET 6-tidsramen, flyttar andra Xamarin-bibliotek till System och byter namn på Xamarin.iOS och Xamarin.Android till .NET för iOS och .NET för Android. Det är ett logiskt drag, om det är lite sorgligt för de av oss som har följt utvecklingen av Xamarin sedan Monos tidiga dagar.

Ett mer positivt sätt att tänka på det är kanske att med övergången till en .NET Core-plattform som grunden för alla saker. NET, så är det inte så mycket som Microsoft absorberar Xamarin som Xamarin blir hjärtat i .NET: s open source-framtid. . Det är ett bra arv för Mono-projektet.