Meilleur auteur de réponses
Quelle architecture pour une appli mobile Xamarin et un backend ASP.NET Core?

Question
-
Bonjour,
J'ai été contacté par un client qui souhaite développer une application mobile iOS/Android. Le but de l'application est de proposer la géolocalisation de prestataires proposant des services. Chaque prestataire doit pouvoir décrire son activité et ses services (description, photos, tarifs) et proposer des offres promotionnelles. L'utilisateur final doit pouvoir consulter la liste des prestataires, effectuer des recherches selon plusieurs critères, réserver une prestation et noter le prestataire.
Dans un premier temps, mon client souhaiterait obtenir une première version qui soit un "POC" avancé : l'application doit être stable et contenir toutes les fonctionnalités, mais des concessions sont acceptables sur l'ergonomie ou la fluidité.
Comme mon client connait Xamarin, et que je l'ai déjà utilisé sur de petits projets, le choix de Xamarin.Forms me semble donc pertinent pour la première version de l'appli mobile.
Par contre, pour le backend c'est moins clair. Je pense que mon client avait un peu sous-estimé la charge de développement pour un tel projet, et j'ai donc identifié les besoins principaux :
- les APIs qui seront utilisés par l'application mobile
- un "backoffice" qui sera utilisé par la société pour gérer les prestataires
- un "middleoffice" qui sera utilisé par les prestataires pour gérer leurs offres, et valider les réservation des utilisateurs
Par contre mon client aurait une préférence pour une architecture Symfony / Angular, qu'il a déja pu expérimenté sur d'autres projets, alors que je privilégierais une architecture "full .NET" : Xamarin + ASP.NET Core + Azure
Qu'en pensez-vous? Y aurait-il des frameworks ou des plugins que je pourrais utiliser dans ce contexte? (comme Serinity)
Comment
Réponses
-
Bonjour,
Il y a plusieurs aspects :
Pour les apis, en .NET, le plus simple est d'adopter une application ASP .NET WebApi.
Core ou full .NET, tout dépend des serveurs de votre client mais Core permet d'avoir des serveurs autre que Windows (si c'est une réelle demande de la part de votre client).
Ensuite, pour le backoffice et le middleoffice, ce sera certainement une application Web. Elle peut aussi s'appuyer sur le site ASP .NET WebApi ou plus vraisemblablement sur une autre appli web ASP .NET WebApi. Dans ce cas, les applis clientes peuvent être de l'Angular 100%.
Donc moi je préconiserais :
- Une appli Xamarin (pour avoir du vrai natif pour les applis clientes),
- Une appli ASP .NET WebApi pour l'exposition des données pour les applis Xamarin et qui communique avec le middle et le back,
- Une appli ASP .NET WebApi pour les données du middle
- Une appli Angular pour l'appli cliente du middle
- Idem pour le back.
Ca fait du boulot ;-)
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone- Marqué comme réponse Nina ZaekovaMicrosoft contingent staff, Moderator jeudi 1 juin 2017 07:37
-
Ben si il n'a pas de serveur, Azure c'est bien ;-)
Et effectivement tu peux utiliser les blobs storage pour les photos, le push & co.
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone- Marqué comme réponse Nina ZaekovaMicrosoft contingent staff, Moderator jeudi 1 juin 2017 07:37
-
Je pense qu'économiquement, c'est plus intéressant car plus flexible. Et si votre client a un gros succès, il n'y aura pas de pb de montée en charge.
Et surtout, il n'aura pas à payer une équipe IT ;-)
Maintenant, c'est vraiment une décision stratégique à prendre de la part de votre client, pas au développeur.
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone- Marqué comme réponse Nina ZaekovaMicrosoft contingent staff, Moderator jeudi 1 juin 2017 07:38
-
Bonjour,
Etant dans une phase de "POC", Azure a son intérêt car vous pouvez vous adjoindre différents services à la demande sans vous préoccuper du matériel et/ou du système. Pour démarrer et faire des essais d'architecture, la flexibilité du cloud et un plus à mon avis.
Ensuite à vous de "rationaliser" vos services pour les faire tourner sur un serveur si nécessaire.
Personnellement toutes mes phases de recherche et de développement se font désormais sur Azure. Ensuite on discute avec le client pour son déploiement en production et déterminer ce qui lui convient le mieux.
Cordialement,
Yan Grenier
Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.- Marqué comme réponse Nina ZaekovaMicrosoft contingent staff, Moderator jeudi 1 juin 2017 07:38
Toutes les réponses
-
Bonjour,
Il y a plusieurs aspects :
Pour les apis, en .NET, le plus simple est d'adopter une application ASP .NET WebApi.
Core ou full .NET, tout dépend des serveurs de votre client mais Core permet d'avoir des serveurs autre que Windows (si c'est une réelle demande de la part de votre client).
Ensuite, pour le backoffice et le middleoffice, ce sera certainement une application Web. Elle peut aussi s'appuyer sur le site ASP .NET WebApi ou plus vraisemblablement sur une autre appli web ASP .NET WebApi. Dans ce cas, les applis clientes peuvent être de l'Angular 100%.
Donc moi je préconiserais :
- Une appli Xamarin (pour avoir du vrai natif pour les applis clientes),
- Une appli ASP .NET WebApi pour l'exposition des données pour les applis Xamarin et qui communique avec le middle et le back,
- Une appli ASP .NET WebApi pour les données du middle
- Une appli Angular pour l'appli cliente du middle
- Idem pour le back.
Ca fait du boulot ;-)
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone- Marqué comme réponse Nina ZaekovaMicrosoft contingent staff, Moderator jeudi 1 juin 2017 07:37
-
Merci pour ton retour.
On est d'accord ça en fait du boulot : c'est ce que j'essaie de faire comprends à ce client, qui n'a pas encore de cahier des charges, ou d'analyse détaillée.
Mon client n'a pas évoqué de demande particulière vis à vis des serveurs, mais je pense effectivement que communiquer sur le côté Open Source de .Net Core, et non limitant à un serveur Windows soit une bonne chose : il sera plus facile de lui faire accepter ASP.Net Core que ASP.Net "classique".
Ton architecture me semble du coup pertinente, mais est-ce que tu verrais un intérêt à Azure du coup :
- pour l'application Web elle même?
- pour les bases de données?
- pour les push notifications
Je pensais utiliser :
- une base de données Azure (MySQL : pour qu'il puisse migrer plus facilement vers un serveur Linux classique si nécessaire)
- un compte de Storage Azure Blob pour les photos
- pour gérer les push notifications envoyées vers l'application mobile
Mais je n'ai pas encore eu l'occasion d'utiliser Azure dans le cadre d'un projet, donc je me demande si cela représente un réel intérêt...
-
Ben si il n'a pas de serveur, Azure c'est bien ;-)
Et effectivement tu peux utiliser les blobs storage pour les photos, le push & co.
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone- Marqué comme réponse Nina ZaekovaMicrosoft contingent staff, Moderator jeudi 1 juin 2017 07:37
-
Mais est-ce plus pertinent de lui proposer un serveur "classique" plutôt que du Azure?
L'intérêt d'Azure pour moi serait de rajouter une couche d'abstraction au niveau de l'infra, de proposer une haute disponibilité/performance au niveau des services, et de s'intégrer parfaitement à l'architecture (ASP.NET Core, Xamarin).
Mais est-ce réellement adapté à une structure en mode "start up"? Ou faut-il privilégier des solutions plus "économiques"?
-
Bonjour,
Etant dans une phase de "POC", Azure a son intérêt car vous pouvez vous adjoindre différents services à la demande sans vous préoccuper du matériel et/ou du système. Pour démarrer et faire des essais d'architecture, la flexibilité du cloud et un plus à mon avis.
Ensuite à vous de "rationaliser" vos services pour les faire tourner sur un serveur si nécessaire.
Personnellement toutes mes phases de recherche et de développement se font désormais sur Azure. Ensuite on discute avec le client pour son déploiement en production et déterminer ce qui lui convient le mieux.
Cordialement,
Yan Grenier
Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.- Marqué comme réponse Nina ZaekovaMicrosoft contingent staff, Moderator jeudi 1 juin 2017 07:38
-
Je pense qu'économiquement, c'est plus intéressant car plus flexible. Et si votre client a un gros succès, il n'y aura pas de pb de montée en charge.
Et surtout, il n'aura pas à payer une équipe IT ;-)
Maintenant, c'est vraiment une décision stratégique à prendre de la part de votre client, pas au développeur.
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone- Marqué comme réponse Nina ZaekovaMicrosoft contingent staff, Moderator jeudi 1 juin 2017 07:38
-
Encore une fois, merci pour vos retours!
J'ai envoyé une proposition technique au client, avec une première estimation chiffrée entre 100 et 150 jours, que je ne peux pas affiner d'avantage comme il n'y a pas de cahier des charges.
Je lui ai donc proposer de basculer sur un mode régie + Scrum, ce qui semble plus adapté en mode startup. Mais il n'a pas accepté, et me demande d'affiner mon analyse, et de lui transmettre une proposition chiffrée.
Je pense donc que je vais laisser tomber car cela me semble trop risqué en mode forfait, surtout sans analyse approfondie...