Swift: un sofisticato linguaggio lato server

Swift: un sofisticato linguaggio lato server

Da quando Apple ha originariamente conosciuto Swift come successore di Objective-C, ha cambiato il modo in cui i codici di rete delle applicazioni iOS, macOS, watchOS e tvOS.

Nel momento in cui Swift si è trasformato in uno stadio open source, ha aperto nuovi possibili risultati per il linguaggio al di là dell'applicazione mobile e lato client. Swift si è trasformato anche in un linguaggio lato server. In questo esercizio didattico, ti renderai conto di cosa sia Swift lato server e perché avresti bisogno di Swift sul tuo back-end.

L'attività di Swift lato server è spinta da tre importanti progetti che sono Vapor di Qutheory, Kitura di IBM e Perfect, con l'obiettivo di dare agli sviluppatori Swift la possibilità di creare amministrazioni back-end completamente sviluppate. Questo, fondamentalmente, cambierà tali ingegneri in sviluppatori full-stack, invalidando il requisito di dipendenza da Node o PHP o offrendo il controllo a uno stadio BaaS, ad esempio Firebase di Google.

Obiettivi di questo articolo

In questo articolo, parlerai di Swift lato server. Per prima cosa chiarirò come funziona Swift lato server, dopodiché ti mostrerò le migliori pratiche per iniziare con i sistemi Kitura, Vapor e Perfect.

Introduzione di Server Side Swift

Swift è stato annunciato per la prima volta da Apple nel 2014 e ha rapidamente sviluppato uno dei linguaggi di programmazione in più rapido sviluppo. Swift attinge da un gran numero dei migliori linguaggi contemporanei, ad esempio, Python, consentendo eleganza e facilità d'uso. Libera gli ingegneri dalle catene specialistiche di Objective-C, consentendo un lavoro sempre più liquido e istintivo.

Nel dicembre 2015, Apple ha fatto un'altra fantastica dichiarazione e ha reso il linguaggio Swift insieme alle sue librerie di supporto, debugger e gestore di pacchetti un progetto open source con licenza Apache 2.0, aprendo la piattaforma alle persone in generale per fare richieste pull e contribuire. L'allontanamento da Objective-C non ha solo tentato i numerosi sviluppatori Objective-C che contribuiscono all'App Store, ma ha reso più semplice per gli sviluppatori di tutte le competenze e le basi entrare nell'ecosistema Apple con Swift.

In ogni caso, mentre i dispositivi avanzati di Apple hanno reso in modo verificabile più facile per gli sviluppatori sviluppare app apparentemente convincenti e coinvolgenti per l'App Store, un collo di bottiglia importante è stato che i progetti richiedevano ancora sviluppatori back-end specializzati per sviluppare complesse applicazioni guidate dalle informazioni. Quindi gli sviluppatori iOS e macOS avrebbero bisogno di avvalersi dell'aiuto di sviluppatori Python, PHP o Node per creare il loro database di back-end o ottenere la capacità da soli, portando a un compito rimanente del tutto più pesante a portata di mano per completare i loro obiettivi di impresa.

Sebbene il back-end-as-a-service (BaaS) abbia agito come l'eroe degli sviluppatori iOS, con soluzioni di back-end senza codice, ad esempio Firebase di Google e lo speciale CloudKit di Apple che mitigano le complessità del back-end, numerosi gruppi e iniziative ne richiedono di più. È qui che entra in gioco Swift lato server, che ti consente di creare un server back-end multi-threaded a tutti gli effetti, open source e configurabile in modo interminabile.

Swift lato server ti dà la possibilità di scegliere come avere il tuo server back-end, indipendentemente dal fatto che si tratti di AWS, RackSpace o dei tuoi server fisici. Allo stesso modo puoi scegliere come bilanciare il carico dei tuoi server (ad es. Per mezzo di importanti soluzioni server, ad esempio NGINX) e come continuare le tue informazioni in un database (che si tratti di accordi NoSQL, ad esempio MongoDB, o database tradizionali, per esempio , Postgres, MySQL o Oracle). Questo, oltre a non essere mai attaccato a un arrangiamento di una parte, puoi passare a un altro senza influenzare l'intera base di codice dell'applicazione.

Il nocciolo della questione è che decidendo su un accordo Swift lato server open source, ad esempio Vapor di Qutheory, Kitura di IBM o Perfect, si sfrutta una vasta gamma di moduli che consentono di progettare il back-end solo il modo in cui ne hai bisogno, facendo in modo che l'utilizzo della gamma di abilità del tuo gruppo attuale in Swift sia tale.

Swift lato server sembra assolutamente convincente, tuttavia quale struttura è l'ideale per te? Successivamente indaghiamo tutti in questo modo, a cominciare da Kitura.

A cominciare da Kitura

A partire da Kitura, c'è una fase che è stata inizialmente scaricata nel febbraio 2016 e ha acquisito una qualità inconfondibile subito dopo al WWDC di Apple, parlando dell'invasione di IBM nel supportare il web lato server con Swift, che è stato poi impostato per passare dalle mani di Apple a open source.

Di regola, Kitura è incentrato sulla tradizione piuttosto che sulla configurazione. Costruisce il tuo progetto sottostante con stub, prima di selezionare i framework e le librerie espliciti che speri di costruire. Il processo di autenticazione di Kitura è sostenuto dal suo framework middleware Kitura-Credentials, eccezionalmente proprietario, che consente di esaminare un buffet di sistemi di convalida, dal nome utente / password convenzionale all'accesso alla rete online e alla verifica unificata, utilizzando OpenID che gestisce i token Web JSON (JWT) .

La disposizione ORM del database di Kitura è controllata da Kuery per confondere le complessità della gestione specifica di SQL, supportando database razionali di base, ad esempio MySQL, SQLite e PostgreSQL localmente, e in aggiunta altri arrangiamenti di database, inclusi database NoSQL, attraverso i diversi altri plugin.

Kitura fornisce inoltre altri preziosi plug-in per cose, ad esempio, modelli HTML, utilizzando plug-in ben noti, ad esempio Stencil e Markdown. Originario di IBM, il sistema lato server beneficia inoltre della connettività con le API IBM Watson e fornisce inoltre supporto macOS per il coordinamento diretto nella loro piattaforma cloud Bluemix. Ciò offre una scelta in più a tua disposizione, insieme alle altre alternative di distribuzione convenzionali trasversalmente su server Linux / Unix e macOS.

Mentre la piattaforma fornisce assolutamente uno straordinario set di funzionalità da Kuery alla capacità di incorporare con le diverse librerie API IBM. Non ha il potere di rete che ha Vapor. La ricezione di Kitura richiede il riconoscimento e la comprensione dei propri metodi non regolari per fare le cose, dal modo in cui Kuery funziona al suo meccanismo di autenticazione. In ogni caso, dato che è sponsorizzato da un'organizzazione espansiva con un'attenzione allo sforzo, ci sono alcune affermazioni di suggellamento futuro lavorate.

Installazione ed esecuzione di Kitura

Il metodo più rapido per iniziare è utilizzare l'interfaccia della riga di direzione (CLI) di Kitura, supportata sia su macOS che su Linux. Utilizzando la nota utility di gestione dei pacchetti Homebrew, installa Kitura e Kitura CLI inserendo quanto segue:

$ brew tap ibm-swift / kitura

$ brew installkitura

All'interno di un organizzatore vuoto che utilizzerai come impresa, esegui l'accompagnamento per instillare la tua impresa:

$ kitura init

Quando avrà finito di produrre la tua applicazione scheletro, vedrai un altro progetto chiamato HelloKitura.xcodeproject. Puoi approfondire la generazione del progetto facendo riferimento alla documentazione di Kitura. È possibile aprire il progetto creato di recente in Xcode e modificare la classe dell'applicazione essenziale, Application.swift , per gestire tutte le chiamate alla radice del server https: // localhost: 8080 / URL :

// Gestisci le richieste HTTP GET a "/"

router.get ("/") {request, response, next in

response.send ("Hello, World!")

Il prossimo()

}

Il pezzo di codice sopra reagisce ripristinando l'esemplare Hello, World! . Prima di poter finalmente eseguire il progetto, cambia il tuo schema Xcode in modo che punti a HelloKitura (il tuo progetto attivo) e inizia la tua impresa premendo Comando-R . Mentre il tuo server è in esecuzione, in un browser a tua scelta, vai su https: // localhost: 8080 e dovresti vedere il mondo hello nel tuo browser.

A cominciare da Vapor

Rilasciato un paio di mesi dopo il Kitura, nel settembre 2016, Vapor di Qutheory è generalmente considerato il più importante per quanto riguarda le dimensioni della comunità e il numero di moduli. È costruito sulla base della struttura Swift-nio di Apple, rendendolo un vero concentrato di esecuzione. Per niente come Kitura e le diverse fasi, che non sono fabbricate semplicemente in Swift ma invece su Node.js o altri parser di persona intermedia, Vapor si disaccoppia da qualsiasi dipendenza per fornire un parser Swift e fornire API chiare e coerenti.

Vapor fornisce un aiuto completo dei database ai fornitori di SQL, ad esempio, MySQL e PostgreSQL, e ai fornitori di NoSQL, ad esempio, Redis e MongoDB, come Kitura. Sebbene Kitura abbia le proprie soluzioni ORM Kuery, Vapor sfrutta Fluent ORM per supportare i database a cui ho appena fatto riferimento, rendendo moderatamente semplice estendere l'ORM ad altri fornitori di database di terze parti. Vapor si isola da framework alternativi supportando in modo nativo il servizio di notifica push di Apple e supportando anche SMTP per inviare notifiche e-mail.

Mentre Kitura attualizza il proprio framework di autenticazione, Vapor ha la libreria di autenticazione Turnstile di Stormpath integrata in modo nativo. Come Kitura, anche la piattaforma supporta i tentativi Moustache e Markdown, e in aggiunta al proprio linguaggio espressivo di template nativo di Swift, Vapor accompagna anche il proprio motore CLI come l'altro framework Swift lato server, con la capacità di ampliare il comando dell'applicazione - argomenti di riga con flag personalizzati.

Installazione ed esecuzione

Per iniziare con Vapor, inizi installando il kit di strumenti Vapor, che comprende tutte le dipendenze della libreria e il toolbox CLI. Installalo con Homebrew inserendo quanto segue nel terminale:

$ brew installvapor / tap / vapor

Quando l'installazione è terminata, puoi confermare che Vapor è stato installato con successo digitando vapor —help. 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

│ │ ├── Controller

│ │ ├── Modelli

│ │ ├── boot.swift

│ │ ├── configure.swift

│ │ └── rotte.swift

│ └── Corri

│ └── main.swift

├── Test

│ └── AppTest

└── Package.swift

Per creare effettivamente un progetto Xcode, dovrai allo stesso modo inserire esplicitamente il seguente comando, dalla cartella del progetto:

$ vapor xcode

Infine, per creare ed eseguire il tuo progetto, da Xcode seleziona lo schema Esegui e anche il dispositivo di destinazione dello sviluppo del mio Mac , quindi premi il pulsante Esegui come faresti per qualsiasi altro progetto Xcode. Dato che il tuo progetto Xcode non presenta errori, dovresti vedere il seguente messaggio di conferma nel terminale:

Server che si avvia su https: // localhost: 8080

Vai avanti e inserisci quell'URL in qualsiasi browser e dovresti vedere la tua applicazione in esecuzione.

A cominciare da Perfect

Infine, diamo un'occhiata a Perfect di PerfectlySoft, una piattaforma lato server ricca di funzionalità come Vapor e Kitura. Perfect incorpora campanelli e fischietti standard simili che avresti scoperto sui fornitori precedenti, dai modelli con Moustache o Markdown al networking con socket web, e in aggiunta Apple Push Notification e SMTP.

Come l'altra piattaforma 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, oltre a MongoDB, Redis e altre soluzioni NoSQL. Un'importante esclusione da Perfect è una CLI, ma il framework compensa questo con un'applicazione macOS nativa.

Come Vapor, Perfect ha inoltre integrato Turnstile per alimentare il suo meccanismo di autenticazione, esteso per interagire con StORM in modo più intimo. Un'altra qualifica che questa disposizione ha rispetto alle altre è in molte librerie di utilità native che supporta, incluso il loro wrapper cURL unico nel suo genere e inoltre strumenti per lavorare con file e cartelle. La base di sviluppatori di Perfect è la seconda più grande, quasi al passo con quella di Vapor, il che significa che hai una forte comunità per supportare questa piattaforma, insieme a un ricco set di risorse educative che ti danno la certezza nella remota possibilità che tu lo scelga.

Installazione ed esecuzione

Diventare operativi con Perfect è estremamente semplice. Inizialmente, clona il repository PerfectlySoft, inserendo quanto segue:

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

Dall'interno della cartella clonata, crea il progetto:

$ build rapida

Infine, esegui il progetto, che eseguirà un server locale all'indirizzo 0.0.0.0:8181

.build / debug / PerfectTemplate

Puoi anche eseguire il tuo progetto su Xcode creando prima un nuovo progetto, come segue:

$ pacchetto swift generate-xcodeproj

All'interno di Xcode, assicurati che la destinazione dell'eseguibile sia puntata sul mio Mac , prima di creare ed eseguire il progetto.

Conclusione

L'arrivo di Swift alla rete open source ha spinto a spingere le soluzioni Swift oltre le applicazioni client, con i framework dei server back-end che si sono trasformati nelle seguenti periferie. Spinto da tre importanti progetti: Vapor di Qutheory, Kitura di IBM e Perfect. Swift lato server ha consentito agli sviluppatori iOS (e macOS) di diventare sviluppatori full-stack. Ciò può annullare la dipendenza dagli sviluppatori back-end Node.js, PHP o .NET. Swift lato server consente inoltre ai gruppi di controllare il proprio back-end senza dover fare affidamento su una soluzione mobile back-end-as-a-server come Firebase o CloudKit.

Swift lato server non è per tutti, devi stabilire quanto controllo hai richiesto per il tuo back-end e se ha senso per te farlo da solo. Inoltre, non ho tentato di dirti quale soluzione Swift lato server è l'ideale. Gli sviluppatori sono indiscutibilmente rovinati per la decisione, e ognuno dei tre offre un approccio unico e maturo e vale la pena sperimentare. Vorrei esortarvi a giocare con ognuno dei codici di esempio, valutare la struttura linguistica e connettervi con le loro comunità particolari per vedere quale soluzione si adatta meglio a voi.