Swift - Et sofistikeret serversidesprog

Swift - Et sofistikeret serversidesprog

Siden Apple oprindeligt bekendtgjorde Swift som efterfølgeren til Objective-C, har det ændret, hvordan netværket koder iOS-, macOS-, watchOS- og tvOS-applikationer.

På det tidspunkt, hvor Swift blev til en open source-fase, åbnede den nye tænkelige resultater for sproget ud over applikationen til mobil og klientside. Swift blev også til et serversidesprog. I denne instruktionsøvelse vil du indse, hvad Swift på serversiden er, og hvorfor du bliver nødt til at have Swift på din back-end.

Swift-aktivitet på serversiden skubbes af tre fremtrædende projekter, der er Vapor af Qutheory, IBMs Kitura og Perfect, med det formål at give Swift-udviklere en chance for at foretage fuldstændig backend-administrationer. Dette vil fundamentalt ændre sådanne ingeniører til full-stack-udviklere, hvilket annullerer kravet om afhængighed af Node eller PHP eller tilbyder kontrol til et BaaS-trin, for eksempel Googles Firebase.

Mål for denne artikel

I denne artikel vil du tage ind om Swift på serversiden. Først skal jeg afklare, hvordan Swift på serversiden fungerer, og derefter demonstrerer jeg de bedste fremgangsmåder til at begynde med Kitura-, Vapor- og Perfect-systemerne.

Introduktion af serversiden Swift

Swift blev først annonceret af Apple i 2014 og afviklede hurtigt et af de hurtigst udviklende programmeringssprog. Swift trækker fra et stort antal af de bedste moderne sprog, for eksempel Python, hvilket giver elegance og brugervenlighed. Det befri ingeniører fra de specialiserede lænker i Objective-C, hvilket tillader stadig mere flydende og instinktivt arbejde.

I december 2015 lavede Apple endnu en fantastisk erklæring og lavede Swift-sproget sammen med sine understøttende biblioteker, debugger og pakkehåndtering til et open source-projekt under Apache 2.0-licensen, der åbnede platformen for folk generelt at anmode om pull og bidrage. Flytningen langt fra Objective-C har ikke bare fristet de mange Objective-C-udviklere, der bidrager til App Store, men det har gjort det lettere for udviklere af alle færdigheder og fundamenter at komme ind i Apple-økosystemet med Swift.

Under alle omstændigheder, mens Apples avancerede enheder verificerbart har gjort det lettere for udviklere at udvikle udadtil overbevisende og engagerende apps til App Store, har en fremtrædende flaskehals været, at projekter stadig krævede specialiserede back-end-udviklere til at udvikle komplekse informationsdrevne applikationer. Så iOS- og macOS-udviklere skulle enten have brug for hjælp fra en Python-, PHP- eller Node-udvikler til at oprette deres back-end-database eller få evnen selv og medføre en helt tungere tilbageværende opgave ved hånden for at afslutte deres forpligtelsesmål.

Selvom back-end-as-a-service (BaaS) har handlet helten fra iOS-udviklere, uden back-end-løsninger uden kode, for eksempel Googles Firebase og Apples egen specielle CloudKit, der mildner back-endens kompleksitet, adskillige grupper og ventures anmoder om mere. Dette er stedet, hvor Swift kommer ind på serversiden, så du kan lave en fuldt udbygget multi-threaded back-end-server, der er åben sourced og uendeligt konfigurerbar.

Swift på serversiden giver dig en chance for at vælge, hvordan du har din back-end-server, uanset om det er med AWS, RackSpace eller dine helt egne fysiske servere. Du kan ligeledes vælge, hvordan du indlæser balance på dine servere (f.eks. Ved hjælp af fremtrædende serverløsninger, for eksempel NGINX), og hvordan du fortsætter dine oplysninger i en database (det være sig NoSQL-arrangementer, for eksempel MongoDB eller traditionelle databaser, for eksempel , Postgres, MySQL eller Oracle). At, så godt som du aldrig er knyttet til et enkelt arrangement, kan du skifte op uden at påvirke hele din applikationskodebase.

Faktum er, at ved at beslutte om et open source-server-Swift-arrangement, for eksempel Vapor af Qutheory, IBMs Kitura eller Perfect, udnytter du et stort antal moduler, der gør det muligt for dig kun at designe din bagende måde, hvorpå du har brug for det, ved at udnytte din nuværende gruppes vifte af evner i Swift til at gøre som sådan.

Swift på serversiden lyder absolut overbevisende, men hvilken struktur er ideel for dig? Dernæst undersøger vi hver enkelt således, begyndende med Kitura.

Begynder med Kitura

Begyndende med Kitura har du et stadium, der først blev afladet i februar 2016 og plukket umiskendelig kvalitet hurtigt derefter på Apples WWDC og talte til IBMs invasion til at understøtte websiden med Swift, som derefter blev sat til at skifte fra Apples hænder til åben kilde.

Som regel er Kitura centreret omkring tradition over konfiguration. Det konstruerer dit underliggende projekt med stubber, inden du vælger de eksplicitte rammer og biblioteker, du håber at bygge. Kituras godkendelsesproces opretholdes af dens usædvanligt egne Kitura-Credentials middleware-ramme, så du kan se over en buffet med valideringssystemer, fra det konventionelle brugernavn / adgangskode til online netværkslogin og samlet verifikation ved hjælp af OpenID, der håndterer JSON Web Tokens (JWT) .

Kituras database ORM-arrangement styres af Kuery for at forvirre kompleksiteten ved styring af SQL specifikt, understøtter grundlæggende rationelle databaser, for eksempel MySQL, SQLite og PostgreSQL lokalt, og derudover andre databasearrangementer, inklusive NoSQL-databaser, gennem de forskellige andre plugins.

Kitura giver desuden andre værdifulde plugins til ting, for eksempel HTML-skabeloner, ved hjælp af velkendte plugins, for eksempel Stencil og Markdown. Oprindeligt fra IBM tjener serversiden systemet desuden ved at oprette forbindelse til IBM Watson API'er og derudover give macOS support til at koordinere lige ind i deres Bluemix cloud-platform. Dette giver et ekstra valg til rådighed for dig sammen med dine andre konventionelle installationsalternativer på tværs af Linux / Unix- og macOS-servere.

Mens platformen absolut giver et ekstraordinært sæt funktioner fra Kuery til kapaciteten til at blive integreret i de forskellige IBM API-biblioteker. Det har ikke netværkseffekten, som Vapor har. Modtagelse af Kitura kræver anerkendelse og forståelse af sine egne ikke-regelmæssige metoder til at få tingene gjort, fra hvordan Kuery fungerer til dens godkendelsesmekanisme. Under alle omstændigheder, i betragtning af at det er sponsoreret af en ekspansiv organisation med opmærksomhed på bestræbelsen, er der nogle fremtidige forseglingsbekræftelser arbejdet i.

Installation og kørsel af Kitura

Den hurtigste metode til at begynde er ved at bruge Kituras retningsliniegrænseflade (CLI), der understøttes på både macOS og Linux. Brug det velkendte pakkehåndteringsværktøj Homebrew, installer Kitura og Kitura CLI ved at indtaste følgende:

$ brygkran ibm-swift / kitura

$ bryg installkitura

Inde i en uudfyldt arrangør, som du vil bruge som dit foretagende, skal du køre det ledsagende for at påtage dig din forpligtelse:

$ kitura init

På det tidspunkt, hvor det er færdigt med at producere din skeletapplikation, vil du se et andet projekt kaldet HelloKitura.xcodeproject. Du kan få mere at vide om projektgenerering ved at henvise til Kituras dokumentation. Du kan åbne det nyligt oprettede projekt i Xcode og ændre den vigtige applikationsklasse Application.swift for at håndtere alle opkald til din servers rod https: // localhost: 8080 / URL :

// Håndter HTTP GET-anmodninger til "/"

router.get ("/") {anmodning, svar, næste i

response.send ("Hej verden!")

Næste()

}

Kodestykket ovenfor reagerer ved at gendanne det eksemplariske Hello, World! . Før du endelig kan køre projektet, skal du ændre dit Xcode-skema for at pege på HelloKitura (dit aktive projekt), og påbegynde din forpligtelse ved at trykke på Command-R . Mens din server kører, skal du gå til https: // localhost: 8080 i en browser efter eget valg, og du skal se hejverdenen i din browser.

Begyndende med damp

Udgivet et par måneder efter Kitura i september 2016 betragtes Vapor by Qutheory generelt som den mest fremtrædende med hensyn til samfundets størrelse og antal moduler. Det er bygget oven på Apples Swift-nio-ramme, hvilket gør det til et ægte udførelseskraftværk. Overhovedet ikke som Kitura og forskellige faser, som ikke er fremstillet blot i Swift, men i stedet på Node.js eller andre midterpersons-parsere, afkobler Vapor sig fra nogen af disse afhængigheder for at levere en Swift-parser og give klare og sammenhængende API'er.

Vapor giver grundig hjælp til databaser til SQL-leverandører, for eksempel MySQL og PostgreSQL, og NoSQL-leverandører, for eksempel Redis og MongoDB, som Kitura. Selvom Kitura har sine egne Kuery ORM-løsninger, udnytter Vapor Fluent ORM til at understøtte de databaser, som jeg lige har henvist til, hvilket gør det moderat enkelt at strække ORM ud til andre tredjepartsdatabaseudbydere. Damp isolerer sig fra alternative rammer ved at understøtte Apples Push Notification Service og understøtter også SMTP til at skubbe e-mail-underretninger.

Mens Kitura aktualiserer sin egen godkendelsesramme, har Vapor Stormpaths Turnstile-godkendelsesbibliotek bagt indbygget. Ligesom Kitura understøtter platformen ligeledes Mustache og Markdown fristelser, og desuden ledsager Vapor sit eget Swift-native ekspressive skabelonsprog desuden sin helt egen CLI-motor som den anden Swift-ramme på serversiden med kapacitet til at udvide applikationskommandoen. -linje argumenter med brugerdefinerede flag.

Installation og kørsel

Til at begynde med Vapor starter du med at installere Vapor-værktøjssættet, der består af alle biblioteksafhængigheder og CLI-værktøjskassen. Installer det med Homebrew ved at indtaste følgende i terminalen:

$ bryg installationsdamp / han / damp

På det tidspunkt, hvor installationen er afsluttet, kan du bekræfte, at damp er installeret med succes ved at skrive damp - hjælp. For at oprette et projekt skal du indtaste følgende og erstatte dit eget projektnavn:

$ damp ny

Dampmotoren bygger en mappestruktur, der ligner følgende:

├── Offentlig

├── Kilder

│ ├── App

│ │ ├── Controllere

│ │ ├── Modeller

│ │ ├── boot.swift

│ │ ├── configure.swift

│ │ └── ruter.swift

│ └── Kør

│ └── main.swift

├── Test

│ └── AppTests

└── Pakke.swift

For faktisk at oprette et Xcode-projekt skal du ligeledes eksplicit indtaste følgende kommando fra projektmappen:

$ damp xcode

Endelig skal du for at opbygge og køre dit projekt fra Xcode vælge Run-skemaet og også udviklingsmålenheden på Min Mac , og derefter trykke på Run- knappen, som du ville gøre for ethvert andet Xcode-projekt. Da dit Xcode-projekt ikke oplever nogen fejl, skal du se følgende bekræftelsesmeddelelse i terminalen:

Server startende på https: // localhost: 8080

Gå videre og indtast den URL i enhver browser, og du skal se din applikation køre.

Begynder med perfekt

Endelig ser vi på Perfect af PerfectlySoft, en funktionsrig server-side platform som Vapor og Kitura. Perfect inkorporerer en lignende standard klokker og fløjter, som du ville opdage hos de tidligere leverandører, lige fra skabeloner med overskæg eller Markdown til netværk med websockets og derudover Apple Push Notification og SMTP.

Ligesom den anden platform på serversiden har Perfect sin helt egen ORM-implementering, StORM-platformen (Perfect StORM), som giver native support til MySQL, PostgreSQL og andre fremtrædende relationsdatabaser og desuden MongoDB, Redis og andre NoSQL-løsninger. En fremtrædende udelukkelse fra Perfect er en CLI, men rammen kompenserer for dette med en indbygget macOS-applikation.

Ligesom Vapor har Perfect desuden Turnstile bagt ind for at drive sin autentificeringsmekanisme, udvidet til at interagere med StORM mere intimt. En anden kvalifikation, som dette arrangement har over de andre, findes i en betydelig del af de oprindelige hjælpebiblioteker, det understøtter, inklusive deres egen enestående cURL-indpakning og derudover værktøjer til at arbejde med filer og mapper. Perfekt udviklerbase er den næststørste og holder næsten trit med Vapor's, hvilket betyder, at du har et stærkt samfund til at bakke op om denne platform sammen med et rigt sæt uddannelsesressourcer, der giver dig sikkerhed, hvis du vælger det.

Installation og kørsel

At komme i gang med Perfect er ekstremt ligetil. Oprindeligt kloner PerfectlySoft repo ved at indtaste følgende:

$ git-klon https://github.com/PerfectlySoft/PerfectTemplate.git

Fra projektets indbyggede klonede mappe:

$ hurtig opbygning

Endelig kør projektet, som kører en lokal server på adresse 0.0.0.0:8181

.build / debug / PerfectTemplate

Du kan også køre dit projekt på Xcode ved først at oprette et nyt projekt som følger:

$ hurtig pakke generere-xcodeproj

Inden for Xcode skal du sikre dig, at dit eksekverbare mål er peget på Min Mac , inden du bygger og kører projektet.

Konklusion

Ankomsten af Swift til open source-netværket har skubbet et skub for Swift-løsninger ud over klientapplikationer, med back-end-serverrammer, der bliver til følgende udkanter. Skubbet af tre fremtrædende projekter - Vapor af Qutheory, IBMs Kitura og Perfect. Swift på serversiden har givet iOS (og macOS) -udviklere mulighed for at blive full-stack-udviklere. Dette kan negere afhængigheden af Node.js, PHP eller .NET back-end-udviklere. Swift på serversiden giver desuden grupper mulighed for at kontrollere deres back-end uden at skulle stole på mobil back-end-as-a-server-løsning som Firebase eller CloudKit.

Swift på serversiden er ikke for alle, du skal afgøre, hvor meget kontrol du har brug for til din back-end, og om det giver mening for dig at rulle din egen. Derudover forsøgte jeg ikke at fortælle dig, hvilken Swift-løsning på serversiden der er ideel. Udviklere er utvivlsomt ødelagt for beslutning, og hver af de tre giver en unik og moden tilgang og er værd at eksperimentere med. Jeg vil opfordre dig til at lege med hver af eksemplerne på eksempler, vurdere sprogstrukturen og oprette forbindelse til deres særlige samfund for at se, hvilken løsning der passer dig bedst.