Cum de a codifica cu Swift pe server

Ce veți crea

Deoarece Apple a introdus pentru prima oară Swift ca succesor al obiectivului C, a revoluționat modul în care codurile comunității iOS, macOS, watchOS și aplicațiile tvOS. Când Swift a devenit o platformă open-source, a deschis noi posibilități pentru limbajul dincolo de aplicațiile mobile și de pe partea clientului - Swift a devenit și el un limbaj de server! În acest tutorial, veți afla ce parte din serverul Swift este și de ce doriți să aveți Swift pe back-end. 

Inițiativa Swift de la server este împinsă de trei proiecte proeminente - Vapor de Qutheory, Kitura IBM și Perfect - cu scopul de a lăsa dezvoltatorii Swift să creeze servicii back-end pe deplin dezvoltate. Aceasta, în esență, va transforma astfel de dezvoltatori în dezvoltatori full-stack, negând necesitatea de a se baza pe Nod sau PHP sau care să dea controlul unei platforme BaaS, cum ar fi Firebase-ul Google. 

Obiectivele acestui articol 

În acest articol, veți afla totul despre serverul Swift. Mai întâi vă voi explica cum funcționează serverul Swift și apoi vă voi arăta cum să începeți cu cadrele Kitura, Vapor și Perfect.

Ce este serverul Swift?

Swift a fost anunțat pentru prima oară de Apple în 2014 și a devenit rapid unul dintre limbile de programare cu cea mai rapidă creștere. Swift atrage din multe dintre cele mai bune limbi contemporane, cum ar fi Python, permițând eleganța și ușurința de utilizare. Eliberă inginerii din cătușele tehnice ale obiectivului C, permițând o muncă mai fluidă și mai intuitivă. 

În decembrie 2015, Apple a făcut un alt anunț monumental și a făcut limba Swift - alături de bibliotecile de sprijin, depanatorul și managerul de pachete - un proiect open source în cadrul licenței Apache 2.0, deschizând platforma pentru ca publicul să creeze cereri de tragere și a contribui. Trecerea de la obiectivul C nu numai că a atras atenția multor dezvoltatori care au contribuit la App Store, dar a făcut mai ușor dezvoltatorilor de toate competențele și mediile de fundal să intre în ecosistemul Apple cu Swift. 

Cu toate acestea, în timp ce instrumentele de dezvoltare ale Apple au făcut din istoric mai ușor dezvoltatorii să creeze aplicații vizuale convingătoare și interesante pentru App Store, un obstacol notabil a fost acela că proiectele aveau încă nevoie de dezvoltatori de back-end specializați pentru a crea aplicații complexe bazate pe date. Deci, dezvoltatorii iOS și macOS ar trebui fie să angajeze asistența unui dezvoltator Python, PHP sau Node pentru a-și crea baza de date back-end, fie pentru a-și ridica abilitățile, rezultând într-un volum de lucru semnificativ mai mare pentru a-și îndeplini obiectivele de proiect. 

Deși back-end-as-a-service (Baas) a ajuns la salvare de dezvoltatori iOS, fără a-cod soluții de back-end, cum ar fi Firebase Google și CloudKit foarte proprii Apple care atenueaza complexitatea back-end, multe echipele și proiectele cer mai mult. Aici intră Swift de pe server, permițându-vă să creați un server complet back-end cu multiple fire, care este deschis și este infinit configurabil. 

Serverul Swift vă permite să alegeți modul în care găzduiți serverul de back-end, fie cu AWS, RackSpace, fie cu propriile servere fizice. Puteți alege, de asemenea, modul de încărcare a echilibra serverele dvs. (de exemplu, prin soluții de server populare, cum ar fi Nginx) și cum să persiste datele într-o bază de date (fie că este vorba de soluții NoSQL, cum ar fi MongoDB, sau baze de date tradiționale, cum ar fi Postgres, MySQL sau Oracle) . Nu numai că, dar nu sunteți niciodată legat de o soluție componentă - puteți comuta fără a afecta întregul cod de bază al aplicației. 

Ideea este că optând pentru o soluție Swift de pe server, cum ar fi Vapor de Qutheory, Kitura IBM sau Perfect, profitați de o gamă largă de pluginuri care vă permit să vă configurați back-end-ul exact așa cum doriți aceasta, făcând uz de competențele echipei tale existente stabilite în Swift pentru a face acest lucru. 

Serverul Swift pare cu siguranță convingător, dar care este cadrul potrivit pentru dvs.? Apoi vom arunca o privire la fiecare, la rândul său, începând cu Kitura.

Noțiuni de bază cu Kitura

Prezentare generală 

Începând cu Kitura, aveți o platformă care a fost lansată inițial în februarie 2016 și a câștigat proeminență mai târziu în acel an la WWDC de la Apple, reprezentând forajul IBM în susținerea web-ului de pe server cu Swift, care a fost apoi transferat de la mâinile Apple la open source. 

În general, Kitura se concentrează asupra configurației convenționale: construiește proiectul inițial afară cu pietre, înainte de a opta pentru cadrele și bibliotecile specifice pe care căutați să le construiți. Mecanismul de autentificare Kitura este susținută de propriul cadru de Kitura-Atestări middleware, permițându-vă să alegeți dintr-un amalgam de mecanisme de autentificare, de la tradițional numele de utilizator / parola pentru autentificare social-media și autentificare Federate, folosind OpenID care se ocupă de JSON Web Jetoane (JWT ).

Soluție de baze de date ORM Kitura este alimentat de la Kuery umbri complexitatea face cu SQL direct, sprijinind baze de date comune relaționale, cum ar fi MySQL, SQLite și PostgreSQL nativ, precum și alte soluții de baze de date, inclusiv baze de date NoSQL, prin diverse alte plugin-uri compatibile. 

Kitura furnizează, de asemenea, alte pluginuri utile pentru lucruri cum ar fi HTML templating, folosind plugin-uri populare, cum ar fi Stencil și Markdown. Venind de la IBM, cadrul server-side beneficiază, de asemenea, de o conectivitate intimă cu API-urile IBM Watson, precum și de suportul MacOS nativ pentru integrarea directă în platforma cloud Bluemix. Aceasta oferă o opțiune suplimentară la dispoziția dvs., împreună cu alte opțiuni tradiționale de implementare pe serverele Linux / Unix și macOS. 

În timp ce platforma oferă cu siguranță un set unic de caracteristici - de la Kuery la capacitatea de a se integra cu diferitele biblioteci IBM API - nu are influența comunității pe care Vapor o are. Adoptarea Kiturii necesită aprecierea și îmbrățișarea propriilor modalități neconvenționale de a face lucruri, de la modul în care Kuery funcționează la mecanismele de autentificare. Cu toate acestea, având în vedere că este susținută de o companie mare, cu accent pe întreprindere, sunt construite anumite asigurări. 

Instalarea și funcționarea Kitura

Cea mai rapidă modalitate de a începe este prin utilizarea interfeței liniei de comandă Kitura (CLI), susținută atât pe MacOS, cât și pe Linux. Folosind utilitarul popular de gestionare a pachetelor Homebrew, instalați Kitura și Kitura CLI introducând următoarele:

$ băutură robinet ibm-swift / kitura $ brew instala kitura

Într-un dosar gol pe care îl veți folosi ca proiect, executați următoarele pentru inițializarea proiectului:

$ kitura init

Când se face generarea aplicației dvs. de schelet, veți observa un nou proiect numit HelloKitura.xcodeproject. Puteți afla mai multe despre generarea de proiecte prin referire la documentația oficială a lui Kitura. Puteți deschide proiectul nou generat în Xcode și puteți modifica clasa aplicației primare, Application.swift, pentru a gestiona toate apelurile către rădăcina serverului dvs. http: // localhost: 8080 / Adresa URL:

// Manipulați cererile HTTP GET la "/" router.get ("/") request, reply, next în answer.send ("Hello, World!

Fragmentul de cod de mai sus răspunde prin returnarea clasicului Salut Lume!. Înainte de a putea executa în final proiectul, schimbați schema Xcode pentru a indica HelloKitura (proiectul dvs. activ) și începeți proiectul apăsând Comanda-R. În timp ce serverul dvs. rulează, într-un browser la alegere, mergeți la http: // localhost: 8080 și ar trebui să vedeți textul salut lume în browser-ul dvs.. 

Informatii suplimentare

Consultați următoarele link-uri pentru mai multe informații despre Kitura.

  • Kitura.io
  • Kituri pachete / plug-inuri
  • Kitura Ajutor

Noțiuni de bază cu vapori

Prezentare generală 

Lansat câteva luni mai târziu decât Kitura, în septembrie 2016, Vapor by Qutheory este considerat cel mai popular în ceea ce privește dimensiunea comunității și numărul de plugin-uri. Este construit pe partea superioară a cadrului Swift-nio al Apple, făcându-l o adevărată putere. Spre deosebire de Kitura și alte platforme, care nu sunt construite pur în Swift, ci mai degrabă pe Node.js sau alte interpretoare intermediare, vapori se decuplează de la oricare dintre aceste dependențe pentru a oferi un parser Swift și să ofere API-uri clare și lizibile.

Vapor oferă suport complet de baze de date pentru furnizorii SQL, cum ar fi MySQL și PostgreSQL, precum și furnizori NoSQL precum Redis și MongoDB, cum ar fi Kitura. In timp ce Kitura are propria solutie pentru ORM, Vapor foloseste Fluent ORM pentru a sustine bazele de date pe care tocmai le-am mentionat, ceea ce face relativ usor extinderea ORM la alti furnizori de baze de date terte parti. Vapora se separă de celelalte cadre, sprijinind în mod nașional serviciul de notificare push de la Apple, precum și suportul SMTP pentru împingerea notificărilor prin e-mail. 

În timp ce Kitura implementează propriul cadru de autentificare, Vapor are biblioteca de autentificare Turnstile a lui Stormpath, coaptă în natură. La fel ca Kitura, platforma sprijină, de asemenea, șabloanele Mustache și Markdown, precum și propria limbă templificatoare Swift-nativă, Leaf. De asemenea, Vapor vine cu propriul său motor CLI ca și celelalte cadre Swift de pe server, cu capacitatea de a extinde argumentele liniei de comandă a aplicației cu steaguri personalizate. 

Instalarea și funcționarea

Pentru a începe cu Vapor, începeți să instalați caseta de instrumente Vapor, care constă în toate dependențele de bibliotecă și în setul de instrumente CLI. Instalați-o cu Homebrew introducând următoarele în terminal:

$ brew instalați vapori / robinet / vapori

După ce ați terminat instalarea, puteți confirma că Vapor sa instalat cu succes tastând vapori. Pentru a crea un proiect, introduceți următoarele, înlocuindu-vă cu propriul nume de proiect:

$ vapori noi 

Motorul Vapor va construi o structură de dosare asemănătoare următoarelor:

. ├── ├── surse publice │ │ │ ├── App ├── Controllere │ │ ├── Modele │ │ │ │ ├── boot.swift ├── configure.swift │ │ └── routes.swift │ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Pentru a crea un proiect Xcode, va trebui, de asemenea, să introduceți în mod explicit următoarea comandă din interiorul directorului proiectului: 

$ vapor xcode

În cele din urmă, pentru a construi și a rula proiectul dvs., selectați din Xcode Alerga precum și dispozitivul destinație de implementare a Macul meu, apoi apăsați pe Alerga cum ar fi pentru orice alt proiect Xcode. Cu condiția ca proiectul dvs. Xcode să nu înregistreze erori, trebuie să vedeți în terminal următorul mesaj de confirmare:

Server pornind de la http: // localhost: 8080

Mergeți mai departe și introduceți acea adresă URL în browserul ales de dvs. și ar trebui să vedeți că aplicația dvs. este difuzată. 

Informatii suplimentare

Consultați următoarele link-uri pentru mai multe informații.

  • documentația oficială de vapori
  • Depozit de vapori GitHub

Noțiuni de bază cu Perfect

Prezentare generală

În cele din urmă, ne uităm la Perfect by PerfectlySoft, o platformă bazată pe server, cum ar fi Vapor și Kitura. Perfect include aceleași clopote și fluiere standard pe care le-ați găsi pe furnizorii anteriori, de la template-uri cu Mustache sau Markdown la rețele cu conectori web, precum și notificarea Apple Push și SMTP.

La fel ca celelalte platforme de server, Perfect are propria implementare ORM, platforma StORM (Perfect StORM), care oferă suport nativ pentru MySQL, PostgreSQL și alte baze de date relaționale proeminente, precum și MongoDB, Redis și alte soluții NoSQL. O omisiune remarcabilă de la Perfect este un CLI, dar cadrul se face pentru aceasta cu o aplicație MacOS nativă.

La fel ca Vapor, Perfect are și turnichetul de copt pentru a-și acționa mecanismul de autentificare, extins pentru a interacționa cu STORM mai intim. O altă distincție pe care o are această soluție față de ceilalți este în multe dintre bibliotecile de utilități native pe care le suportă, inclusiv propriul lor wrapper cURL, precum și instrumentele pentru lucrul cu fișiere și foldere. Baza de dezvoltatori a lui Perfect este cea de-a doua mare, aproape pe aceeași poziție cu Vapor, ceea ce înseamnă că aveți o comunitate puternică care să sprijine această platformă, împreună cu un bogat set de resurse educaționale pentru a vă oferi încredere dacă o alegeți.

Instalarea și funcționarea

Noțiuni de bază și de funcționare cu Perfect este foarte simplu. Mai întâi, clonați repo-ul PerfectlySoft, introducând următoarele:

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

Din interiorul dosarului clonat, construiți proiectul:

construiți rapid

În cele din urmă, executați proiectul, care va rula un server local pe adresa 0.0.0.0:8181:

.construi / depanare / PerfectTemplate

De asemenea, puteți rula proiectul pe Xcode generând mai întâi un nou proiect, după cum urmează:

pachetul swift generat de $ -xcodeproj

În cadrul Xcode, asigurați-vă că țintă executabilă este indicată Macul meu, înainte de a construi și a executa proiectul.

Informatii suplimentare 

Consultați următoarele link-uri pentru mai multe informații despre cadrul Perfect.

  • oficial Documentație perfectă
  • Documentația StORM

Concluzie 

Eliberarea lui Swift în comunitatea open-source a generat un impuls pentru soluțiile Swift dincolo de aplicațiile clienților, iar cadrele server-ului de back-end devenind următoarea frontieră. Impins de trei proiecte proeminente, Vapor de Qutheory, Kitura IBM și Swift de pe serverul Perfect au permis inginerilor iOS (și macOS) să devină dezvoltatori full-stack. Acest lucru poate anula dependența de inginerii back-end din Node.js, PHP sau .NET. De asemenea, serverul Swift oferă echipelor posibilitatea de a-și controla back-end-ul fără a trebui să se bazeze pe soluții mobile de back-end-as-a-service cum ar fi Firebase sau CloudKit.

Serverul Swift nu este pentru toată lumea: trebuie să decideți cât de mult control aveți nevoie pentru back-end-ul dvs. și dacă are sens să vă răsturnați. De asemenea, nu am încercat să vă spun care este cea mai bună soluție Swift de pe server. Dezvoltatorii sunt, cu siguranță, răsfățați pentru alegere, iar toate cele trei oferă un aspect unic și matur și merită experimentat. V-aș încuraja să jucați cu fiecare exemplar de coduri, să evaluați sintaxa și să vă angajați cu comunitățile respective pentru a vedea care soluție se potrivește cel mai bine.

Cod