Da quando Apple ha introdotto per la prima volta Swift come successore di Objective-C, ha rivoluzionato il modo in cui la community codifica le app iOS, macOS, watchOS e tvOS. Quando Swift è diventato una piattaforma open source, ha aperto nuove possibilità per il linguaggio oltre alle app mobili e client-swift è diventato anche un linguaggio server! In questo tutorial imparerai cos'è Swift lato server e perché vorresti avere Swift sul back-end.
L'iniziativa Swift lato server è spinta da tre importanti progetti: Vapor di Qutheory, IBM Kizia e Perfect, con l'obiettivo di consentire agli sviluppatori di Swift di creare servizi back-end completi. Ciò, in sostanza, trasformerà tali sviluppatori in sviluppatori full-stack, annullando la necessità di affidarsi a Node o PHP o dando il controllo a una piattaforma BaaS come la Firebase di Google.
In questo articolo imparerai tutto sul lato server di Swift. Innanzitutto spiegherò come funziona Swift dal lato server, quindi ti mostrerò come iniziare con i framework Kitura, Vapor e Perfect.
Swift fu annunciato per la prima volta da Apple nel 2014 e divenne rapidamente uno dei linguaggi di programmazione in più rapida crescita. Swift attinge da molti dei migliori linguaggi contemporanei, come Python, permettendo eleganza e facilità d'uso. Libera gli ingegneri dalle catene tecniche di Objective-C, consentendo un lavoro più fluido e intuitivo.
Nel dicembre 2015, Apple ha fatto un altro annuncio monumentale e ha fatto il linguaggio Swift, insieme alle sue librerie di supporto, debugger e gestore pacchetti, un progetto open source sotto la licenza Apache 2.0, aprendo la piattaforma per il pubblico per creare richieste pull e contribuire. Il passaggio da Objective-C non ha solo allettato i molti sviluppatori Objective-C che contribuiscono all'App Store, ma ha reso più semplice per gli sviluppatori di tutte le competenze e gli sfondi entrare nell'ecosistema Apple con Swift.
Tuttavia, mentre gli strumenti di sviluppo di Apple hanno storicamente reso più facile agli sviluppatori la creazione di app visivamente accattivanti e coinvolgenti per l'App Store, un notevole collo di bottiglia è stato il fatto che i progetti richiedevano ancora sviluppatori back-end specializzati per creare complesse applicazioni basate sui dati. Pertanto, gli sviluppatori iOS e macOS avrebbero bisogno dell'assistenza di uno sviluppatore Python, PHP o Node per creare il proprio database di back-end o raccogliere le competenze stesse, con conseguente carico di lavoro notevolmente più pesante per completare gli obiettivi del progetto..
Anche se il back-end-as-a-service (BaaS) è venuto in soccorso degli sviluppatori iOS, con soluzioni back-end senza codice come Firebase di Google e il proprio CloudKit di Apple che allevia la complessità del back-end, molti team e progetti richiedono di più. È qui che entra in gioco Swift dal lato server, permettendoti di creare un server back-end multi-thread completo che è open source e configurabile all'infinito.
Lato server Swift consente di scegliere come ospitare il server back-end, sia con AWS, RackSpace, sia con i propri server fisici. Puoi anche scegliere come bilanciare il carico dei tuoi server (ad es. Tramite le popolari soluzioni server come NGINX) e come mantenere i tuoi dati in un database (siano soluzioni NoSQL come MongoDB, o database tradizionali come Postgres, MySQL o Oracle) . Non solo, ma non sei mai legato a una soluzione a un componente: puoi eseguire l'upgrade senza influire sull'intera base di codice dell'app.
Il punto è che optando per una soluzione Swift open source lato server come Vapor by Qutheory, IBM Kitura, o Perfect, si avvantaggiano di una vasta gamma di plugin che ti permettono di configurare il tuo back-end come preferisci fare uso delle abilità della tua squadra esistente in Swift per farlo.
Server-side Swift sembra certamente avvincente, ma quale framework è giusto per te? Successivamente diamo un'occhiata a ciascuno di essi, a partire da Kitura.
A partire da Kitura, hai una piattaforma che è stata inizialmente rilasciata a febbraio 2016 e che ha guadagnato importanza nello stesso anno al WWDC di Apple, rappresentando l'incursione di IBM nel supporto web server-side con Swift, che è stata quindi impostata per passare dalle mani di Apple all'open source.
In generale, Kitura si concentra sulla convenzione sulla configurazione: costruisce il tuo progetto iniziale con stub, prima di optare per i framework e le librerie specifici che stai cercando di costruire. Il meccanismo di autenticazione di Kitura è supportato dal proprio framework middleware Kitura-Credentials, che consente di scegliere tra un buffet di meccanismi di autenticazione, dal nome utente / password tradizionale all'accesso social-media e all'autenticazione federata, utilizzando OpenID che gestisce i token Web JSON (JWT ).
La soluzione ORM del database di Kitura è implementata da Kuery per offuscare le complessità di gestire direttamente SQL, supportando database relazionali comuni come MySQL, SQLite e PostgreSQL in modo nativo, nonché altre soluzioni di database, inclusi i database NoSQL, attraverso i vari altri plugin compatibili.
Kitura fornisce anche altri plugin utili per cose come HTML templating, usando plugin popolari come Stencil e Markdown. Provenendo da IBM, il framework lato server beneficia anche della connettività intimo con le API IBM Watson e fornisce supporto macOS nativo per l'integrazione diretta nella loro piattaforma cloud Bluemix. Questo fornisce un'opzione aggiuntiva a tua disposizione, insieme alle altre tradizionali opzioni di implementazione su server Linux / Unix e macOS.
Sebbene la piattaforma fornisca certamente un insieme unico di funzionalità, da Kuery alla possibilità di integrarsi con le varie librerie API IBM, non ha il peso della community di Vapor. Adottare Kitura richiede di apprezzare e abbracciare i propri modi non convenzionali di fare le cose, da come Kuery opera ai suoi meccanismi di autenticazione. Tuttavia, dato che è supportato da una grande azienda con un focus sull'azienda, ci sono alcune assicurazioni a prova di futuro incorporate.
Il modo più rapido per iniziare è utilizzare l'interfaccia a riga di comando (CLI) di Kitura, supportata sia su macOS che Linux. Usando la famosa utility di gestione dei pacchetti Homebrew, installa Kitura e Kitura CLI immettendo quanto segue:
$ brew tap ibm-swift / kitura $ brew install kitura
All'interno di una cartella vuota che utilizzerai come progetto, esegui quanto segue per inizializzare il tuo progetto:
$ kitura init
Quando ha finito di generare la tua applicazione scheletro, noterai un nuovo progetto chiamato HelloKitura.xcodeproject. Puoi saperne di più sulla generazione del progetto facendo riferimento alla documentazione ufficiale di Kitura. È possibile aprire il nuovo progetto generato in Xcode e modificare la classe dell'applicazione principale, Application.swift, per gestire tutte le chiamate alla radice del tuo server http: // localhost: 8080 / URL:
// Gestisce le richieste HTTP GET a "/" router.get ("/") richiesta, risposta, next in response.send ("Hello, World!") Next ()
Lo snippet di codice sopra risponde restituendo il classico Ciao mondo!. Prima di poter finalmente eseguire il progetto, modifica lo schema Xcode in modo che punti a HelloKitura (il tuo progetto attivo) e avvia il progetto premendo Comando-R. Mentre il tuo server è in esecuzione, in un browser di tua scelta, vai http: // localhost: 8080 e dovresti vedere il testo di Hello World nel tuo browser.
Controlla i seguenti link per maggiori informazioni su Kitura.
Rilasciato pochi mesi dopo Kitura, nel settembre 2016, Vapor di Qutheory è ampiamente considerato il più popolare in termini di dimensioni della community e numero di plug-in. È costruito sulla base del framework Apple Swift-nio, rendendolo un vero e proprio punto di forza. A differenza di Kitura e altre piattaforme, che non sono costruite semplicemente in Swift ma piuttosto su Node.js o altri parser intermedi, Vapor si disaccoppia da qualsiasi di queste dipendenze per fornire un parser Swift e fornire API chiare e leggibili.
Vapor fornisce supporto completo di database per fornitori SQL come MySQL e PostgreSQL, oltre a fornitori NoSQL come Redis e MongoDB, come Kitura. Mentre Kitura ha la sua soluzione ORM Kuery, Vapor sfrutta Fluent ORM per supportare i database che ho appena menzionato, rendendo relativamente facile estendere l'ORM ad altri fornitori di database di terze parti. Vapor si distingue dagli altri framework per supportare in modo nativo il servizio Push Notification di Apple, oltre a supportare SMTP per spingere le notifiche e-mail.
Mentre Kitura implementa il proprio framework di autenticazione, Vapor ha la libreria di autenticazione di Stormpath's Turnstile cotta in modo nativo. Come Kitura, la piattaforma supporta anche i modelli Moustache e Markdown, così come il suo linguaggio di linguaggio espressivo nativo Swift, Leaf. Vapor ha anche un proprio motore CLI come gli altri framework Swift lato server, con la possibilità di estendere gli argomenti della riga di comando dell'applicazione con le bandiere personalizzate.
Per iniziare con Vapor, si inizia installando Vapor Toolbox, che comprende tutte le dipendenze della libreria e il toolkit CLI. Installalo con Homebrew inserendo quanto segue nel terminale:
$ brew install vapor / tap / vapor
Al termine dell'installazione, è possibile confermare che Vapor è stato installato correttamente digitando vapore-aiuto
. Per creare un progetto, digita quanto segue, sostituendolo con il nome del tuo progetto:
$ vapore nuovo
Il motore Vapor creerà una struttura di cartelle simile alla seguente:
. ├── Pubblico ├── Fonti │ ├── App │ │ ├── Controllori │ │ ├── Modelli │ │ ├── boot.swift │ │ ├── configure.swift │ │ └── routes.swift │ └── Esegui │ └── main.swift ├── Test │ └── AppTests └── Package.swift
Per creare effettivamente un progetto Xcode, dovrai anche inserire esplicitamente il seguente comando, all'interno della cartella del progetto:
$ vapour xcode
Infine, per costruire ed eseguire il tuo progetto, seleziona Xcode da Correre schema e il dispositivo di destinazione dell'implementazione di Il mio Mac, e quindi premere il Correre pulsante come faresti per qualsiasi altro progetto Xcode. A condizione che il tuo progetto Xcode non incontri errori, dovresti vedere il seguente messaggio di conferma nel terminale:
Server che inizia su http: // localhost: 8080
Vai avanti e inserisci l'URL nel tuo browser preferito e dovresti vedere la tua applicazione in esecuzione.
Controlla i seguenti link per maggiori informazioni.
Infine, diamo un'occhiata a Perfect di PerfectlySoft, una piattaforma server-side ricca di funzionalità come Vapor e Kitura. Perfect include gli stessi campanelli e fischietti standard che potreste trovare sui fornitori precedenti, dai modelli con Moustache o Markdown alle reti con socket Web, nonché a Apple Push Notification e SMTP.
Come le altre piattaforme lato server, Perfect ha la sua implementazione ORM, la piattaforma StORM (Perfect StORM), che fornisce supporto nativo per MySQL, PostgreSQL e altri importanti database relazionali, nonché MongoDB, Redis e altre soluzioni NoSQL. Un'omissione notevole da Perfect è una CLI, ma il framework lo risolve con un'app macOS nativa.
Come Vapor, Perfect ha anche trasformato Turnstile nel suo meccanismo di autenticazione, esteso per interagire intimamente con StORM. Un'altra distinzione che questa soluzione ha rispetto agli altri è in molte delle librerie di utility native che supporta, incluso il proprio wrapper cURL e strumenti per lavorare con file e cartelle. La base di sviluppatori di Perfect è la seconda più grande, quasi alla pari con Vapor's, il che significa che hai una forte community per supportare questa piattaforma, insieme a un ricco set di risorse educative per darti sicurezza se la scegli.
Alzarsi e correre con Perfect è davvero semplice. In primo luogo, clonare il repository PerfectlySoft, inserendo quanto segue:
$ git clone https://github.com/PerfectlySoft/PerfectTemplate.git
Dalla cartella clonata, crea il progetto:
$ swift build
Infine, esegui il progetto, che eseguirà un server locale all'indirizzo 0.0.0.0:8181:
.costruire / debug / PerfectTemplate
Puoi anche eseguire il tuo progetto su Xcode generando prima un nuovo progetto, come segue:
$ swift pacchetto generate-xcodeproj
All'interno di Xcode, assicurati che il tuo obiettivo eseguibile sia puntato Il mio Mac, prima di costruire e gestire il progetto.
Controlla i seguenti link per ulteriori informazioni sulla struttura perfetta.
Il rilascio di Swift alla comunità open source ha stimolato le soluzioni Swift al di là delle app client, con i framework dei server back-end che diventano la prossima frontiera. Spinto da tre progetti di spicco: Vapor di Qutheory, IBM Kizia e Perfect-server-side Swift hanno permesso agli ingegneri iOS (e macOS) di diventare sviluppatori full-stack. Questo può annullare la dipendenza dai tecnici back-end Node.js, PHP o .NET. Server-side Swift offre inoltre ai team la possibilità di controllare il proprio back-end senza dover contare su soluzioni di back-end-as-a-service mobili come Firebase o CloudKit.
Server-side Swift non è per tutti: devi decidere quanto controllo hai bisogno per il tuo back-end, e se abbia senso per te lanciare il tuo. Inoltre, non ho provato a dirti quale soluzione Swift lato server è la migliore. Gli sviluppatori sono certamente l'imbarazzo della scelta, e tutti e tre forniscono una presa unica e matura e vale la pena sperimentare. Ti incoraggerei a giocare con ciascuno dei codici di esempio, a valutare la sintassi e ad interagire con le rispettive comunità per vedere quale soluzione ti si adatta meglio.