Avantages et inconvénients de Xamarin

Bonjour, Habr! Aujourd'hui, nous allons vous dire ce que les utilisateurs aiment à propos de Xamarin, notre outil de développement d'applications mobiles multiplateforme. De plus, nous aborderons les lacunes de la plateforme. À propos, sous la coupe, vous trouverez beaucoup de code et d'exemples illustratifs, et pas seulement du texte avec une énumération. Rejoignez-nous maintenant!



Cet article a été préparé par nos partenaires, les gars d'EGO.

Xamarin est une boîte à outils pratique pour développer des applications mobiles multiplateformes en C # à l'aide de .NET. Il prend en charge iOS, Android et Windows Phone.

Pour développer une application basée sur Xamarin, vous n'avez pas besoin de bien connaître les langages spécifiques des plates-formes individuelles. De plus, lorsque vous travaillez avec n'importe quelle plate-forme, vous aurez un accès complet aux capacités de son SDK et des mécanismes intégrés pour créer des interfaces utilisateur.

Ainsi, Xamarin vous permet de créer des applications qui ne diffèrent presque pas de leurs homologues natifs, ce qui signifie qu'elles sont tout à fait adaptées à la distribution via les magasins officiels (par exemple, Google Play et l'App Store).

De plus, selon les développeurs de Xamarin, la solution clé en main ne sera pas significativement inférieure en termes de performances.

Considérez les composants de Xamarin.

  • Xamarin.IOS est une bibliothèque de classes C # qui fournit aux développeurs un accès au SDK iOS.
  • Xamarin.Android est une bibliothèque de classes C # qui permet aux développeurs d'accéder au SDK Android.
  • Compilateur C #.
  • .NET Framework
  • Outils IDE (intégrés à Visual Studio pour Mac OS et Windows).

Cet article détaille sept raisons importantes d'utiliser Xamarin pour le développement multiplateforme.



Matériaux supplémentaires: comparaison de Xamarin et PhoneGap .

1. Facile à apprendre


À quoi devez-vous faire attention en premier lors du choix d'une plateforme? Bien sûr, la complexité de son développement. Il est peu probable que beaucoup souhaitent passer du temps à maîtriser la syntaxe (par exemple, pour une possession assez confiante d'Angular, vous devez étudier cette plate-forme pendant au moins plusieurs mois). Par conséquent, si la création de code de haute qualité nécessite une préparation extrêmement sérieuse, de nombreux débutants ne parviennent tout simplement pas à maîtriser pleinement l'environnement de développement. Mais commencer avec Xamarin est facile: vous n'avez pas à apprendre le langage Xamarin ou quelque chose comme ça.

using Xamarin.Forms; RootPage.Children.Add(new ContentPage { Content = new Label { Text = "Sketches in Forms", BackgroundColor = Color.Yellow, TextColor = Color.Blue, Font = Font.SystemFontOfSize(NamedSize.Large), VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, } }); 

Il suffit de connaître le langage C # avec son style impératif d’écriture de programmes, de se sentir libre de se sentir dans l’environnement .NET et d’apprendre plusieurs classes liées à des plateformes spécifiques.

 using System.Diagnostics; using Foundation; using UIKit; namespace NeonPlayerConcept.iOS { [Register("AppDelegate")] public class AppDelegate : UIApplicationDelegate { public override UIWindow Window { get; set; } public static void Main(string[] args) { UIApplication.Main(args, null, "AppDelegate"); } } } 

Source

Pour créer une application complètement «native» pour une plateforme particulière, vous devez avoir une connaissance suffisante de Java (dans le cas d'Android) ou d'Objective-C / Swift (pour iOS). Dans certains cas, cela peut être un obstacle sérieux. Voyons comment la même tâche, qui implique la création d'une chaîne d'attributs, est résolue en Objective-C et en C #.

Dans l'objectif-C:

 CFStringRef stringKeys[] * { kCTFontAttributeName, kCTForegroundColorAttributeName }; CFTypeRef stringValues[] * { myListFontRef, COColorGetConstantColor(kCOColorWhite) }; attr = CFDictionaryCreate (kCGAllocatorDefault, (const void **) &stringKeys, (const void **) &stringValues, sizeof(stringKeys) / sizeof(stringKeys[0]), &kCFTypeDictionaryKeyCallbacks, &kCFTypeDictionaryValueCallbacks); astr = CFAttributedStringCreate(kCFAllocatorDefault, CFSTR(“Hello from ego team!”), attr); 

En C #:

 var stringAttributes = new CFStringAttributes { Font = myFont, ForegroundColor = UIColor.White.CGColor }; var myString = new NSAttributedString (“Hello from EGO team!”, attrs); 

Si vous n'utilisez pas les capacités de développement multiplateforme de Xamarin, pour créer un projet commercial qui aurait des performances suffisantes sur les deux plates-formes, vous devrez peut-être utiliser deux approches différentes à la fois. Cela signifie que les coûts sont presque doublés.

2. Réduisez les coûts du projet


Sur la base des avantages décrits ci-dessus, on peut noter que le développement multiplateforme utilisant Xamarin nécessite environ 1,5 fois moins de temps (et d'argent) que la création d'un projet spécialisé séparé pour chaque plate-forme.

Bien sûr, certains morceaux de code (par exemple, les composants utilitaires) seront les mêmes dans les deux versions, et d'autres (en particulier, la logique métier qui n'utilise pas les fonctions spécialisées de la machine utilisateur) ne nécessiteront que des modifications mineures. Cependant, la situation globale est un peu plus compliquée. Certains composants de votre application devront inévitablement être écrits à partir de zéro pour chaque système d'exploitation. Lors de la création et du déploiement de deux applications pour deux plates-formes, il est presque toujours nécessaire d'engager deux équipes de développement. L'utilisation de Xamarin est beaucoup plus simple:

Grâce aux API indépendantes de la plateforme, environ 70% du code sera écrit dans un format universel.

Dans cet exemple, la classe MainPage utilise l'interface ITextToSpeech pour sélectionner la fonction souhaitée sur une plateforme spécifique:

 ITextToSpeech.cs: public interface ITextToSpeech { void Speak (string text); } TextToSpeech_Android.cs: [assembly: Dependency (typeof (TextToSpeech_Android))] namespace UsingDependencyService.Android { public class TextToSpeech_Android : Java.Lang.Object, ITextToSpeech { TextToSpeech speaker; string toSpeak; public TextToSpeech_Android () {} public void Speak (string text) { \\Android-specific code } } } TextToSpeech_iOS.cs: [assembly: Dependency (typeof (TextToSpeech_iOS))] namespace UsingDependencyService.iOS { public class TextToSpeech_iOS : ITextToSpeech { TextToSpeech speaker; string toSpeak; public TextToSpeech_Android () {} public void Speak (string text) { … \\iOS-specific code } } } MainPage.cs: public class MainPage : ContentPage { public MainPage [] { var speak = new Button { Text = “Hello, world!”, VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, }; speak.Clicked += (sender, e) => { DependencyService.Get<ITextToSpeech>().Speak("Hello from Xamarin Forms"); }; Content = speak; } } 

3. Possibilité de créer des interfaces utilisateur comme "native"


L'une des principales raisons pour lesquelles les développeurs évitent les outils de développement multiplateforme est que ces outils ne vous permettent pas d'utiliser la gamme complète des capacités d'environnements spécifiques. Cela concerne principalement le design (Flat Design sous iOS, Material Design sous Android) et les capacités intellectuelles des appareils utilisateurs (accès aux contacts, appareil photo, données GPS, etc.).

La solution finale multiplateforme n'aura pas de hautes performances (cet inconvénient est inhérent à presque toutes les applications créées à l'aide d'outils Web multiplateforme) et ne pourra pas tirer parti de plates-formes spécifiques (ce qui signifie que certaines fonctionnalités initialement prévues par le créateur du projet peuvent pas entièrement mis en œuvre).

Cependant, tout est différent lors de l'utilisation des outils Xamarin pour le développement multiplateforme d'applications "natives". Dans ce cas, vous ne rencontrerez pas les problèmes ci-dessus. Non seulement les classes .NET standard sont disponibles pour les développeurs: elles peuvent facilement connecter des classes prises en charge par une plate-forme mobile spécifique (elles sont contenues dans les bibliothèques C # pour Xamarin.Android et Xamarin.iOS, respectivement). Cela signifie que lorsque vous utilisez Xamarin pour développer des applications pour iOS et Android, vous aurez à votre disposition la gamme complète des capacités de ces plateformes. Vous n'avez pas besoin d'utiliser des outils tiers (et généralement payés).

4. Conditions optimales pour les tests


Tester un produit en cours de préparation pour la sortie n'est pas une tâche triviale, surtout en ce qui concerne la plate-forme Android. Les formats d'écran des appareils iOS utilisateur sont clairement définis et connus à l'avance, mais les appareils Android sont très différents. Si l'application n'a pas été testée sur un appareil spécifique, son interface peut dans certains cas «se disperser». Les créateurs de Xamarin ont proposé une solution à ce problème.

En particulier, Test Cloud est également disponible pour les utilisateurs de la plateforme, ce qui permet d'émuler plus de 2000 appareils. Cette décision n'est pas gratuite, mais les coûts seront justifiés.



Matériel supplémentaire: neuf meilleurs outils de test d'applications mobiles pour iOS et Android .

5. Compatibilité parfaite avec les appareils IoT


Si vous souhaitez que votre application reçoive des données sur l'emplacement de l'utilisateur, le gyroscope, l'accéléromètre ou d'autres capteurs intégrés, alors Xamarin sera un excellent choix.

 private void Instance_Ranged(object sender, System.Collections.Generic.IEnumerable<IBeacon> e) { Try { var data = string.Empty; foreach (var beacon in e) { data = $@”region id: {beacon} } _labelContent.Text = data; LogStatus(@”Ranged”); } catch (Exception exception) { LogStatus(exception.ToString()); } } 

Cet environnement de développement est entièrement compatible avec les appareils IoT (par exemple, avec Estimote ) qui vous permettent de recevoir des données de localisation, ce qui signifie que vous n'avez pas à configurer l'intégration avec des solutions tierces (d'autant plus que cela ne sera pas possible en principe).

6. Une documentation de qualité et une grande communauté


Une documentation bien organisée est disponible pour Xamarin avec des exemples pratiques, des extraits de code et des instructions pas à pas.

Bien sûr, certaines questions ne peuvent y répondre. Dans ce cas, la communauté en ligne vous aidera. Il existe deux communautés Xamarin officielles: sur le site officiel de la plateforme et sur le portail StackOverflow.

Si vous ne parvenez toujours pas à obtenir les informations dont vous avez besoin (certains développeurs se plaignent que les experts de la communauté ne sont pas très actifs), vous pouvez contacter le service de support technique privé disponible pour les titulaires d'une licence commerciale Xamarin. Les spécialistes vous répondront dans quelques heures et vous proposeront non seulement un ensemble de procédures standard qui aident rarement à résoudre complètement le problème, mais des instructions détaillées étape par étape pour résoudre votre problème particulier.

7. Intégration parfaite avec Microsoft Windows


Presque toutes les entreprises informatiques disposent d'une infrastructure développée de logiciels utilisés sur la plate-forme Windows.

Pour toutes les éditions de Visual Studio (pour Mac OS et Windows) depuis le printemps 2016, Xamarin est également fourni dans le cadre de l'abonnement. Si vous utilisez déjà Visual Studio pour le développement, vous n'avez pas besoin de payer de supplément.

Inconvénients de Xamarin


Nous avons essayé de parler en détail des points forts de Xamarin et avons examiné un certain nombre de ses avantages évidents. Cependant, nous souhaitons rendre cet examen plus objectif, nous nous tournons donc vers les faiblesses de la solution. En fait, un seul inconvénient mérite l'attention: la taille des applications écrites à l'aide de Xamarin dépasse généralement légèrement le volume des équivalents natifs. Néanmoins, l'optimisation n'est jamais superflue.

Alors, quelle est l'efficacité de Xamarin?


Xamarin présente plusieurs avantages et est excellent pour les projets à grande échelle visant à développer des applications multiplates-formes complexes en termes d'architecture, similaires aux solutions natives.

Source: https://habr.com/ru/post/fr415833/


All Articles