MAUI jest już z nami od kilku miesięcy i jest bardzo mocno promowane przez Microsoft. Jest to niezmiernie ciekawa opcja do pisania aplikacji pod różne systemy i środowiska. O ile jednak w przypadku pisania aplikacji desktopowych czy webowych, taki MAUI jest ciekawostką dla deweloperów .NET, to w przypadku świata mobilnego jest zupełnie inaczej.
Rok temu w listopadzie 2021 pisałem o tym jak tworzenie mobilnych aplikacji w .NET jest nie lada wyzwaniem. Oficjalne zakończenie wsparcia dla Xamarin.Forms i przedstawienie alternatywy w postaci MAUI, które w 2021 roku nie doczekało się premiery, powodowało ból głowy mobilnych deweloperów .NET. Mimo, iż w maju 2022 roku MAUI miało oficjalną premierę, to nadal sytuacja nie jest wcale lepsza.
Samo MAUI nie jest jeszcze narzędziem, które można uznać w 100% gotowe na to, aby pójść z nim na produkcję. Wiele jeszcze mniejszych niedoróbek i problemów spędza sen z powiek deweloperów mobilnych w .NET. Mimo, że dostaliśmy wersję finalną, nie jest to wersja, która pozwoli na bezproblemowe działanie aplikacji biznesowych. Szczególnie jest to niekomfortowe, gdy chcąc pisać mobilne aplikacje w .NET, nie mamy alternatywy. Ale problemem jest również to, że MAUI nadal siedzi głęboko w roku 2008...
XAML - archaizm będący hamulcem MAUI
Śmiało mogę powiedzieć, że dla MAUI ciężko coś zarzucić (abstrahując już od problemów wieku dziecięcego). Świetne podstawy w założeniach, duże zaangażowanie Microsoftu i spory udział społeczności. Jest tylko jedno "ale" i to dość duże - XAML.
XAML miał premierę dawno temu w okolicach powstania WPF / WF. Przez ten czas był ściśle związany z tworzeniem UI i stał się w pewnych kręgach wymarzonym "produktem" do tworzenia interfejsu. WPF (niech żyje na wieki) czy nowy WinUI 3 (rozkręca się) opierają się na XAML i nikt go tam nie piętnuje. Ale XAML to też technologie, zapomniane i słusznie wymarłe jak Silverlight, Windows Phone czy UWA, a teraz i Xamarin. Przez te lata świat się zmieniał, a XAML jak był ociężały i przegadany tak i nadal jest.
Będąc ostatnio na .NET Developer Days jedna z głównych prezentacji związana była właśnie z MAUI. A że można było tam zadawać pytania przez mobilną apkę, zerknąłem o co uczestnicy konferencji najczęściej pytają. I nie uwierzycie. Tak. "Dlaczego w MAUI nadal jest XAML?". Cóż, zatem nie tylko ja mam dość ambiwalentne podejście do MAUI właśnie przez ponownie użycie XAML, które wg mnie, w większych aplikacjach zupełnie nie sprawdzało się w Xamarinie (Forms). Widoki mobilne w XAML są nad wyraz opasłe i w połączeniu z MVVM tworzą dziwną hybrydę lekkości z przesadnie sformalizowaną składnią opartą na XML.
Szczególnie widać "klocowatość" języka XAML, gdy wychylimy się trochę poza nasz .NETowy grajdołek. A tu, od kilku lat, w mobilce rozpycha się z niemałym sukcesem...
Flutter
Comet - MVU dla MAUI
public class MyPage : View { readonly State<int> clickCount = 1; readonly State<string> text = "Hello World"; public MyPage() { Body = () => new VStack { new Text (text), new Button("Update Text", () => state.Text = $"Click Count: {clickCount.Value++}") }; } }
W tym przypadku naszym View jest ekran zaś Model to obiekty State, a Update robiony jest przez Comet. To samo możemy zrobić jeszcze inaczej, poprzez atrybuty:
public class MyPage : View {
[State]
readonly HelloWorldModel hello = new
{
Text = "Hello World"
};
[Body]
View body()
=> new VStack {
new Text (() => hello.Text),
new Button("Update Text", () => hello.Text =
$"Click Count: {hello.Value++}")
};
public class HelloWorldModel: BindingObject
{
public int Value
{
get => GetProperty<int>();
set => SetProperty(value);
}
public string Text
{
get => GetProperty<string>();
set => SetProperty(value);
}
}
}
Repozytorium jest dostępne oczywiście na GitHube: https://github.com/dotnet/Comet.
Początki projektu sięgają roku 2019 i obecnie repozytorium znajduje się w domenie Microsoftowej "dotnet". Głównym deweloperem jest James Clancey. Do niedawna był on pracownikiem Microsoftu, ale w czerwcu tego roku rzucił giganta z Redomond i rozpoczął prace w Meta od Fecbooka.
Od razu warto wziąć pod uwagę, że mimo zainteresowania Cometem ze strony Microsoftu, jest to nadal projekt, który jest tylko podglądową paczką jako PoC. Mimo tego, posiada on HotReload i pełne wsparcie dla debugowania. Społeczność bardzo szybko zainteresowała się Cometem. W sieci znajdziemy wiele wpisów blogowych i poradników na YouTubie odnośnie tego projektu.
Comet aż się prosi o to, aby Microsoft oficjalnie wziął pod swoje skrzydła ten projekt i rozpoczął wreszcie prace nad MVU w MAUI. XAML jest ciekawy, ale konkurencja w postaci Fluttera odskoczyła bardzo daleko. Tak bardzo, że pudrowanie MAUI poprzez XAML mocno nadwyręża społeczność deweloperów, którzy oczekują po następcy Xamarin.Forms faktycznie bycia platformową nowoczesną, a nie tkwiącą jeszcze w zamierzchłych czasach Silverlighta i Windows Phone. Liczę, że faktycznie Comet (albo jego odpowiednik od Microsoftu) będzie w stanie dostarczyć swobodę MVU od Fluttera w projektach MAUI. Czego życzę sobie i Wam.
(Wpis na portalu dobreprogramy)
Komentarze
Prześlij komentarz