Swift - Et sofistikert serversidespråk

Swift - Et sofistikert serversidespråk

Siden Apple opprinnelig kjente Swift som etterfølgeren til Objective-C, har det endret hvordan nettverket koder iOS-, macOS-, watchOS- og tvOS-applikasjoner.

På det tidspunktet da Swift ble et open source-stadium, åpnet det nye tenkelige resultater for språket utenfor mobil- og klientsiden. Swift ble også til et serversidespråk. I denne instruksjonsøvelsen vil du innse hva Swift på serversiden er og hvorfor du trenger å ha Swift på baksiden.

Serversiden Swift-aktivitet blir presset av tre fremtredende prosjekter som er Vapor av Qutheory, IBMs Kitura og Perfect, med det formål å gi Swift-utviklere en sjanse til å lage fullverdige backend-administrasjoner. Dette vil i grunn endre slike ingeniører til full-stack-utviklere, og ugyldiggjøre kravet om avhengighet av Node eller PHP eller tilby kontroll til et BaaS-trinn, for eksempel Googles Firebase.

Mål for denne artikkelen

I denne artikkelen vil du ta inn om Swift på serversiden. Først skal jeg avklare hvordan Swift på serversiden fungerer, og etter det vil jeg demonstrere beste fremgangsmåter for å begynne med Kitura-, Vapor- og Perfect-systemene.

Introduksjon av Server Side Swift

Swift ble først annonsert av Apple i 2014 og avviklet raskt et av de raskeste programmeringsspråkene. Swift trekker fra enorme antall av de beste moderne språkene, for eksempel Python, noe som gir eleganse og brukervennlighet. Det frigjør ingeniører fra de spesialiserte sjaklene til Objective-C, og tillater stadig mer flytende og instinktivt arbeid.

I desember 2015 gjorde Apple en annen fantastisk erklæring og gjorde Swift-språket sammen med sine støttende biblioteker, feilsøkingsprogrammer og pakkeforvalter til et åpen kildekodeprosjekt under Apache 2.0-lisensen, og åpnet plattformen for folk generelt å gjøre trekkforespørsel og bidra. Flyttingen langt fra Objective-C har ikke bare fristet de mange Objective-C-utviklerne som har bidratt til App Store, men det har gjort det enklere for utviklere av alle ferdigheter og grunnlag å gå inn i Apple-økosystemet med Swift.

Uansett, mens Apples fremdriftsenheter har gjort det lettere for utviklere å utvikle utad overbevisende og engasjerende apper for App Store, har en fremtredende flaskehals vært at prosjekter fortsatt krevde spesialiserte back-end-utviklere for å utvikle komplekse informasjonsdrevne applikasjoner. Så iOS og macOS-utviklere vil enten trenge å hente inn hjelp fra en Python-, PHP- eller Node-utvikler for å lage sin back-end-database eller få muligheten selv, noe som gir en helt tyngre gjenværende oppgave for hånden for å fullføre sine mål.

Selv om back-end-as-a-service (BaaS) har handlet helten til iOS-utviklere, uten back-end-løsninger uten kode, for eksempel Googles Firebase og Apples egen spesielle CloudKit som demper kompleksiteten i back-enden, mange grupper og virksomheter ber om mer. Dette er stedet serversiden Swift kommer inn, slik at du kan lage en fullverdig multi-threaded back-end-server som er åpen og konfigurerbar.

Swift på serversiden gir deg sjansen til å velge hvordan du har back-end-serveren din, uavhengig av om det er med AWS, RackSpace eller dine egne fysiske servere. Du kan også velge hvordan du skal laste inn balanse på serverne dine (f.eks. Ved hjelp av fremtredende serverløsninger, for eksempel NGINX) og hvordan du fortsetter informasjonen din i en database (det være seg NoSQL-ordninger, for eksempel MongoDB eller tradisjonelle databaser, for eksempel , Postgres, MySQL eller Oracle). I tillegg til at du aldri er knyttet til en delordning, kan du slå på uten å påvirke hele applikasjonens kodebase.

Faktum er at ved å bestemme et åpent kildekode-Swift-arrangement på server-siden, for eksempel Vapor by Qutheory, IBMs Kitura eller Perfect, utnytter du en enorm mengde moduler som gjør det mulig for deg å designe bakenden din bare måten du trenger det på, og utnytter din nåværende gruppes evner i Swift til å gjøre som sådan.

Serversiden Swift høres helt overbevisende ut, men hvilken struktur er ideell for deg? Deretter undersøker vi hver enkelt slik, begynner med Kitura.

Begynner med Kitura

Fra og med Kitura har du et stadium som først ble utladet i februar 2016 og plukket opp umiskjennelig kvalitet like etterpå på Apples WWDC, og talte til IBMs invasjon i å støtte server-web med Swift, som deretter ble satt til overgang fra Apples hender til åpen kilde.

Som regel er Kitura sentrert rundt tradisjon over konfigurasjon. Det konstruerer det underliggende prosjektet ditt med stubber, før du velger de eksplisitte rammene og bibliotekene du håper å bygge. Kituras autentiseringsprosess blir opprettholdt av det eksepsjonelt eget Kitura-Credentials mellomvare-rammeverket, slik at du kan se over en buffé med valideringssystemer, fra det vanlige brukernavnet / passordet til online nettverksinnlogging og enhetlig verifisering, ved hjelp av OpenID som håndterer JSON Web Tokens (JWT). .

Kituras ORM-ordning for database styres av Kuery for å forvirre kompleksiteten ved å administrere SQL spesifikt, og støtte grunnleggende rasjonelle databaser, for eksempel MySQL, SQLite og PostgreSQL lokalt, og i tillegg andre databasearrangementer, inkludert NoSQL-databaser, gjennom de forskjellige andre plugins.

Kitura gir i tillegg andre verdifulle plugins for ting, for eksempel HTML-mal, ved bruk av kjente plugins, for eksempel Stencil og Markdown. Opprinnelig fra IBM tjener serversystemet i tillegg ved tilkobling med IBM Watson APIer og gir i tillegg macOS-støtte til å koordinere direkte til Bluemix-skyplattformen. Dette gir deg et ekstra valg, sammen med dine andre konvensjonelle distribusjonsalternativer på tvers av Linux / Unix og macOS-servere.

Mens plattformen absolutt gir et ekstraordinært sett med funksjoner fra Kuery til kapasiteten til å integreres i de forskjellige IBM API-bibliotekene. Den har ikke nettverkseffekten som Vapor har. Motta Kitura krever å anerkjenne og forstå sine egne ikke-vanlige metoder for å få ting gjort, fra hvordan Kuery fungerer til autentiseringsmekanismen. I alle fall, gitt at det er sponset av en ekspansiv organisasjon med oppmerksomhet på arbeidet, er det noen fremtidige forseglingsbekreftelser arbeidet med.

Installere og kjøre Kitura

Den snappeste metoden å begynne er ved å bruke Kituras retningslinjegrensesnitt (CLI), støttet på både macOS og Linux. Bruk det velkjente pakkehåndteringsverktøyet Homebrew, installer Kitura og Kitura CLI ved å skrive inn følgende:

$ brygkran ibm-swift / kitura

$ brygge installkitura

Inne i en ufylt arrangør som du vil bruke som din satsning, kjør det medfølgende for å påta deg ditt løfte:

$ kitura init

På det tidspunktet når det er ferdig med å produsere skjelettapplikasjonen din, vil du se et annet prosjekt som heter HelloKitura.xcodeproject. Du kan ta mer inn om prosjektgenerering ved å referere til Kituras dokumentasjon. Du kan åpne det nylig opprettede prosjektet i Xcode og endre den essensielle applikasjonsklassen Application.swift for å håndtere alle anrop til serverens rot https: // localhost: 8080 / URL :

// Håndter HTTP GET-forespørsler til "/"

router.get ("/") {forespørsel, svar, neste i

response.send ("Hei, verden!")

neste ()

}

Kodestykket ovenfor reagerer ved å gjenopprette den eksemplariske Hello, World! . Før du endelig kan kjøre prosjektet, endrer du Xcode-ordningen for å peke på HelloKitura (ditt aktive prosjekt), og begynner å gjøre ved å trykke Command-R . Mens serveren din kjører, går du til https: // localhost: 8080 i en nettleser du velger, så bør du se hei-verdenen i nettleseren din.

Begynner med damp

Utgitt et par måneder etter Kitura, i september 2016, er Vapor by Qutheory generelt ansett som den mest fremtredende når det gjelder fellestørrelse og antall moduler. Den er bygget oppå Apples Swift-nio-rammeverk, noe som gjør den til et ekte kraftverk. Ikke i det hele tatt som Kitura og forskjellige stadier, som ikke bare er produsert i Swift, men i stedet på Node.js eller andre mellompersoner, Vapor kobler seg fra noen av disse avhengighetene for å levere en Swift-parser og gi klare og sammenhengende API-er.

Vapor gir grundig hjelp av databaser til SQL-leverandører, for eksempel MySQL og PostgreSQL, og NoSQL-leverandører, for eksempel Redis og MongoDB, som Kitura. Selv om Kitura har sine egne Kuery ORM-løsninger, utnytter Vapor Fluent ORM til å støtte databasene jeg nettopp har referert til, noe som gjør det moderat enkelt å strekke ut ORM til andre tredjeparts databaseleverandører. Damp isolerer seg fra alternative rammer ved å støtte Apples Push Notification Service, og støtter også SMTP for pushing av e-postvarsler.

Mens Kitura aktualiserer sitt eget autentiseringsrammeverk, har Vapor Stormpaths Turnstile-autentiseringsbibliotek bakt innfødt. I likhet med Kitura støtter plattformen også Mustache og Markdown-fristelser, og i tillegg følger det eget Swift-native ekspressive malespråket, Vapor sin egen CLI-motor som det andre Swift-rammeverket på serversiden, med kapasitet til å utvide applikasjonskommandoen. -linje argumenter med tilpassede flagg.

Installere og kjøre

Til å begynne med Vapor starter du med å installere Vapor-verktøysettet, som består av alle bibliotekavhengighetene og CLI-verktøykassen. Installer den med Homebrew ved å skrive inn følgende i terminalen:

$ brygge installasjonsdamp / kran / damp

På det tidspunktet når installasjonen er fullført, kan du bekrefte at Vapor har installert vellykket ved å skrive damp - hjelp. For å lage et prosjekt, skriv inn følgende, og erstatt med ditt eget prosjektnavn:

$ damp ny

Dampmotoren vil bygge en mappestruktur som ligner på følgende:

├── Offentlig

├── Kilder

│ ├── App

│ │ ├── Kontrollere

│ │ ├── Modeller

│ │ ├── boot.swift

│ │ ├── configure.swift

│ │ └── ruter.swift

│ └── Løp

│ └── main.swift

├── Tester

│ └── AppTester

└── Pakke.swift

For å faktisk lage et Xcode-prosjekt, må du også angi følgende kommando eksplisitt fra prosjektmappen:

$ vapor xcode

Til slutt, for å bygge og kjøre prosjektet ditt, velg Run-skjemaet og også utviklingsmålenheten til Min Mac fra Xcode, og trykk deretter på Run- knappen som du ville gjort for ethvert annet Xcode-prosjekt. Gitt at Xcode-prosjektet ikke opplever noen feil, bør du se følgende bekreftelsesmelding i terminalen:

Server starter på https: // localhost: 8080

Fortsett og skriv inn URL-en i en hvilken som helst nettleser, så ser du at applikasjonen kjører.

Begynner med perfekt

Til slutt tar vi en titt på Perfect av PerfectlySoft, en funksjonsrik server-plattform som Vapor og Kitura. Perfect inneholder lignende standard bjeller og fløyter du ville oppdage hos de forrige leverandørene, fra mal med Mustache eller Markdown til nettverk med nettkontakter, og i tillegg Apple Push Notification og SMTP.

I likhet med den andre server-side-plattformen har Perfect sin helt egen ORM-implementering, StORM-plattformen (Perfect StORM), som gir innfødt støtte for MySQL, PostgreSQL og andre fremtredende relasjonsdatabaser, og i tillegg MongoDB, Redis og andre NoSQL-løsninger. En fremtredende utelukkelse fra Perfect er en CLI, men rammeverket kompenserer for dette med en innfødt macOS-applikasjon.

I likhet med Vapor, har Perfect også Turnstile bakt inn for å drive autentiseringsmekanismen, utvidet for å samhandle med StORM mer intimt. En annen kvalifikasjon som denne ordningen har over de andre, er i en betydelig del av de innfødte verktøybibliotekene den støtter, inkludert deres egen enestående cURL-innpakning og i tillegg verktøy for å jobbe med filer og mapper. Perfekt utviklerbase er den nest største og nesten holder tritt med Vapor's, noe som betyr at du har et sterkt fellesskap for å støtte denne plattformen, sammen med et rikt sett med pedagogiske ressurser som gir deg sikkerhet på sjansen for at du velger den.

Installere og kjøre

Å komme i gang med Perfect er ekstremt grei. I utgangspunktet kloner du PerfectlySoft-repoen ved å skrive inn følgende:

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

Bygg prosjektet fra innsiden av den klonede mappen:

$ rask bygging

Til slutt, kjør prosjektet, som kjører en lokal server på adresse 0.0.0.0:8181

.build / feilsøk / PerfectTemplate

Du kan også kjøre prosjektet ditt på Xcode ved først å opprette et nytt prosjekt, som følger:

$ rask pakke generere-xcodeproj

I Xcode må du forsikre deg om at det kjørbare målet ditt peker mot Min Mac før du bygger og kjører prosjektet.

Konklusjon

Ankomsten av Swift til open source-nettverket har drevet et press for Swift-løsninger utover klientapplikasjoner, med back-end-serverrammer som blir til følgende utkanter. Presset av tre fremtredende prosjekter - Vapor av Qutheory, IBMs Kitura og Perfect. Serversiden Swift har gitt iOS (og macOS) utviklere muligheten til å bli full-stack utviklere. Dette kan oppheve avhengigheten av Node.js, PHP eller .NET back-end-utviklere. Swift på serversiden gjør det også mulig for grupper å kontrollere back-enden uten å måtte stole på mobil back-end-as-a-server-løsning som Firebase eller CloudKit.

Swift på serversiden er ikke for alle, du må avgjøre hvor mye kontroll du trenger for back-enden din, og om det er fornuftig for deg å rulle din egen. I tillegg prøvde jeg ikke å fortelle deg hvilken Swift-løsning på serversiden som er ideell. Utviklere er utvilsomt ødelagt for beslutning, og hver av de tre gir et unikt og modent grep og er verdt å eksperimentere med. Jeg vil oppfordre deg til å leke med hver av eksemplene på eksemplene, vurdere språkstrukturen og ta kontakt med de aktuelle samfunnene for å se hvilken løsning som passer deg best.