Kaliop Poland
Xamarin.Forms - tak czy nie

Xamarin.Forms - tak czy nie

To czym jest Xamarin.Forms można zamknąć w dwóch słowach: współdzielenie kodu (code sharing). Framework stworzony do tworzenia aplikacji mobilnych (Android + wear + auto, iOS, Windows Phone) w oparciu o ten sam kod, który kompilowany jest dla każdej platformy mobilnej oddzielnie.

Część wspólna kodu nawet 90%. Współdzielimy klasy encji, widoków, kontrolerów czy klas narzędziowych. Xamarin.forms wydaje się, że jest jedną z najciekawszych technologii umożwiających współdzielenie kodu. Rozwiązania oparte o kontrolki Web  View nie są wystarczająco wydajne.

Xamarin.Forms umożliwia tworzenie interfejsu graficznego, który renderowany jest na natywne kontrolki, oznacza to, że look&feel będzie przystosowany dla każdej platformy.

Co na tak?

Niewątpliwą zaletą tego frameworku jest język, w którym tworzymy aplikacje. Popularny wsród wielu deweloperów C# umożliwia szybkie rozpoczęcie pracy lub krótki czas potrzebny na szkolenie programistów nie znających tego języka.

Do tworzenia interfejsu wykorzystywany jest, znany już z .NET Framework, XAML. Deweloperzy tworzący natywne aplikacje na Windows Phone, z wyboru tego rozwiązania będą na pewno zadowoleni, ponieważ większość kontrolek jak i sposób projektowania interfejsu jest bardzo podobny.

Zaleca się wykorzystanie MVVM (Model View - ViewModel) jako wzorca projektowego, który idealnie komponuje się z XAML’em, umożliwiając oddzielenie widoku od logiki.

Bindowanie pokazuje się z najlepszej strony szczególnie podczas wykorzystywania kontrolki ListView. Nie ma praktycznie potrzeby zaglądania do kodu, ustawiamy źródło dla naszej i gotowe.

Coś co zwraca szczególną uwagę to kompilowanie do natywnego kodu. Zyskujemy tym samym dostęp do wszystkich narzędzi dostępnych wykorzystywanych przez deweloperów tworzących w natywnych technologiach. Nie musimy więc zapominać o Google play services, NFC, CoreMotion czy Tiles.

I co na nie?

Niestety nie może być tak różowo. Najbardziej brakuje podglądu wizualnego layoutów, przez co tworzenie interfejsów staje się bardzo czasochłonne. Przechodzenie przez kompilację i instalację na urządzeniu lub symulatorze zabiera sporo czasu, szczególnie jeśli jest to czynność powtarzana wielokrotnie.

Własne, choć może i nie za długie w tej technologii, doświadczenie ale także opinie innych deweloperów nakazują uważać, że najsłabszym elementem jest wydajność interfejsów. Podobne aplikacje, lecz tworzone w technologiach natywnych sprawiają wrażenie zdecydowanie przyjemniejszych w użytkowaniu. Widoczne jest to szczególnie jeśli do kontrolki ListView dodamy bardzo dużą liczbę skomplikowanych elementów.

Społeczność

Osobiście nie jestem do końca przekonany czy to jest zaleta czy wada. Z jednej strony jesteśmy w stanie znaleźć wiele ciekawych bibliotek z drugiej, to ilość deweloperów w porównaniu do natywnych technologii jest praktycznie żadna, więc i znalezienie odpowiedzi na pytania bywa trudne lub wręcz czasami nie możliwe.

Po znalezieniu interesującej nas biblioteki sam proces pobrania i wykorzystania jest banalnie prosty. Aby to zrobić wystarczy w oknie nuGet Packages znaleźć wybraną przez nas bilbiotekę i kliknąć Install i już. Niestety niektóre biblioteki musimy instalować dla każdej platformy na którą tworzymy aplikację.

Tak czy nie?

I tak… i nie. Ze względu na czasochłonność, liczne ograniczenia i trudność w tworzeniu miłych dla oka interfejsów, nie nadaje się do projektów gdzie najistotniejszą rzeczą jest projekt graficzny. Więc do czego? Jeśli nie zależy nam na wymagającej oprawie graficznej, a najważniejszą rzeczą jest kontekst i szybkie utworzenie aplikacji na 3 platformy to to jest świetne rozwiązanie. W kilkanaście godzin możliwe jest utworzenie aplikacji, która będzie pobierać dane z różnych API i wyświetlać je w prostej formie, a zarazem przy użyciu jednego kodu stworzymy aplikację na 3 platformy.

Trzeba pamiętać, że jest to młoda technologia, która na pewno będzie się jeszcze mocno rozwijać. Ostatnio wprowadzona funkcjonalność PullToRefresh została przyjęta przez społeczność z wielkim zadowoleniem, więc jest szansa, że w przeciągu następnych sześciu miesięcy opinie o Xamarin.Forms będą zdecydowanie lepsze.

Autor:
Krzysztof Majkowski, developer Kaliop Poland