Hoe code met Swift op de server

Wat je gaat creëren

Sinds Apple Swift voor het eerst introduceerde als de opvolger van Objective-C, heeft het een revolutie teweeggebracht in de manier waarop de community iOS-, MacOS-, WatchOS- en tvOS-apps codeert. Toen Swift een open-sourceplatform werd, opende het nieuwe mogelijkheden voor de taal buiten mobiele en client-side apps - Swift werd ook een servertaal! In deze zelfstudie leert u wat Swift op de server is en waarom u Swift op uw back-end wilt hebben. 

Het Swift-initiatief aan de server wordt gestuwd door drie prominente projecten-Vapor van Qutheory, IBM's Kitura en Perfect-met als doel Swift-ontwikkelaars volledige back-endservices te laten maken. Dit zal in wezen dergelijke ontwikkelaars transformeren in full-stack-ontwikkelaars, waardoor de noodzaak om afhankelijk te zijn van Node of PHP wordt opgeheven of controle wordt verleend aan een BaaS-platform zoals Google's Firebase. 

Doelstellingen van dit artikel 

In dit artikel leert u alles over Swift op de server. Eerst zal ik uitleggen hoe server-side Swift werkt, en dan laat ik je zien hoe je aan de slag kunt gaan met de Kitura, Vapor en Perfect frameworks.

Wat is Server-Side Swift?

Swift werd voor het eerst aangekondigd door Apple in 2014 en werd al snel een van de snelstgroeiende programmeertalen. Swift maakt gebruik van veel van de beste hedendaagse talen, zoals Python, waardoor elegantie en gebruiksgemak mogelijk zijn. Het bevrijdt ingenieurs van de technische ketenen van Objective-C, waardoor meer vloeiend en intuïtief werken mogelijk wordt. 

In december 2015 maakte Apple opnieuw een monumentale aankondiging en maakte de Swift-taal - samen met de ondersteunende bibliotheken, debugger en pakketbeheerder - een open-sourceproject onder de Apache 2.0-licentie, waarmee het platform voor het publiek werd geopend om pull-aanvragen te maken en bijdragen. De verschuiving van Objective-C lokte niet alleen de vele Objective-C-ontwikkelaars die hebben bijgedragen aan de App Store, maar het heeft het voor ontwikkelaars van alle vaardigheden en achtergronden gemakkelijker gemaakt om het Apple-ecosysteem met Swift binnen te gaan.. 

Hoewel de ontwikkelgereedschappen van Apple historisch gezien het voor ontwikkelaars eenvoudiger hebben gemaakt om visueel aantrekkelijke en boeiende apps voor de App Store te maken, was een opmerkelijk knelpunt dat projecten nog steeds gespecialiseerde backend-ontwikkelaars nodig hadden om complexe datagedreven applicaties te maken. Dus iOS- en macOS-ontwikkelaars zouden ofwel de hulp van een Python-, PHP- of Node-ontwikkelaar nodig hebben om hun back-enddatabase te creëren of de vaardigheid zelf op te pikken, wat resulteert in een aanzienlijk zwaardere werklast om hun projectdoelen te voltooien. 

Hoewel back-end-as-a-service (BaaS) iOS-ontwikkelaars te hulp is geschoten, met back-end-oplossingen zonder code zoals Google Firebase en Apple's eigen CloudKit die de complexiteit van de back-end verminderen, veel teams en projecten vragen meer. Dit is de serverzijde van Swift, waarmee u een volwaardige back-end-server met meerdere threads kunt maken die open-sourced en oneindig configureerbaar is. 

Swift op de server laat u kiezen hoe u uw back-end-server hosten, met AWS, RackSpace of uw eigen fysieke servers. U kunt ook kiezen hoe u uw servers moet balanceren (bijv. Via populaire serveroplossingen zoals NGINX) en hoe u uw gegevens kunt behouden in een database (of het nu gaat om NoSQL-oplossingen zoals MongoDB of traditionele databases zoals Postgres, MySQL of Oracle) . En dat niet alleen, maar u bent nooit gebonden aan een oplossing met één component - u kunt schakelen zonder de volledige codebase van uw app te beïnvloeden. 

Het punt is dat door te kiezen voor een open-source server-side Swift-oplossing zoals Vapor door Qutheory, IBM's Kitura of Perfect, u gebruik kunt maken van een breed scala aan plug-ins waarmee u uw back-end precies zo kunt configureren als u wilt het, gebruikmakend van de vaardigheden van je bestaande team in Swift om dit te doen. 

Server-side Swift klinkt zeker overtuigend, maar welk framework is geschikt voor u? Vervolgens bekijken we ze om beurten, te beginnen met Kitura.

Aan de slag met Kitura

Overzicht 

Beginnend met Kitura, heb je een platform dat aanvankelijk werd uitgebracht in februari 2016 en later dat jaar bekendheid kreeg op de WWDC van Apple, wat IBM's uitstapje naar ondersteuning van web op de server met Swift vertegenwoordigt, dat vervolgens van Apple's handen naar open source zou gaan.. 

In het algemeen is Kitura gericht op conventie over configuratie: het bouwt uw eerste project op met stubs, voordat u kiest voor de specifieke frameworks en bibliotheken die u wilt bouwen. Het authenticatiemechanisme van Kitura wordt ondersteund door zijn eigen Kitura-Credentials middleware-raamwerk, zodat u kunt kiezen uit een keur aan authenticatiemechanismen, van de traditionele gebruikersnaam / wachtwoord tot aanmelding via sociale media en federatieve authenticatie, met behulp van OpenID dat JSON Web Tokens verwerkt (JWT ).

De database-ORM-oplossing van Kitura wordt mogelijk gemaakt door Kuery om de complexiteit van de omgang met SQL direct te verdoezelen, door native relationele databases zoals MySQL, SQLite en PostgreSQL native te ondersteunen, evenals andere database-oplossingen, waaronder NoSQL-databases, via de verschillende andere compatibele plug-ins. 

Kitura biedt ook andere handige plug-ins voor dingen zoals HTML-templating, met behulp van populaire plug-ins zoals Stencil en Markdown. Het server-side framework is afkomstig van IBM en profiteert ook van een intieme connectiviteit met IBM Watson API's en biedt native macOS-ondersteuning voor directe integratie in hun Bluemix-cloudplatform. Dit biedt een extra optie tot uw beschikking, samen met uw andere traditionele inzetmogelijkheden op Linux / Unix- en macOS-servers. 

Hoewel het platform zeker een unieke reeks functies biedt - van Kuery tot de mogelijkheid om te integreren met de verschillende IBM API-bibliotheken - heeft het niet de invloed van de gemeenschap die Vapor heeft. Het adopteren van Kitura vereist het waarderen en omarmen van zijn eigen niet-conventionele manieren om dingen te doen, van hoe Kuery werkt naar zijn authenticatiemechanismen. Aangezien het echter wordt ondersteund door een groot bedrijf met een focus op de onderneming, zijn er in de toekomst enkele zekerheidstellingsgaranties ingebouwd.. 

Kitura installeren en uitvoeren

De snelste manier om aan de slag te gaan is door gebruik te maken van Kitura's command-line interface (CLI), ondersteund door zowel macOS als Linux. Gebruik het populaire pakketbeheerprogramma Homebrew en installeer Kitura en Kitura CLI door het volgende in te voeren:

$ brew tap ibm-swift / kitura $ brew install kitura

In een lege map die u als uw project zult gebruiken, voert u het volgende uit om uw project te initialiseren:

$ kitura init

Als het klaar is met het genereren van je skelet-applicatie, zul je een nieuw project opmerken HelloKitura.xcodeproject. U kunt meer leren over het genereren van projecten door te verwijzen naar de officiële documentatie van Kitura. U kunt het nieuw gegenereerde project openen in Xcode en de primaire toepassingklasse bewerken, Application.swift, om alle oproepen naar de root van uw server af te handelen http: // localhost: 8080 / URL:

// Behandel HTTP GET-aanvragen naar "/" router.get ("/") request, response, next in response.send ("Hello, World!") Next ()

Het bovenstaande codefragment reageert door de klassieker te retourneren Hallo Wereld!. Voordat je het project eindelijk kunt uitvoeren, verander je je Xcode-schema om te verwijzen naar HelloKitura (je actieve project), en start je je project door op te drukken Commando-R. Terwijl uw server actief is, gaat u in een browser van uw keuze naar http: // localhost: 8080 en je zou de wereldtekst hallo in je browser moeten zien. 

Verdere informatie

Bekijk de volgende links voor meer informatie over Kitura.

  • Kitura.io
  • Kitura-pakketten / plug-ins
  • Kitura Help

Aan de slag met damp

Overzicht 

Een aantal maanden later uitgebracht dan Kitura, in september 2016, wordt Vapor by Qutheory algemeen beschouwd als het meest populair in termen van grootte van de gemeenschap en het aantal plug-ins. Het is gebouwd bovenop het Swift-nio-framework van Apple, waardoor het een echte prestatie-krachtpatser is. In tegenstelling tot Kitura en andere platforms, die niet alleen in Swift maar eerder op Node.js of andere intermediaire parsers zijn gebouwd, ontkoppelt Vapor zichzelf van elk van die afhankelijkheden om een ​​Swift-parser te leveren en duidelijke en leesbare API's te bieden.

Vapor biedt uitgebreide ondersteuning van databases voor SQL-leveranciers zoals MySQL en PostgreSQL, evenals NoSQL-leveranciers zoals Redis en MongoDB, zoals Kitura. Terwijl Kitura zijn eigen Kuery ORM-oplossing heeft, maakt Vapor gebruik van Fluent ORM ter ondersteuning van de databases die ik net noemde, waardoor het relatief eenvoudig is om de ORM uit te breiden naar andere externe databaseproviders. Vapor scheidt zich van de andere frameworks door native ondersteuning te bieden voor de Push Notification Service van Apple en ondersteunt SMTP voor het pushen van e-mailmeldingen. 

Terwijl Kitura zijn eigen authenticatiekader implementeert, heeft Vapor de Turnstile-authentificatiebibliotheek van Stormpath ingebakken. Net als Kitura ondersteunt het platform ook de sjablonen Moustache en Markdown, evenals de eigen Swift-native expressieve templating-taal, Leaf. Vapor wordt ook geleverd met een eigen CLI-engine zoals de andere Swift-frameworks aan de serverzijde, met de mogelijkheid om de opdrachtregelargumenten van de toepassing uit te breiden met aangepaste vlaggen. 

Installeren en uitvoeren

Om met Vapor aan de slag te gaan, begint u met het installeren van de Vapor-toolbox, die bestaat uit alle bibliotheekafhankelijkheden en de CLI-toolkit. Installeer het met Homebrew door het volgende in te voeren in de terminal:

$ zet damp / kraan / damp in

Wanneer de installatie is voltooid, kunt u bevestigen dat Vapor met succes is geïnstalleerd door te typen damp-help. Om een ​​project te maken, typt u het volgende in, in de plaats van uw eigen projectnaam:

$ damp nieuw 

De Vapor-engine bouwt een mappenstructuur die lijkt op het volgende:

. ├── Openbaar ├── Bronnen │ ├── App │ │ ├── Controllers │ │ ├── Modellen │ │ ├── boot.swift │ │ ├── configure.swift │ │ └── routes.swift │ └── Uitvoeren │ └── main.swift ├── Tests │ └── AppTests └── Package.swift

Om daadwerkelijk een Xcode-project te maken, moet u ook expliciet de volgende opdracht invoeren, vanuit de projectmap: 

$ damp xcode

Als laatste, om uw project te bouwen en uit te voeren, selecteert u vanuit Xcode de Rennen schema en het inzetdoelapparaat van Mijn Mac, en druk vervolgens op Rennen knop zoals u zou doen voor elk ander Xcode-project. Op voorwaarde dat uw Xcode-project geen fouten tegenkomt, zou u het volgende bevestigingsbericht in de terminal moeten zien:

Server start op http: // localhost: 8080

Ga je gang en voer die URL in in je browser naar keuze, en je zou je applicatie moeten zien lopen. 

Verdere informatie

Bekijk de volgende links voor meer informatie.

  • officiële Vapor-documentatie
  • Vapor GitHub-repository

Aan de slag met Perfect

Overzicht

Ten slotte kijken we naar Perfect by PerfectlySoft, een platform met veel functies aan de serverzijde zoals Vapor en Kitura. Perfect bevat dezelfde standaardbelletjes en fluittonen die u zou vinden bij de vorige leveranciers, van sjabloneren met Moustache of Markdown tot netwerken met web-sockets, evenals Apple Push Notification en SMTP.

Net als de andere server-side platforms, heeft Perfect zijn eigen ORM-implementatie, het StORM-platform (Perfect StORM), dat native ondersteuning biedt voor MySQL, PostgreSQL en andere prominente relationele databases, evenals MongoDB, Redis en andere NoSQL-oplossingen. Een opmerkelijke omissie van Perfect is een CLI, maar het framework maakt dit goed met een native macOS-app.

Net als Vapor heeft Perfect Turnstile ook ingebakken om het authenticatiemechanisme aan te drijven, uitgebreid om StORM intiemer te gebruiken. Een ander onderscheid dat deze oplossing heeft ten opzichte van de andere is in veel van de native hulpprogramma-bibliotheken die het ondersteunt, inclusief hun eigen cURL-wrapper en tools voor het werken met bestanden en mappen. De ontwikkelaarsbasis van Perfect is de op één na grootste, bijna op één lijn met Vapor's, wat betekent dat je een sterke community hebt om dit platform te ondersteunen, samen met een rijke verzameling educatieve bronnen om je vertrouwen te geven als je ervoor kiest.

Installeren en uitvoeren

Aan de slag met Perfect is heel eenvoudig. Kopieer eerst de PerfectlySoft-repo door het volgende in te voeren:

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

Vanuit de gekloonde map, bouw het project:

$ swift build

Voer ten slotte het project uit, waarop een lokale server op adres wordt uitgevoerd 0.0.0.0:8181:

.bouwen / debug / PerfectTemplate

U kunt uw project ook op Xcode uitvoeren door eerst een nieuw project te genereren, als volgt:

$ swift package generate-xcodeproj

Zorg er binnen Xcode voor dat je uitvoerbare doelwit wordt gewezen Mijn Mac, voor het bouwen en uitvoeren van het project.

Verdere informatie 

Bekijk de volgende koppelingen voor meer informatie over het perfecte kader.

  • officiële perfecte documentatie
  • StORM-documentatie

Conclusie 

De release van Swift voor de open-sourcecommunity heeft een duwtje in de goede richting gegeven voor Swift-oplossingen die verder gaan dan client-apps, waarbij back-end-serverframeworks de volgende grens worden. Geduwd door drie prominente projecten-Vapor door Qutheory, IBM's Kitura en Perfect-server-side Swift heeft iOS (en macOS) ingenieurs in staat gesteld full-stack ontwikkelaars te worden. Dit kan de afhankelijkheid van back-endtechnici van Node.js, PHP of .NET teniet doen. Swift aan serverzijde biedt teams ook de mogelijkheid om hun back-end te beheren zonder te hoeven vertrouwen op mobiele back-end-as-a-service oplossingen zoals Firebase of CloudKit.

Swift op serverniveau is niet voor iedereen: u moet beslissen hoeveel controle u nodig heeft voor uw back-end en of het zinvol is om uw eigen Swift te gebruiken. Ook heb ik niet geprobeerd u te vertellen welke server-side Swift-oplossing het beste is. Ontwikkelaars zijn zeker verwend met de keuze, en alle drie bieden een unieke en volwassen versie en zijn de moeite van het experimenteren waard. Ik zou je willen aanmoedigen om met elk van de voorbeeldcodes te spelen, de syntaxis te evalueren en met hun respectieve gemeenschappen in gesprek te gaan om te zien welke oplossing het beste bij je past.