
Der Xamarin-Ansatz (oder: Das Beste aus beiden Welten)
Xamarin ist eine Entwicklungsplattform für Cross-Platform – Development, die es ermöglicht, alle maßgeblichen mobilen Plattformen mit einer einzigen Codebasis anzusprechen, und dabei trotzdem direkt die jeweils hersteller- bzw. plattformspezifischen Technologien zu verwenden. Dadurch werden die (überwiegend technischen) Nachteile der beiden vorgenannten Ansätze umgangen, während deren (wirtschaftliche) Vorteile kombiniert werden. Man erhält also gewissermaßen das Beste aus beiden Welten.
Der Prozentsatz des über alle Plattformen geteilten Codes kann dabei – je nach gewählter Entwicklungsmethode und den spezifischen Gegebenheiten des konkreten Projekts – bis zu 95% betragen. Im Folgenden werden die beiden Möglichkeiten der Entwicklung auf der Xamarin-Plattform kurz vorgestellt.
Der “traditionelle” Ansatz
Xamarin mit seinen beiden Teilen Xamarion.iOS und Xamarin.Android [1] ermöglicht es, die Applikationslogik oder große Teile davon zwischen den verschiedenen Plattformen zu teilen, und auf diese geteilte Codebasis dann relativ schlanke plattformspezifische Projekte (Sie enthalten im Wesentlichen die jeweilige Benutzeroberfläche; sowie je nach konkreten Erfordernissen eventuell weitere plattformspezifische Implementierungen.) aufgesetzt werden.
Die Benutzeroberflächen werden unter Verwendung von jeweils nativen Elementen mithilfe eines visuellen Designers entwickelt, während der Löwenanteil des Codes – die Geschäftslogik der Anwendung – von den einzelnen Plattformen gemeinsam verwendet werden kann. Das Diagramm links veranschaulicht dies.
Typischerweise [2] beträgt der Anteil an plattform-neutralem Code bei diesem Ansatz um die 75%.
Xamarin.Forms
Mit Xamarin.Forms drehte Xamarin die Schraube der Wiederverwendbarkeit Mitte 2013 noch ein Stück weiter: Mit dieser Erweiterung ist es möglich, auch die Benutzeroberfläche in der geteilten Codebasis zu definieren. Dies kann entweder direkt im Quellcode erfolgen oder aber deklarativ mithilfe der XML-Erweiterung XAML, so dass in den Plattform-Projekten nur noch ein paar Zeilen systemspezifischer Initialisierungs-Code verbleiben.
Dabei ist Xamarin.Forms so konzipiert, dass es im Wesentlichen diejenigen UI-Steuerelemente bereitstellt, die den drei Plattformen iOS, Android und Windows Phone gemeinsam sind, und diese dann jeweils auf die nativen Steuerelemente der entsprechenden Plattform abbildet. Das macht Xamarin.Forms zur idealen Plattform für mittelkomplexe oder Geschäftsanwendungen, jedoch nicht in jedem Fall zu einem vollwertigen Ersatz für die “traditionelle” Xamarin-Entwicklung. Dies trifft allem dann zu, wenn die zu entwickelnde Anwendung stark auf plattformspezische Oberflächenelemente oder Features zurückgreift, oder wenn technisch anspruchsvolle Szenarien wie etwa Vektorgrafiken oder komplexe Touch-Interaktionen unterstützt werden sollen.
Mit Xamarin.Forms kann der Anteil an von allen Projekten gemeinsam verwendetem Code so auf bis 95% ansteigen.
Neben den hier genannten architektonischen Vorzügen gibt es aber auch eine Menge von weiteren Argumenten, die die Xamarin-Plattform zu einer ausgezeichneten Wahl für die Entwicklung mobiler Apps macht.
Eine kurze Auflistung der wichtigsten dieser Argumente ist auf der nächsten Seite zusammengestellt.
Referenzen und Anmerkungen
[1] | Die Entwicklung für Windows Phone ist natürlich ebenso möglich. Dafür wird jedoch keine zusätzliche Komponente benötig. |
[2] | Unter Verwendung von Architekturmustern wie Model-View-Controller (MVC) und ganz besonders Model-View-ViewModel (MVVM), die vielen C#-Programmierern aus der Web-Entwicklung (MVC) oder der Desktop-Entwicklung (MVVM) bereits vertraut sind. |