Depuis que Apple a présenté Swift pour succéder à Objective-C, il a révolutionné la façon dont la communauté code les applications iOS, macOS, watchOS et tvOS. Lorsque Swift est devenu une plate-forme open source, il a ouvert de nouvelles possibilités pour le langage, au-delà des applications mobiles et côté client. Swift est également devenu un langage de serveur! Dans ce didacticiel, vous apprendrez ce qu'est Swift côté serveur et pourquoi vous souhaitez avoir Swift sur votre back-end..
L'initiative Swift côté serveur s'appuie sur trois projets de premier plan - Vapor de Qutheory, Kitura d'IBM et Perfect - dans le but de permettre aux développeurs de Swift de créer des services dorsaux à part entière. Cela va essentiellement transformer ces développeurs en développeurs full-stack, éliminant la nécessité de se fier à Node ou à PHP ou donnant le contrôle à une plate-forme BaaS telle que Google Firebase..
Dans cet article, vous apprendrez tout sur Swift côté serveur. Je vais d’abord expliquer le fonctionnement de Swift côté serveur, puis je vais vous montrer comment commencer à utiliser les frameworks Kitura, Vapor et Perfect..
Swift a été annoncé par Apple en 2014 et est rapidement devenu l'un des langages de programmation à la croissance la plus rapide. Swift s'inspire de la plupart des meilleurs langages contemporains, tels que Python, permettant élégance et facilité d'utilisation. Il libère les ingénieurs des chaînes techniques d'Objective-C, permettant ainsi un travail plus fluide et intuitif.
En décembre 2015, Apple a fait une autre annonce monumentale: le langage Swift, ainsi que ses bibliothèques, son débogueur et son gestionnaire de packages, était un projet à code source ouvert sous licence Apache 2.0, ouvrant la plate-forme au public pour lui permettre de créer contribuer. L’abandon d’Objective-C a non seulement séduit les nombreux développeurs d’Objective-C contribuant à l’App Store, mais il a également facilité la tâche des développeurs de tous les horizons et compétences, pour entrer dans l’écosystème Apple avec Swift..
Cependant, si les outils de développement d’Apple ont toujours facilité la tâche des développeurs pour la création d’applications attrayantes et attrayantes pour l’App Store, l’un des obstacles majeurs a été que les projets avaient toujours besoin de développeurs spécialisés pour créer des applications complexes basées sur les données. Les développeurs iOS et macOS doivent donc faire appel à un développeur Python, PHP ou Node pour créer leur base de données back-end ou acquérir eux-mêmes les compétences, ce qui alourdira considérablement la charge de travail nécessaire à la réalisation des objectifs de leur projet..
Bien que le back-end-as-a-service (BaaS) soit venu à la rescousse des développeurs iOS, avec des solutions back-end sans code telles que Firebase de Google et le propre CloudKit d’Apple, qui permettent de réduire la complexité du back-end, les équipes et les projets demandent plus. C'est ici qu'intervient Swift côté serveur, ce qui vous permet de créer un serveur principal multithread à part entière, à code source ouvert et configurable à l'infini..
Swift côté serveur vous permet de choisir le mode d’hébergement de votre serveur principal, qu’il s’agisse de AWS, de RackSpace ou de vos propres serveurs physiques. Vous pouvez également choisir comment équilibrer la charge de vos serveurs (par exemple via des solutions de serveur courantes telles que NGINX) et comment conserver vos données dans une base de données (solutions NoSQL telles que MongoDB ou bases de données traditionnelles telles que Postgres, MySQL ou Oracle). . Non seulement cela, mais vous n'êtes jamais lié à une solution, vous pouvez basculer sans affecter l'ensemble de votre codebase..
Le fait est qu'en optant pour une solution Swift côté serveur ouverte telle que Vapor de Qutheory, Kitura d'IBM ou Perfect, vous bénéficiez d'une vaste gamme de plug-ins vous permettant de configurer votre back-end comme vous le souhaitez. le faire en utilisant les compétences de votre équipe existante à Swift pour le faire.
Swift côté serveur semble certes convaincant, mais quel framework vous convient le mieux? Ensuite, nous examinons chacun à son tour, en commençant par Kitura..
En commençant par Kitura, vous avez une plate-forme initialement publiée en février 2016 et qui a gagné en notoriété plus tard au cours de la même année à la WWDC d'Apple, incitant IBM à prendre en charge le Web côté serveur avec Swift, qui devait ensuite passer d'Apple au logiciel libre..
De manière générale, Kitura se concentre sur la convention plutôt que sur la configuration: il construit votre projet initial avec des stubs, avant d’opter pour les frameworks et bibliothèques spécifiques que vous souhaitez construire. Le mécanisme d’authentification de Kitura est pris en charge par son propre framework middleware Kitura-Credentials, vous permettant de choisir parmi une multitude de mécanismes d’authentification, du nom d’utilisateur / mot de passe traditionnel à la connexion aux médias sociaux et à l’authentification fédérée, à l’aide d’OpenID qui gère les jetons Web JSON (JWT). ).
La solution ORM de base de données de Kitura est optimisée par Kuery pour dissimuler la complexité de la gestion directe du langage SQL, en prenant en charge de manière native des bases de données relationnelles telles que MySQL, SQLite et PostgreSQL, ainsi que d’autres solutions de base de données, notamment les bases de données NoSQL, par le biais de divers autres plug-ins compatibles..
Kitura fournit également d'autres plugins utiles pour des tâches telles que la modélisation HTML, en utilisant des plugins populaires tels que Stencil et Markdown. Provenant d’IBM, l’infrastructure côté serveur bénéficie également d’une connectivité intime avec les API IBM Watson, ainsi que de la prise en charge native de macOS pour une intégration directe dans leur plate-forme cloud Bluemix. Ceci fournit une option supplémentaire à votre disposition, ainsi que vos autres options de déploiement traditionnelles sur des serveurs Linux / Unix et macOS..
Bien que la plate-forme offre un ensemble unique de fonctionnalités, allant de Kuery à la possibilité d’intégration avec les différentes bibliothèques d’API IBM, elle n’a pas l’influence de la communauté dont dispose Vapor. L’adoption de Kitura nécessite d’apprécier et d’adopter ses propres méthodes non conventionnelles, de la manière dont fonctionne Kuery à ses mécanismes d’authentification. Cependant, compte tenu du fait qu’elle est soutenue par une grande entreprise centrée sur l’entreprise, certaines assurances à long terme sont intégrées dans.
Le moyen le plus rapide de commencer consiste à utiliser l'interface de ligne de commande de Kitura, prise en charge sous macOS et Linux. À l'aide du célèbre utilitaire de gestion de paquets Homebrew, installez Kitura et Kitura CLI en entrant les informations suivantes:
robinet à bière $ ibm-swift / kitura $ bière à installer installer
Dans un dossier vide que vous utiliserez comme projet, exécutez ce qui suit pour initialiser votre projet:
$ kitura init
Lorsque vous avez terminé de générer votre application squelette, vous remarquerez un nouveau projet appelé HelloKitura.xcodeproject. Pour en savoir plus sur la génération de projet, consultez la documentation officielle de Kitura. Vous pouvez ouvrir le projet nouvellement généré dans Xcode et modifier la classe d'application principale., Application.swift, gérer tous les appels à la racine de votre serveur http: // localhost: 8080 / URL:
// Gère les requêtes HTTP GET en "/" router.get ("/") requête, réponse, next dans response.send ("Hello, World!") Next ()
L'extrait de code ci-dessus répond en renvoyant le classique Bonjour le monde!. Avant de pouvoir enfin exécuter le projet, modifiez votre schéma Xcode pour qu'il pointe vers HelloKitura (votre projet actif) et lancez votre projet en appuyant sur Commander-R. Pendant que votre serveur est en marche, dans le navigateur de votre choix, allez à http: // localhost: 8080 et vous devriez voir le texte hello world dans votre navigateur.
Consultez les liens suivants pour plus d'informations sur Kitura.
Publié quelques mois plus tard que Kitura, en septembre 2016, Vapor de Qutheory est largement considéré comme le plus populaire en termes de taille de la communauté et de nombre de plug-ins. Il est construit sur le framework Swift-nio d’Apple, ce qui en fait un véritable concentré de performance. Contrairement à Kitura et à d'autres plates-formes, qui ne sont pas construites uniquement dans Swift, mais plutôt sur Node.js ou d'autres analyseurs intermédiaires, Vapor se dissocie de toutes ces dépendances pour fournir un analyseur Swift et fournir des API claires et lisibles..
Vapor fournit un support complet des bases de données pour les fournisseurs SQL tels que MySQL et PostgreSQL, ainsi que pour les fournisseurs NoSQL tels que Redis et MongoDB, tels que Kitura. Alors que Kitura dispose de sa propre solution ORM Kuery, Vapor exploite Fluent ORM pour prendre en charge les bases de données que je viens de mentionner, ce qui facilite relativement l’extension de l’ORM à d’autres fournisseurs de bases de données tiers. Vapor se distingue des autres infrastructures en prenant en charge de manière native le service de notification push d'Apple, ainsi qu'en prenant en charge SMTP pour l'envoi de notifications par courrier électronique..
Alors que Kitura implémente son propre cadre d’authentification, Vapor dispose d’une bibliothèque d’authentification Turnstile de Stormpath intégrée. À l'instar de Kitura, la plate-forme prend également en charge les modèles Mustache et Markdown, ainsi que son propre langage de modèles expressif Swift-native, Leaf. Vapor est également livré avec son propre moteur CLI, à l'instar des autres infrastructures Swift côté serveur, avec la possibilité d'étendre les arguments de ligne de commande de l'application avec des indicateurs personnalisés..
Pour commencer à utiliser Vapor, vous devez commencer par installer la boîte à outils Vapor, qui comprend toutes les dépendances de la bibliothèque et le kit d'outils CLI. Installez-le avec Homebrew en entrant les informations suivantes dans le terminal:
$ brasser installer vapeur / robinet / vapeur
Une fois l’installation terminée, vous pouvez vérifier que Vapor a bien été installé en tapant vapeur-aide
. Pour créer un projet, tapez ce qui suit, en le remplaçant par votre propre nom de projet:
$ vapor new
Le moteur Vapor créera une structure de dossier semblable à celle-ci:
. ├── Public Sources │ ├── ├── ├── Contrôleurs Modèles │ boot.swift configure.swift .s routes.swift └── Exécuter └── └── main.swift Tests └── AppTests └── Package.swift
Pour créer réellement un projet Xcode, vous devez également entrer explicitement la commande suivante dans le dossier du projet:
$ vapeur xcode
Enfin, pour construire et exécuter votre projet, sélectionnez Xcode dans Xcode. Courir schéma ainsi que le dispositif cible de déploiement de Mon Mac, puis appuyez sur le Courir comme vous le feriez pour tout autre projet Xcode. Si votre projet Xcode ne rencontre aucune erreur, vous devriez voir le message de confirmation suivant dans le terminal:
Serveur démarrant sur http: // localhost: 8080
Allez-y et entrez cette URL dans le navigateur de votre choix, et vous devriez voir votre application en cours d'exécution.
Consultez les liens suivants pour plus d'informations.
Pour finir, jetons un coup d'œil à Perfect by PerfectlySoft, une plate-forme côté serveur riche en fonctionnalités, telle que Vapor et Kitura. Perfect inclut les mêmes options que les modèles précédents, du modèle avec Moustache ou Markdown au réseau avec des sockets Web, en passant par les notifications Apple Push et SMTP..
Comme les autres plates-formes côté serveur, Perfect possède sa propre implémentation ORM, la plate-forme StORM (Perfect StORM), qui fournit un support natif pour MySQL, PostgreSQL et d’autres bases de données relationnelles importantes, ainsi que pour MongoDB, Redis et d’autres solutions NoSQL. Une omission notable de Perfect est une CLI, mais le framework compense cela avec une application native macOS..
À l'instar de Vapor, Perfect a également intégré Turnstile pour alimenter son mécanisme d'authentification, étendu pour interagir plus étroitement avec StORM. Une autre distinction de cette solution par rapport aux autres réside dans la plupart des bibliothèques d'utilitaires natives qu'elle prend en charge, notamment son propre wrapper cURL ainsi que des outils permettant de travailler avec des fichiers et des dossiers. La base de développeurs de Perfect est la deuxième en importance, presque à égalité avec celle de Vapor, ce qui signifie que vous avez une communauté solide pour soutenir cette plate-forme, ainsi qu'un riche ensemble de ressources éducatives pour vous donner confiance si vous le choisissez..
Se lever et courir avec Perfect est vraiment simple. Commencez par cloner le dépôt PerfectlySoft en entrant les éléments suivants:
$ git clone https://github.com/PerfectlySoft/PerfectTemplate.git
A partir du dossier cloné, construisez le projet:
$ rapide construire
Enfin, lancez le projet, qui exécutera un serveur local sur adresse 0.0.0.0:8181:
.build / debug / PerfectTemplate
Vous pouvez également exécuter votre projet sur Xcode en générant d’abord un nouveau projet, comme suit:
Le paquet $ swift generate-xcodeproj
Dans Xcode, assurez-vous que votre cible exécutable est dirigée vers Mon Mac, avant de construire et d'exécuter le projet.
Consultez les liens suivants pour plus d'informations sur le cadre Perfect.
La sortie de Swift au sein de la communauté open-source a incité les solutions Swift à aller au-delà des applications clientes, les infrastructures de serveurs d’arrière-plan devenant la prochaine frontière. Poussé par trois projets de premier plan, Vapor de Qutheory, Kitura d’IBM et Swift au côté du serveur Perfect, Swift a permis aux ingénieurs d’IOS (et de macOS) de devenir des développeurs à part entière. Cela peut annuler la dépendance vis-à-vis des ingénieurs principaux de Node.js, PHP ou .NET. Swift côté serveur donne également aux équipes la possibilité de contrôler leur back-end sans avoir à compter sur des solutions back-end mobiles en tant que service telles que Firebase ou CloudKit.
Swift côté serveur n’est pas pour tout le monde: vous devez décider du degré de contrôle dont vous avez besoin pour votre back-end et déterminer s’il est judicieux de lancer le vôtre. De plus, je n'ai pas essayé de vous dire quelle solution Swift côté serveur est la meilleure. Les développeurs ont certes l'embarras du choix et tous trois offrent une approche unique et mature et valent la peine d'être expérimentés. Je vous encourage à jouer avec chacun des exemples de codes, à évaluer la syntaxe et à dialoguer avec leurs communautés respectives pour déterminer la solution qui vous convient le mieux..