Seit Apple Swift ursprünglich als Nachfolger von Objective-C kennengelernt hat, hat es die Art und Weise geändert, wie das Netzwerk iOS-, macOS-, watchOS- und tvOS-Anwendungen codiert.
Zu dem Zeitpunkt, als Swift zu einer Open-Source-Phase wurde, eröffnete es neue denkbare Ergebnisse für die Sprache, die über die mobile und clientseitige Anwendung hinausgehen. Swift wurde ebenfalls zu einer serverseitigen Sprache. In dieser Anleitung erfahren Sie, was serverseitiges Swift ist und warum Sie Swift in Ihrem Back-End benötigen.
Die serverseitige Swift-Aktivität wird von drei herausragenden Projekten vorangetrieben, nämlich Vapor by Qutheory, IBMs Kitura und Perfect, mit dem Ziel, Swift-Entwicklern die Möglichkeit zu geben, vollständig vollwertige Back-End-Administrationen zu erstellen. Dies wird solche Ingenieure im Grunde genommen zu Full-Stack-Entwicklern machen, wodurch die Anforderung der Abhängigkeit von Node oder PHP ungültig wird oder eine BaaS-Phase, beispielsweise die Firebase von Google, gesteuert wird.
Ziele dieses Artikels
In diesem Artikel werden Sie sich mit serverseitigem Swift befassen. Zuerst werde ich klären, wie serverseitiges Swift funktioniert, und danach werde ich Ihnen Best Practices demonstrieren, um mit den Systemen Kitura, Vapor und Perfect zu beginnen.
Einführung von Server Side Swift
Swift wurde erstmals 2014 von Apple angekündigt und entwickelte schnell eine der sich am schnellsten entwickelnden Programmiersprachen. Swift schöpft aus einer großen Anzahl der besten zeitgenössischen Sprachen, zum Beispiel Python, und ermöglicht so Eleganz und Benutzerfreundlichkeit. Es befreit Ingenieure von den speziellen Fesseln von Objective-C und ermöglicht zunehmend flüssiges und instinktives Arbeiten.
Im Dezember 2015 gab Apple eine weitere fantastische Erklärung ab und machte die Swift-Sprache zusammen mit den unterstützenden Bibliotheken, dem Debugger und dem Paketmanager zu einem Open-Source-Projekt unter der Apache 2.0-Lizenz. Damit wurde die Plattform für Benutzer im Allgemeinen geöffnet, um Pull-Anfragen zu stellen und Beiträge zu leisten. Die Abkehr von Objective-C hat nicht nur die zahlreichen Objective-C-Entwickler, die zum App Store beitragen, in Versuchung geführt, sondern auch Entwicklern aller Fähigkeiten und Grundlagen den Einstieg in das Apple-Ökosystem mit Swift erleichtert.
Während Apples Weiterentwicklungsgeräte es Entwicklern nachweislich erleichtert haben, nach außen überzeugende und ansprechende Apps für den App Store zu entwickeln, bestand ein großer Engpass darin, dass für Projekte immer noch spezialisierte Back-End-Entwickler erforderlich waren, um komplexe informationsgesteuerte Anwendungen zu entwickeln. Daher müssten iOS- und MacOS-Entwickler entweder die Hilfe eines Python-, PHP- oder Node-Entwicklers in Anspruch nehmen, um ihre Back-End-Datenbank zu erstellen, oder die Fähigkeit selbst erwerben, was zu einer insgesamt schwereren verbleibenden Aufgabe führt, um ihre Unternehmensziele zu erreichen.
Obwohl das Back-End-as-a-Service (BaaS) der Held der iOS-Entwickler ist, mit Back-End-Lösungen ohne Code, beispielsweise Googles Firebase und Apples speziellem CloudKit, die die Komplexität des Back-End verringern. Zahlreiche Gruppen und Unternehmen fordern mehr. Hier kommt der serverseitige Swift ins Spiel, mit dem Sie einen vollwertigen Multithread-Back-End-Server erstellen können, der Open Source und endlos konfigurierbar ist.
Mit serverseitigem Swift können Sie auswählen, wie Sie über Ihren Back-End-Server verfügen, unabhängig davon, ob Sie AWS, RackSpace oder Ihre eigenen physischen Server verwenden. Sie können auch auswählen, wie Sie Ihre Server ausgleichen möchten (z. B. mithilfe bekannter Serverlösungen, z. B. NGINX) und wie Sie Ihre Informationen in einer Datenbank fortsetzen möchten (z. B. NoSQL-Vereinbarungen, z. B. MongoDB oder herkömmliche Datenbanken) , Postgres, MySQL oder Oracle). Da Sie nie an eine Teileanordnung gebunden sind, können Sie wechseln, ohne Ihre gesamte Anwendungscodebasis zu beeinflussen.
Tatsache ist, dass Sie durch die Entscheidung für eine Open-Source-Swift-Anordnung auf der Serverseite, z. B. Vapor by Qutheory, Kitura von IBM oder Perfect, eine Vielzahl von Modulen nutzen, mit denen Sie nur das Back-End entwerfen können Art und Weise, wie Sie es benötigen, und nutzen Sie die Fähigkeiten Ihrer aktuellen Gruppe in Swift, um dies zu tun.
Server-seitiges Swift klingt absolut überzeugend, aber welche Struktur ist für Sie ideal? Als nächstes untersuchen wir jeden auf diese Weise, beginnend mit Kitura.
Beginnend mit Kitura
Beginnend mit Kitura haben Sie eine Phase, die zunächst im Februar 2016 entlassen wurde und bald darauf auf der WWDC von Apple unverkennbare Qualität erlangte. Dies spricht für die Invasion von IBM in die Unterstützung des serverseitigen Webs mit Swift, das dann von Apples Händen auf Apple umgestellt werden sollte Open Source.
Kitura konzentriert sich in der Regel auf Tradition und Konfiguration. Es erstellt Ihr zugrunde liegendes Projekt mit Stubs, bevor Sie die expliziten Frameworks und Bibliotheken auswählen, die Sie erstellen möchten. Der Authentifizierungsprozess von Kitura wird durch das außergewöhnlich eigene Kitura-Credentials-Middleware-Framework unterstützt, mit dem Sie mithilfe von OpenID, das JSON-Web-Tokens (JWT) verarbeitet, ein Buffet mit Validierungssystemen vom herkömmlichen Benutzernamen / Kennwort über die Online-Netzwerkanmeldung bis hin zur einheitlichen Überprüfung durchsuchen können. .
Kituras Datenbank-ORM-Anordnung wird von Kuery gesteuert, um die Komplexität der spezifischen Verwaltung von SQL zu verwirren und grundlegende rationale Datenbanken wie MySQL, SQLite und PostgreSQL lokal sowie andere Datenbankanordnungen, einschließlich NoSQL-Datenbanken, über die verschiedenen anderen Plugins zu unterstützen.
Kitura bietet darüber hinaus weitere wertvolle Plugins für Dinge wie HTML-Vorlagen, wobei bekannte Plugins wie Stencil und Markdown verwendet werden. Das von IBM stammende serverseitige System profitiert zusätzlich von der Konnektivität mit IBM Watson-APIs und bietet zusätzlich MacOS-Unterstützung für die einfache Koordination in die Bluemix-Cloud-Plattform. Dies bietet Ihnen eine zusätzliche Auswahl, zusammen mit Ihren anderen herkömmlichen Bereitstellungsalternativen über Linux / Unix- und MacOS-Server hinweg.
Während die Plattform absolut eine außergewöhnliche Reihe von Funktionen von Kuery bis hin zur Fähigkeit zur Integration in die verschiedenen IBM API-Bibliotheken bietet. Es hat nicht die Netzwerkstärke, die Vapor hat. Um Kitura zu erhalten, müssen die eigenen, nicht regulären Methoden zur Erledigung von Aufgaben anerkannt und verstanden werden, von der Funktionsweise von Kuery bis zum Authentifizierungsmechanismus. In jedem Fall gibt es einige zukunftsweisende Affirmationen, da es von einer expansiven Organisation gesponsert wird, die sich auf das Unternehmen konzentriert.
Kitura installieren und ausführen
Die schnellste Methode ist die Verwendung der Kitura Direction Line Interface (CLI), die sowohl unter MacOS als auch unter Linux unterstützt wird. Installieren Sie Kitura und Kitura CLI mithilfe des bekannten Paketverwaltungsdienstprogramms Homebrew, indem Sie Folgendes eingeben:
$ Brew Tap Ibm-Swift / Kitura $ Brew Installkitura |
Führen Sie in einem nicht ausgefüllten Organizer, den Sie als Ihr Unternehmen verwenden, die folgenden Schritte aus, um Ihr Unternehmen zu initiieren:
$ kitura init
An dem Punkt, an dem die Erstellung Ihrer Skeleton-Anwendung abgeschlossen ist, sehen Sie ein weiteres Projekt namens HelloKitura.xcodeproject. Weitere Informationen zur Projektgenerierung finden Sie in der Dokumentation von Kitura. Sie können das kürzlich erstellte Projekt in Xcode öffnen und die wesentliche Anwendungsklasse Application.swift ändern, um alle Aufrufe des Stammverzeichnisses Ihres Servers zu verarbeiten : https: // localhost: 8080 / URL :
// HTTP-GET-Anforderungen an "/" verarbeiten
router.get ("/") {Anfrage, Antwort, weiter in
response.send ("Hallo Welt!")
Nächster()
}}
Das obige Code-Stück reagiert mit der Wiederherstellung des beispielhaften Hello, World! . Bevor Sie das Projekt endgültig ausführen können, ändern Sie Ihr Xcode-Schema so, dass es auf HelloKitura (Ihr aktives Projekt) verweist, und beginnen Sie mit Ihrem Vorhaben, indem Sie Befehlstaste -R drücken. Während Ihr Server ausgeführt wird, gehen Sie in einem Browser Ihrer Wahl zu https: // localhost: 8080 und Sie sollten die Hallo-Welt in Ihrem Browser sehen.
Beginnend mit Dampf
Vapor by Qutheory wurde einige Monate nach der Kitura im September 2016 veröffentlicht und gilt allgemein als die bekannteste in Bezug auf Community-Größe und Anzahl der Module. Es basiert auf Apples Swift-nio-Rahmenwerk und ist damit ein echtes Kraftpaket für die Ausführung. Vapor entkoppelt sich überhaupt nicht wie Kitura und verschiedene Stufen, die nicht einfach in Swift, sondern auf Node.js oder anderen Parsern der mittleren Person hergestellt werden, und entkoppelt sich von jeder dieser Abhängigkeiten, um einen Swift-Parser bereitzustellen und klare und kohärente APIs bereitzustellen.
Vapor bietet SQL-Anbietern, z. B. MySQL und PostgreSQL, und NoSQL-Anbietern, z. B. Redis und MongoDB, als Kitura ausführliche Hilfe zu Datenbanken. Obwohl Kitura über eigene Kuery ORM-Lösungen verfügt, nutzt Vapor Fluent ORM, um die Datenbanken zu unterstützen, auf die ich gerade verwiesen habe, und macht es mäßig einfach, das ORM auf andere Datenbankanbieter von Drittanbietern auszudehnen. Vapor isoliert sich von alternativen Frameworks, indem es den Push-Benachrichtigungsdienst von Apple nativ unterstützt und SMTP zum Senden von E-Mail-Benachrichtigungen unterstützt.
Während Kitura sein eigenes Authentifizierungsframework aktualisiert, hat Vapor die Authentifizierungsbibliothek Turnstile von Stormpath nativ eingebrannt. Wie Kitura unterstützt auch die Plattform die Versuchungen "Moustache" und "Markdown". Zusätzlich zu ihrer eigenen Swift-nativen ausdrucksstarken Template-Sprache begleitet Vapor wie das andere serverseitige Swift-Framework seinen eigenen CLI-Motor mit der Fähigkeit, den Anwendungsbefehl zu erweitern -Linienargumente mit benutzerdefinierten Flags.
Installieren und Ausführen
Zunächst installieren Sie das Vapor-Toolkit, das alle Bibliotheksabhängigkeiten und die CLI-Toolbox enthält. Installieren Sie es mit Homebrew, indem Sie Folgendes in das Terminal eingeben:
$ brauen Installationsdampf / Wasserhahn / Dampf
Nach Abschluss der Installation können Sie bestätigen, dass Vapor erfolgreich installiert wurde, indem Sieapor -help eingeben. Geben Sie zum Erstellen eines Projekts Folgendes ein und ersetzen Sie es durch Ihren eigenen Projektnamen:
$ dampfen neu
Die Dampfmaschine erstellt eine Ordnerstruktur, die der folgenden ähnelt:
├── Öffentlich
├── Quellen
│ ├ App
│ │ ├ Controller
│ │ ├ Modelle
│ │ ├ boot.swift
│ │ ├ configure.swift
│ │ └ Routen.swift
│ └ Laufen
│ └ main.swift
├── Tests
│ └ AppTests
└── Package.swift
Um ein Xcode-Projekt tatsächlich zu erstellen, müssen Sie ebenfalls explizit den folgenden Befehl aus dem Projektordner eingeben:
$ dampfer xcode
Um Ihr Projekt zu erstellen und auszuführen, wählen Sie in Xcode das Ausführungsschema und auch das Entwicklungszielgerät von My Mac aus und klicken Sie anschließend wie bei jedem anderen Xcode-Projekt auf die Schaltfläche Ausführen. Da in Ihrem Xcode-Projekt keine Fehler auftreten, sollte im Terminal die folgende Bestätigungsmeldung angezeigt werden:
Server startet unter https: // localhost: 8080
Geben Sie diese URL in einen beliebigen Browser ein, und Ihre Anwendung sollte ausgeführt werden.
Mit Perfekt beginnen
Schließlich werfen wir einen Blick auf Perfect by PerfectlySoft, eine funktionsreiche serverseitige Plattform wie Vapor und Kitura. Perfect enthält ähnliche Standard-Schnickschnack, die Sie bei früheren Anbietern entdecken würden, von Vorlagen mit Moustache oder Markdown über das Networking mit Web-Sockets bis hin zu Apple Push Notification und SMTP.
Wie die andere serverseitige Plattform verfügt Perfect über eine eigene ORM-Implementierung, die StORM-Plattform (Perfect StORM), die native Unterstützung für MySQL, PostgreSQL und andere bekannte relationale Datenbanken sowie MongoDB, Redis und andere NoSQL-Lösungen bietet. Ein prominenter Ausschluss von Perfect ist eine CLI, aber das Framework macht dies mit einer nativen macOS-Anwendung wieder wett.
Wie Vapor hat auch Perfect das Drehkreuz eingebaut, um seinen Authentifizierungsmechanismus zu unterstützen, der erweitert wurde, um eine engere Interaktion mit StORM zu ermöglichen. Eine weitere Qualifikation, die diese Anordnung gegenüber den anderen hat, besteht in einer beträchtlichen Anzahl der von ihr unterstützten nativen Dienstprogrammbibliotheken, einschließlich ihres eigenen einzigartigen cURL-Wrappers und zusätzlicher Tools für die Arbeit mit Dateien und Ordnern. Die Entwicklerbasis von Perfect ist die zweitgrößte, die fast mit der von Vapor Schritt hält. Dies bedeutet, dass Sie eine starke Community haben, die diese Plattform unterstützt, und dass eine Vielzahl von Bildungsressourcen Ihnen die Gewissheit gibt, dass Sie sie nicht auswählen können.
Installieren und Ausführen
Die Inbetriebnahme von Perfect ist äußerst unkompliziert. Klonen Sie zunächst das PerfectlySoft-Repo, indem Sie Folgendes eingeben:
$ git-Klon https://github.com/PerfectlySoft/PerfectTemplate.git
Erstellen Sie aus dem geklonten Ordner heraus das Projekt:
$ schnell bauen
Führen Sie abschließend das Projekt aus, auf dem ein lokaler Server unter der Adresse 0.0.0.0:8181 ausgeführt wird
.build / debug / PerfectTemplate
Sie können Ihr Projekt auch unter Xcode ausführen, indem Sie zunächst ein neues Projekt erstellen:
$ swift package generate-xcodeproj
Stellen Sie in Xcode sicher, dass Ihr ausführbares Ziel auf Mein Mac zeigt , bevor Sie das Projekt erstellen und ausführen.
Fazit
Die Ankunft von Swift im Open-Source-Netzwerk hat einen Schub für Swift-Lösungen über Client-Anwendungen hinaus ausgelöst, wobei Back-End-Server-Frameworks in die folgenden Außenbezirke übergehen. Vorangetrieben von drei bedeutenden Projekten - Vapor von Qutheory, Kitura von IBM und Perfect. Serverseitig hat Swift iOS- (und MacOS-) Entwickler befähigt, Full-Stack-Entwickler zu werden. Dies kann die Abhängigkeit von Node.js-, PHP- oder .NET-Backend-Entwicklern aufheben. Mit serverseitigem Swift können Gruppen außerdem ihr Back-End steuern, ohne sich auf mobile Back-End-as-a-Server-Lösungen wie Firebase oder CloudKit verlassen zu müssen.
Server-seitiges Swift ist nicht jedermanns Sache. Sie müssen sich darauf einigen, wie viel Kontrolle Sie für Ihr Back-End benötigen und ob es für Sie sinnvoll ist, Ihr eigenes zu rollen. Außerdem habe ich nicht versucht, Ihnen zu sagen, welche serverseitige Swift-Lösung ideal ist. Entwickler sind zweifellos für die Entscheidung ruiniert, und jeder der drei gibt eine einzigartige und ausgereifte Einstellung und es lohnt sich, damit zu experimentieren. Ich möchte Sie dringend bitten, mit jedem der Beispielcodes herumzuspielen, die Sprachstruktur zu bewerten und sich mit den jeweiligen Communities zu verbinden, um herauszufinden, welche Lösung am besten zu Ihnen passt.