Xamarin: Vergleich mit nativen SDK- und JS-basierten Frameworks

8

Eines der Hauptmerkmale des Codierens mit dem nativen SDK, das von Android und iOS bereitgestellt wird, ist die Tatsache, dass Sie nicht nur eine bessere Leistung, sondern auch das Aussehen und Verhalten jeder Plattform erhalten. In iOS befindet sich eine Tab-Navigationsleiste am unteren Bildschirmrand, während sie sich in Android oben befindet (yeah Ich weiß, dass es auch top und bottom sein kann, aber du bekommst meinen Punkt), oder auch das Navigationsschublade dock ist ein Android-Navigationsstil, während es (soweit ich weiß) nichts Ähnliches in iOS-nativem sdk gibt. Mein Punkt ist, Sie können den Unterschied der Plattformen durch ihre Designrichtlinien fühlen was eine gute Sache ist, da es Ihre App professionell aussehen lässt.

Wenn Sie dies in Bezug auf Leistung berücksichtigen und das Gefühl Ihrer App beibehalten, verwenden Sie JS-basierte Frameworks wie Titanium oder PhoneGap wird keine kluge Wahl treffen.

Dann kommt Xamarin . Wie ich hier lese: Xamarin, wie es das bekommen wird Natives Look and Feel? Es scheint, dass es sich um ein C# -Wrapper für das native SDK handelt, was soweit ich weiß, sollte es die Leistung nicht beeinträchtigen. Aber wo ist der Look and Feel Teil. Da XML-Layouts nicht ganz das sind, was Android oder iOS apps ihr Gefühl gibt, sondern auch die Navigation (die von den Controller-Klassen kommt), wie geht Xamarin damit um? Es wird auf ihrer Website gesagt, dass Sie Code zwischen Plattform teilen können, aber wird das auch bedeuten, dass ich Navigationssystem und ähnliches teilen muss?

Schließlich lohnt es sich NICHT, natives SDK zu verwenden und mit Xamarin zu gehen, um "keinen Code für jede Plattform zu schreiben" (ich habe wirklich kein Problem, Code zu schreiben) für iOS und Android) oder ist dieses Framework-Ziel für C# -Entwickler, so dass sie Objective-C oder Android nicht erlernen müssen.

Jede zusätzliche Erklärung wäre großartig und danke im Voraus.

    
Christopher Francisco 02.05.2014, 02:15
quelle

3 Antworten

13

Ich habe eine große Anwendung innerhalb des letzten Jahres (2013) mit verschiedenen Komponenten erstellt: hauptsächlich eine API (ASP.NET Web API = & gt; C #), eine Website (ASP.NET MVC = & gt; C # + AngularJS), und sowohl eine App für Android (Xamarin.Android = & gt; C #) und iOS (Xamarin.iOS = & gt; C #). Die Entscheidung, Xamarin einzusetzen, hatte seine Vorteile und Nachteile, aber insgesamt bin ich mehr als zufrieden damit.

Wie Sie in meiner obigen Liste sehen können, wurde fast alles mit C # gemacht (okay, die Website ist hauptsächlich in JavaScript geschrieben ;-)). Es ist eine wundervolle reife Sprache mit wirklich netten Eigenschaften (als LINQ). In meinem Szenario wird klar: Ich musste vier Sprachen (Swift / Objective-C, Java, C #, JavaScript) nicht lernen und perfektionieren, sondern nur zwei: C # und JavaScript.

Das kommt vor allem im Hinblick auf den Code-Sharing-Aspekt ins Spiel: Unsere Client-Anwendungen sind aufgrund einer Offline-Funktionalität, die viel Synchronisationslogik erfordert, keine wirklichen Thin-Clients, daher ist der UI-Teil der beiden Apps nur eine Seite des Medaille. Wie sich herausstellte, konnte ich 90% dieses Nicht-Interface-Codes sowohl auf iOS als auch auf Android verwenden. Dies ist ein unglaublich großer Vorteil, da es nicht nur um die Originalität einiger Sprachen von Swift / Objective-C oder Java geht, sondern auch um die verschiedenen Frameworks, die Sie auf iOS und Android verwenden. Wenn Sie .NET Framework / Mono als Grundlage für jede Xamarin-App verwenden, können Sie Dinge wie Datenzugriff oder Netzwerkkommunikation vom zugrunde liegenden Betriebssystem abstrahieren.

In Bezug auf Geschwindigkeit und Benutzeroberfläche haben Sie keine Nachteile, da Sie die nativen APIs 1: 1 verwenden. Was auch immer unter iOS oder Android verfügbar ist, ist auch über Xamarin verfügbar. Und wenn Apple zum Beispiel eine neue Version von iOS liefert, wird Xamarin das Update innerhalb weniger Tage liefern, so dass Sie nicht warten müssen, um neu eingeführte Funktionen von Apple nutzen zu können.

Xamarin verwendet eine Methode namens Ahead of Time Compiling unter iOS. Daher wird alles, was Sie in C # schreiben, in das native iOS-Zeug kompiliert, bevor es auf Ihrem Gerät bereitgestellt wird. Das bedeutet, dass es keinen Unterschied in der Ausführung zwischen einer "nativen" Objectice-C-Anwendung und einer Xamarin-Anwendung gibt (mit Ausnahme eines kleinen Overheads, der aus meinen Erfahrungen nicht hervorzuheben ist).

Bei Android Just in Time wird die Kompilierung genauso wie jede andere "native" Android-App verwendet.

Das bedeutet, dass Sie genau die gleichen APIs und Möglichkeiten haben, die Sie sonst hätten, wenn Sie mit Objective-C oder Java arbeiten würden. Sie verwenden sogar die gleichen Objekte für den Aufbau Ihrer Benutzeroberfläche mit den gleichen Typen und Namen (manchmal leicht optimiert;)). Wenn Sie also eine Tab-Leiste für Ihre App wünschen, verwenden Sie dafür einen UITabBarController. Siehe iOS im Gegensatz zu Xamarin .

Nach mehreren Jahren auf meinem Weg mit Xamarin habe ich nur einen Nachteil:

Mögliche Speicherlecks. Ihre ganzen Proben da draußen sind ein Haufen Mist in Bezug auf essentielle Grundlagen zur Verhinderung von Speicherlecks. Wenn Sie mit "teuren Ressourcen" wie Mediendateien in Ihrer Anwendung arbeiten, sollten Sie vom ersten Tag an darauf achten. Ich musste all diese Probleme loswerden, als eine App von mir bereits auf bis zu 35 verschiedene (komplexe) Dialoge angewachsen war. Das hat mich fast zwei Monate oder anders gesagt Tausende von Dollars gekostet. Sie stellen einige Dokumentationen zur Verfügung , aber die Werkzeuge sind zu diesem Zweck schlecht. Und Fehler werden wahrscheinlich erscheinen und sehr schwer zu finden sein ( Beispiel ).

Aber alles in allem war es eine meiner besten Entscheidungen, mit Xamarin zu gehen.

    
asp_net 02.05.2014, 19:55
quelle
5

Ich habe schon eine Weile mit Xamarin gearbeitet. Es war bisher großartig. Irgendwelche Probleme, die ich hatte, habe ich herausgefunden, weil c # meine Muttersprache ist. Die Xamarin-Site enthält viele Beispiele und API-Referenzen für viele Funktionen auf allen Plattformen.

  1. Leistung - Sie erhalten native Leistung durch die Verwendung von Xamarin. Keine Fragen gefragt. Ich nutze es, um Audio-, Video- und Fotoaufnahmefunktionen für eine neue App zu erstellen, an der ich gerade arbeite. Xamarin verarbeitet den c # -Code für alle Plattformen in nativen Byte-Code. So wird dies erreicht.

  2. Aussehen - Das Aussehen Ihrer App wird nativ sein. Sie müssen buchstäblich das Android-XML-Format verwenden, um Ihre Benutzeroberfläche und das gleiche Goes für IOS zu machen. Sie werden Ihre Elemente immer noch so gestalten, wie Sie es auf jeder Plattform getan haben. Alles, was Xamarin tut, verlinkt eine Ansicht für Sie.

  3. Api - Die Schönheit von Xamarin ist in der API. Sie portierten den gesamten Android- und IOS-Namespace nach c #. Sehen Sie sich die Dokumentation an.

  4. Teuer - Mein einziges Problem mit Xamarin ist, dass es teuer ist. Wenn Sie ihre Preisgestaltung überprüfen, ist es unverschämt. Aber du bekommst, wofür du bezahlst. Ein Premium-Produkt, das durch Support unterstützt wird.

  5. C # - Sharp ist eine großartige Sprache, die jede Menge Unterstützung bietet. Das neue async / await wird von der ganzen Problematik des Threadmanagements begleitet. Json-Verarbeitung ist super einfach auf der Plattform. Ich habe mehrere Klassen auf Github hochgeladen, die für viele Apps verwendet werden können.

Wenn Sie von einem Java-Hintergrund sind, wird das Auffrischen Ihrer c # Fähigkeiten ein Kinderspiel.

Die rdio App wurde mit Xamarin erstellt. Laden Sie es auf Android und IOS herunter und testen Sie seine Leistung und genießen Sie seinen nativen Look.

Viel Glück

    
leafartist 02.05.2014 02:58
quelle
2

Es gibt viel mehr Internet-Inhalte, Hilfe und Support für native. Das allein hilft mir, meine Wahl zu treffen. Wenn du wirklich gut in Xamerin bist, werden 70% des Codes, den du schreibst, von beiden Apps verwendet werden können. Du musst die Dinge noch für jede App anpassen.

Aber wieder ist die Unterstützung für Native so groß, dass, wenn Sie auf ein Problem stoßen, auch jemand anderes.

Mit Xamerin, nun, viel Glück.

Wenn ich App sage, meine ich iOS / Android

    
WIllJBD 02.05.2014 02:30
quelle

Tags und Links