Swift - Un langage sophistiqué côté serveur

Swift - Un langage sophistiqué côté serveur

Depuis qu'Apple a initialement connu Swift en tant que successeur d'Objective-C, cela a changé la façon dont le réseau code les applications iOS, macOS, watchOS et tvOS.

Au moment où Swift est devenu une étape open-source, il a ouvert de nouveaux résultats concevables pour le langage au-delà des applications mobiles et côté client. Swift est également devenu un langage côté serveur. Dans cet exercice pédagogique, vous comprendrez ce qu'est Swift côté serveur et pourquoi vous auriez besoin de Swift sur votre back-end.

L'activité Swift côté serveur est poussée par trois projets importants que sont Vapor by Qutheory, Kitura d'IBM et Perfect, dans le but de donner aux développeurs Swift une chance de créer des administrations back-end à part entière. Cela changera fondamentalement ces ingénieurs en développeurs full-stack, annulant l'exigence de dépendance à Node ou PHP ou offrant le contrôle à une étape BaaS, par exemple, Firebase de Google.

Cibles de cet article

Dans cet article, vous découvrirez Swift côté serveur. Je vais d'abord clarifier le fonctionnement de Swift côté serveur, puis je vous montrerai les meilleures pratiques pour commencer avec les systèmes Kitura, Vapor et Perfect.

Introduction de Swift côté serveur

Swift a été annoncé pour la première fois par Apple en 2014 et est rapidement devenu l'un des langages de programmation en développement les plus rapides. Swift s'appuie sur un grand nombre des meilleurs langages contemporains, par exemple Python, permettant élégance et facilité d'utilisation. Il libère les ingénieurs des chaînes spécialisées d'Objective-C, permettant un travail de plus en plus liquide et instinctif.

En décembre 2015, Apple a fait une autre déclaration fantastique et a fait du langage Swift aux côtés de ses bibliothèques de support, de son débogueur et de son gestionnaire de paquets un projet open source sous la licence Apache 2.0, ouvrant la plate-forme aux gens en général pour faire des pull request et contribuer. Le fait de s'éloigner d'Objective-C n'a pas seulement tenté les nombreux développeurs d'Objective-C contribuant à l'App Store, mais il a permis aux développeurs de toutes les compétences et de toutes les bases d'entrer dans l'écosystème Apple avec Swift.

Dans tous les cas, alors que les appareils de développement d'Apple ont permis de manière vérifiable aux développeurs de développer plus facilement des applications convaincantes et attrayantes pour l'App Store, l'un des principaux goulots d'étranglement était que les projets nécessitaient toujours des développeurs back-end spécialisés pour développer des applications complexes axées sur l'information. Ainsi, les développeurs iOS et macOS devraient soit faire appel à l'aide d'un développeur Python, PHP ou Node pour créer leur base de données principale, soit en acquérir eux-mêmes la capacité, ce qui entraînerait une tâche encore plus lourde pour terminer leurs objectifs.

Bien que le back-end-as-a-service (BaaS) ait agi le héros des développeurs iOS, avec des solutions back-end sans code, par exemple, Firebase de Google et CloudKit spécial d'Apple qui atténuent les complexités du back-end, de nombreux groupes et entreprises en demandent plus. C'est ici qu'intervient Swift côté serveur, vous permettant de créer un serveur back-end multi-thread à part entière, open source et configurable de manière interminable.

Swift côté serveur vous donne la possibilité de choisir comment vous avez votre serveur principal, que ce soit avec AWS, RackSpace ou vos propres serveurs physiques. Vous pouvez également choisir comment équilibrer la charge de vos serveurs (par exemple au moyen de solutions de serveur de premier plan, par exemple NGINX) et comment continuer vos informations dans une base de données (qu'il s'agisse d'arrangements NoSQL, par exemple MongoDB, ou de bases de données traditionnelles, par exemple , Postgres, MySQL ou Oracle). Cela, ainsi que vous n'êtes jamais attaché à une disposition de pièce, vous pouvez changer sans influencer l'ensemble de la base de code de votre application.

Le fait est qu'en choisissant un arrangement Swift côté serveur open-source, par exemple, Vapor by Qutheory, Kitura d'IBM ou Perfect, vous exploitez un large éventail de modules qui vous permettent de concevoir votre back-end uniquement le la manière dont vous en avez besoin, en utilisant la gamme de capacités de votre groupe actuel dans Swift pour le faire.

Swift côté serveur semble absolument convaincant, mais quelle structure est idéale pour vous? Ensuite, nous enquêtons chacun ainsi, en commençant par Kitura.

Commençant par Kitura

À partir de Kitura, vous avez une étape qui a d'abord été abandonnée en février 2016 et qui a acquis une qualité incomparable peu de temps après à la WWDC d'Apple, parlant de l'invasion d'IBM dans la prise en charge du Web côté serveur avec Swift, qui était alors sur le point de passer des mains d'Apple à Open source.

En règle générale, Kitura est centré sur la tradition plutôt que sur la configuration. Il construit votre projet sous-jacent avec des stubs, avant de sélectionner les frameworks et bibliothèques explicites que vous espérez créer. Le processus d'authentification de Kitura est soutenu par son cadre de middleware Kitura-Credentials exceptionnellement propre, vous permettant d'examiner un buffet de systèmes de validation, du nom d'utilisateur / mot de passe conventionnel à la connexion réseau en ligne et à la vérification unifiée, en utilisant OpenID qui gère les jetons Web JSON (JWT) .

L'arrangement ORM de base de données de Kitura est contrôlé par Kuery pour brouiller les complexités de la gestion de SQL spécifiquement, prenant en charge les bases de données rationnelles de base, par exemple, MySQL, SQLite et PostgreSQL localement, et en plus d'autres arrangements de base de données, y compris les bases de données NoSQL, via les différents autres plugins.

Kitura fournit également d'autres plugins précieux pour des choses, par exemple, la création de modèles HTML, en utilisant des plugins bien connus, par exemple, Stencil et Markdown. Originaire d'IBM, le système côté serveur bénéficie en outre de la connectivité avec les API IBM Watson et de la prise en charge de macOS pour une coordination directe dans leur plate-forme cloud Bluemix. Cela vous donne un choix supplémentaire, aux côtés de vos autres alternatives de déploiement conventionnelles croisées sur les serveurs Linux / Unix et macOS.

Alors que la plate-forme fournit absolument un ensemble extraordinaire de fonctionnalités de Kuery à la capacité à intégrer avec les différentes bibliothèques d'API IBM. Il n'a pas l'influence de réseau que Vapor a. Recevoir Kitura nécessite de reconnaître et de saisir ses propres méthodes non régulières pour faire avancer les choses, de la façon dont Kuery fonctionne à son mécanisme d'authentification. Dans tous les cas, étant donné qu'il est parrainé par une organisation vaste avec une attention sur l'effort, il y a quelques affirmations de scellement pour l'avenir.

Installation et exécution de Kitura

La méthode la plus rapide pour commencer consiste à utiliser l'interface de ligne de direction (CLI) de Kitura, prise en charge à la fois sur macOS et Linux. À l'aide de l'utilitaire de gestion de packages bien connu Homebrew, installez Kitura et Kitura CLI en entrant ce qui suit:

$ robinet d'infusion ibm-swift / kitura

$ brew installkitura

À l'intérieur d'un organisateur non rempli que vous utiliserez pour votre entreprise, exécutez l'accompagnement pour mettre en place votre engagement:

$ kitura init

Au moment où il a fini de produire votre application squelette, vous verrez un autre projet appelé HelloKitura.xcodeproject. Vous pouvez en savoir plus sur la génération de projet en modifiant la documentation de Kitura. Vous pouvez ouvrir le projet récemment créé dans Xcode et modifier la classe d'application essentielle, Application.swift , pour traiter tous les appels à la racine de votre serveur https: // localhost: 8080 / URL :

// Gère les requêtes HTTP GET vers "/"

router.get ("/") {requête, réponse, suivant dans

response.send ("Bonjour le monde!")

suivant()

}

Le morceau de code ci-dessus réagit en restaurant l'exemple Hello, World! . Avant de pouvoir enfin exécuter le projet, modifiez votre schéma Xcode pour qu'il pointe vers HelloKitura (votre projet actif) et démarrez votre entreprise en appuyant sur Commande-R . Pendant que votre serveur est en cours d'exécution, dans un navigateur de votre choix, accédez à https: // localhost: 8080 et vous devriez voir le bonjour le monde dans votre navigateur.

Commençant par Vapor

Sorti quelques mois après le Kitura, en septembre 2016, Vapor by Qutheory est généralement considéré comme le plus important en ce qui concerne la taille de la communauté et le nombre de modules. Il est construit sur le cadre Swift-nio d'Apple, ce qui en fait une véritable centrale d'exécution. Pas du tout comme Kitura et les différentes étapes, qui ne sont pas fabriquées simplement dans Swift mais plutôt sur Node.js ou d'autres analyseurs intermédiaires, Vapor se dissocie de l'une de ces dépendances pour fournir un analyseur Swift et donner des API claires et cohérentes.

Vapor fournit une aide approfondie des bases de données aux fournisseurs SQL, par exemple, MySQL et PostgreSQL, et aux fournisseurs NoSQL, par exemple, Redis et MongoDB, comme Kitura. Bien que Kitura dispose de ses propres solutions Kuery ORM, Vapor utilise Fluent ORM pour prendre en charge les bases de données que je viens de citer, ce qui rend assez simple l'extension de l'ORM à d'autres fournisseurs de bases de données tiers. Vapor s'isole des autres frameworks en prenant en charge nativement le service de notification push d'Apple et en prenant également en charge SMTP pour l'envoi de notifications par e-mail.

Alors que Kitura actualise son propre cadre d'authentification, Vapor a intégré la bibliothèque d'authentification Turnstile de Stormpath de manière native. Comme Kitura, la plate-forme prend également en charge les tentations de Moustache et de Markdown, et en plus de son propre langage de modélisation expressif natif Swift, Vapor accompagne également son propre moteur CLI comme l'autre framework Swift côté serveur, avec la capacité d'élargir la commande de l'application. -line arguments avec des indicateurs personnalisés.

Installation et exécution

Pour commencer avec Vapor, vous commencez par installer le kit d'outils Vapor, qui comprend toutes les dépendances de la bibliothèque et la boîte à outils CLI. Installez-le avec Homebrew en saisissant ce qui suit dans le terminal:

$ infusion installvapor / robinet / vapeur

Au moment où l'installation est terminée, vous pouvez affirmer que Vapor a été installé avec succès en tapant vapor —help. Pour créer un projet, saisissez ce qui suit, en le remplaçant par votre propre nom de projet:

$ vapeur nouveau

Le moteur Vapor créera une structure de dossiers ressemblant à ce qui suit:

├── Publique

├── Sources

│ ├── Application

│ │ ├── Contrôleurs

│ │ ├── Modèles

│ │ ├── boot.swift

│ │ ├── configure.swift

│ │ └── routes.swift

│ └── Courir

│ └── main.swift

├── Tests

│ └── AppTests

└── Package.swift

Pour créer réellement un projet Xcode, vous devrez également entrer explicitement la commande suivante, à partir du dossier du projet:

$ vapeur xcode

Enfin, pour créer et exécuter votre projet, à partir de Xcode, sélectionnez le schéma Exécuter ainsi que le périphérique cible de développement de My Mac , puis appuyez sur le bouton Exécuter comme vous le feriez pour tout autre projet Xcode. Étant donné que votre projet Xcode ne rencontre aucune erreur, vous devriez voir le message de confirmation suivant dans le terminal:

Serveur démarrant sur https: // localhost: 8080

Allez-y et entrez cette URL dans n'importe quel navigateur, et vous devriez voir votre application en cours d'exécution.

Commencer par Perfect

Enfin, nous jetons un coup d'œil à Perfect by PerfectlySoft, une plate-forme côté serveur riche en fonctionnalités comme Vapor et Kitura. Perfect incorpore des cloches et des sifflets standard similaires que vous découvririez sur les fournisseurs précédents, de la création de modèles avec Moustache ou Markdown à la mise en réseau avec des sockets Web, en passant par la notification push Apple et SMTP.

Comme l'autre plate-forme côté serveur, Perfect a sa propre implémentation ORM, la plate-forme StORM (Perfect StORM), qui offre un support natif pour MySQL, PostgreSQL et d'autres bases de données relationnelles de premier plan, ainsi que MongoDB, Redis et d'autres solutions NoSQL. Une exclusion importante de Perfect est une CLI, mais le framework compense cela avec une application macOS native.

Comme Vapor, Perfect a également intégré Turnstile pour alimenter son mécanisme d'authentification, étendu pour interagir plus intimement avec StORM. Une autre qualification que cet arrangement a par rapport aux autres est dans un grand nombre de bibliothèques d'utilitaires natives qu'il prend en charge, y compris leur propre wrapper cURL unique en son genre et des outils supplémentaires pour travailler avec des fichiers et des dossiers. La base de développeurs de Perfect est la deuxième en importance, suivant presque le rythme de Vapor, ce qui signifie que vous avez une communauté forte pour soutenir cette plate-forme, ainsi qu'un riche ensemble de ressources éducatives vous donne la certitude que vous la choisissez.

Installation et exécution

Se mettre en marche avec Perfect est extrêmement simple. Dans un premier temps, clonez le repo PerfectlySoft, en saisissant ce qui suit:

$ git clone https://github.com/PerfectlySoft/PerfectTemplate.git

À partir du dossier cloné, générez le projet:

$ construction rapide

Enfin, exécutez le projet, qui exécutera un serveur local à l'adresse 0.0.0.0:8181

.build / debug / PerfectTemplate

Vous pouvez également exécuter votre projet sur Xcode en créant d'abord un nouveau projet, comme suit:

paquet $ swift generate-xcodeproj

Dans Xcode, assurez-vous que votre cible exécutable est pointée vers Mon Mac , avant de créer et d'exécuter le projet.

Conclusion

L'arrivée de Swift sur le réseau open-source a poussé les solutions Swift au-delà des applications clientes, avec des frameworks de serveurs back-end se transformant en périphérie suivante. Poussé par trois projets importants - Vapor de Qutheory, Kitura d'IBM et Perfect. Swift côté serveur a permis aux développeurs iOS (et macOS) de devenir des développeurs full-stack. Cela peut annuler la dépendance vis-à-vis des développeurs back-end Node.js, PHP ou .NET. Swift côté serveur permet en outre aux groupes de contrôler leur back-end sans avoir à s'appuyer sur une solution mobile back-end-as-a-server comme Firebase ou CloudKit.

Swift côté serveur n'est pas pour tout le monde, vous devez décider du niveau de contrôle dont vous avez besoin pour votre back-end et s'il est logique que vous utilisiez le vôtre. De plus, je n'ai pas tenté de vous dire quelle solution Swift côté serveur est idéale. Les développeurs sont incontestablement ruinés pour la décision, et chacun des trois donne une prise unique et mature et vaut la peine d'être expérimenté. Je vous exhorte à jouer avec chacun des codes d'exemple, à évaluer la structure de la langue et à vous connecter avec leurs communautés particulières pour voir quelle solution vous convient le mieux.