Démarrage d'une web app en swift... réaliste ?
MAGE
Membre
Bonjour,
Je vais démarrer un nouveau développement en partant d'une webapp.
J'hésite à partir sur du Rails ou essayer de démarrer directement avec du Swift.
Je me dis que même s'il y a des tentative du genre perfect, la techno est un peu jeune et qu'Apple risque de nous proposer à terme une solution plus solide... quoi que. Pas sûr que ce soit dans son intérêt.
D'un autre côté, comme je code sur mon temps libre, c'est pas évident de progresser sur plusieurs languages et de centrer sur swift me permettrait de gagner en efficacité.
Merci pour vos avis éclairés. 8--)
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
L'autre aspect, c'est qu'il n'y a quasiment aucun écosystème autour de Swift pour le serveur. Par exemple, si tu veux gérer les sessions " un truc que quasiment tout site évolué fait " il n'y a rien en Swift, alors que tu disposeras d'un tas de solutions avec Rails.
Ce que j'en dis, c'est qu'il ne faut pas trop se concentrer sur le langage. Swift est un langage moderne et élégant, mais il n'a rien de très singulier. Les concepts que tu apprendras en utilisant un autre langage/framework ne seront pas perdus. Par exemple, la manière dont Rails gère les migrations de la base de données est fort intéressante, et je me demande comment faire de même dans une application Cocoa.
Foundation est en cours de portage sur Linux : https://github.com/apple/swift-corelibs-foundation
Tout dépend si tu cherches à obtenir un résultat (pour un client par exemple) ou si tu cherches à faire quelque chose.
Personne ne peut dire si swift côté serveur va décoller donc il y a un risque à l'utiliser pour un vrai projet.
Tant qu'Apple est derrière le portage de Swift et de Foundation sur Linux je pense qu'on peut avoir de l'espoir.
Le problème c'est qu'Apple peut très bien décider d'abandonner le projet du jour au lendemain pour se recentrer sur ses OS propriétaires.
Donc tant que Swift sur Linux n'aura pas décollé de manière significative, il y aura un risque.
Mais pour un projet perso, c'est plutôt une aventure sympa à tenter.
Personnellement, j'ai monté un serveur Ubuntu sur Linode avec une version de Swift de décembre 2015, une libraire swift pour sqlite et j'ai fait une petite API pour ma dernière app iOS.
Un grand merci pour vos retours
Je sais que le post est assez ancien mais j'ai voulu tenter l'aventure il y a quelques mois donc je peux faire un retour d'expérience.
Après la conférence dotSwift j'étais motivé pour tester les solution serveur de Swift, notemment celles fournies par IBM.
J'ai assez vite déchanté quand j'ai voulu faire un webservice complet.
Bref j'adore le langage sur iOS mais après 4 jours de perdus à faire des essais/erreurs, je suis retourné à mon webservice en PHP que j'ai codé en 3 jours, tests unitaires compris.
Je pense que je resterai à nouveau d'ici 1 an ou 2 pour voir si les outils se sont améliorés
Le peu que j'en avais vu (à dotSwift et FrenchKit) le déploiement m'avait semblé déjà fort compliqué. Après, c'est certain que ça bosse dur à la fois chez Apple pour porter Foundation complètement sur Linux et chez IBM pour ajouter ce qui manque à Foundation, mais ça part de loin, surtout comparé à des frameworks web installées depuis des années.
Je me demande si ça ne pourrait tout de même pas s'avérer intéressant pour écrire quelques micro-services.
Je pense que ça dépend aussi de quelle solution tu es partis. Actuellement, Kitura, la solution de IBM n'est pas forcément la plus utilisée par la communauté qui est plutôt concentrée sur Vapor et surtout Perfect.
Un article ici fait une liste des fonctionnalités des différents framework server side en swift : https://medium.com/@rymcol/current-features-benefits-of-the-top-server-side-swift-frameworks-b15b4f2d7bc3
Je trouve que depuis 1 an énormément de progrès ont été fait même si je suis d'accord que c'est encore peu mature. Apple discute à ce sujet avec les principaux contributeurs pour apporter davantage de standard autour.
Y a-t-il eu des évolutions depuis ces posts ?
@Gercofis oui ça a pas mal bougé depuis.
Apple a sorti Swift NIO en 2018, mars 2019 la version 2 est sortie, en mai 2018 Vapor 3 est sorti s'appuyant sur Swift NIO et Vapor 4 est en préparation. Différents projets comme NIO Redis, NIO Postgress ou encore NIO APN sont dans les tuyaux. Au niveau Foundation y a encore du travail mais ça avance aussi Parity: Remove all uses of NSUnimplemented from swift-corelibs-foundation
Avec les différents projets NIO ça devrait fournir une base solide. Avec le temps les communautés comme celle de Vapor sortent de plus en plus de packages. Certains fournissent même carrément un backend de base comme ApiCore
Apple a mis en place une procédure de mise à jour de Swift sur Linux une fois par mois (Process for the monthly Linux releases) ce qui est une très bonne chose.
Ce qu'il manque encore c'est de pouvoir faire du remote debug avec Xcode, comme on le fait sur les apps iOS, sur les projets backend comme ceux en Vapor.
Du mon coté j'ai des soucis avec la couche postgres que je trouve pas encore assez robuste mais ça devrait allez mieux avec l'arrivée de NIO Postgress voire avec Vapor 4.
Swift NIO reste encore jeune et doit notamment optimiser sa gestion de la mémoire pour éviter des problèmes de fragmentation.
Personnellement j'utilise Vapor pour des apis backend pour des apps mobiles et c'est déjà un vrai bonheur. J'ai passé des années à me battre avec les devs web pour avoir des apis adaptées aux mobiles avec des résultats souvent décevant. Avec Vapor je fais moi-même les apis. L'intégration backend/mobile est bien mieux faites. Du coup c'est beaucoup plus facile au niveau des apps mobiles. Les performances sont sans commune mesure avec les backends avec lesquels j'ai l'habitude de bosser. Au lieu de perdre du temps à me battre pour faire évoluer les apis je passe ce temps à paufiner mes apis ce qui est beaucoup plus productif.
Pour ma part, je suis resté à Rails.
J'ai cherché des librairies d'upload d'images, d'upload sur S3...etc, je n'ai encore rien trouvé en Swift/Vapor.
Comme cela (un example)?
Oui, comme cela !!
Mais, c'est assez limité en terme d'upload et de contrôle de données par rapport à mon chouchou du moment: https://github.com/shrinerb/shrine