Swift im Backend mit Perfect

Swift ist aktuell eine der modernsten Sprachen der Welt und viele wünschen sich Swift auch ausserhalb von iOS und dem Mac nutzen zu können. Gerade eine moderne Sprache wie Swift sollte doch auch das Web erobern können.

Kyle Jessup erkannte diese Chance und baute heimlich im Keller an einer serverseitigen Variante von Swift, denn es liegt gerade zu auf der Hand seinen Code im Backend als auch im Frontend teilen zu können.

Perfect

Mit Perfect stellte Jessup am 20. November 2015 sein Projekt für Alle zur Verfügung. Dabei sparte er nicht der Mühe und liefert zum Start bereits passende Adapter für die Datenbanken MySQL und PostgreSQL mit aus. Ein Support für MongoDB ist laut Jessup bereits in Arbeit.

Perfect bietet neben einem eigenen Webserver auch ein FastCGI Adapter für Apache 2.4 an. Leider funktioniert Perfect noch nicht unter Linux und Server im produktiven Betrieb mit Mac OS X sind eher selten. Wir gehen persönlich davon aus dass Perfect dies auch nicht ändern wird. Sollte Apple jedoch seine Ankündigung wahr machen und Swift noch in diesem Jahr als Open Source veröffentlichen, so können wir davon ausgehen dass Perfect innerhalb kürzester Zeit seinen Weg auf Linux Umgebungen finden wird.

Swift Perfect Missing Piece

Funktionsweise

Damit Web-Requests verarbeitet werden können stellt Perfect ein eigenes Framework zur Verfügung welches Server- und Clientseitig genutzt werden kann. Der Perfect Server selbst führt die jeweilige kompilierte Web App aus und nimmt dabei die Requests des Webservers entgegen. Für die Ausgabe und Formatierung wird die Template Engine Mustache genutzt, welche bereits für viele andere Sprachen vorhanden ist. Das bevorzugte Datenformat für den Datenaustausch ist laut Jessup JSON oder XML. Die App muss vorab vom Entwickler kompiliert und deployed werden, eine Just-in-time-Kompilierung ist derzeit nicht möglich.

Swift Perfect Server Applikation Diagramm

Für die Entwicklung mit Perfect liefert Jessup Xcode Templates und Beispielprojekt aus, welche als Grundlage für eigene Projekte genutzt werden können. Teilweise schwanken hierbei recht stark die Qualität und auch die Techniken im Quellcode selbst, was darauf schließen lassen könnte dass der Entwickler bereits seit mehreren Swift Versionen an Perfect bastelt oder keine Zeit hatte sich ausgiebig mit Swift zu beschäftigen. So fällt einem aktuell ebenfalls stark auf dass moderne Syntaxergänzungen wie guard oder try-catch selten bis gar nicht zum Einsatz kommen.

Gerade Webservices sollten stabil und garantiert laufen, ausgiebige Benchmarks und Sicherheitsprüfungen von externen Entwicklern stehen jedoch noch aus. Bitte seid also vorsichtig in Produktiven Apps und Webservices!

Gemischte Gefühle

Swift perfect logoFür uns ist das Projekt nur der Start einer Reihe von Projekten rund um Serverseitige Integrationen. Bereits node.js hat in der Vergangenheit bewiesen dass es durchaus Potenzial und auch den Reiz nach neuen Sprachen für die Webentwicklung gibt. Gerade schwachtypisierte Sprachen wie JavaScript oder PHP bieten bereits seit Jahren und Jahrzehnten genügend Fläche für fehlerhaften Code, mit einer modernen und stark typisierten Sprache wie Swift könnten diese jetzt ernsthafte Konkurrenz bekommen.

Hierfür gibt es aber einige Vorraussetzungen die nicht nur eine breite Akzeptanz der Entwickler benötigt. Vielmehr bedarf es einigen technischen Ergänzungen, den willen von Webhostern Swift Serverseitig zu erlauben sowie einer Entwicklercommunity die bereit ist freiwillig Zeit zu Opfern.

Aus unserer Sicht benötigen Perfect oder andere Swift Server mindestens noch folgende Punkte

  • Ein sauberes Concurrency Modell
  • Einfache und typensichere De/Serialisierung von JSON
  • Just-in-time Kompilierung von Swift für einfacheres Deployment
  • Sinnvolle und leserliche Template Engine
  • Einfache und gut nutzbare Frameworks wie z.B. Zend Framework oder Cake PHP wie unter PHP

 

Fazit

Im Moment wird Perfect keine hohen Wellen schlagen. Der Einstieg scheint zwar einfach jedoch ist die Toolchain um wirklich Webseiten bauen zu können nicht vorhanden. Die Wahl der Template Engine ist Geschmacksache, Mustache selbst bietet im Gegensatz zu viele PHP Template Engines deutlich weniger Funktionsumfang. Ausserdem ist der Syntax bei Verschachtelungen zum Teil nur noch sehr schlecht lesbar. Da ungewiss ist ob Apple auch andere Frameworks für Linux Portieren wird ist es im Moment schwer einzuschätzen, ob die breite Masse an bereits vorhandenen Swift Frameworks für die Entwicklung von Web Apps zur Verfügung stehen wird. Zudem ist die in Perfect vorhandene De/Serialisierung von JSON typenunsicher gelöst. Ein Vorschlag für die Nutzung deutlich ausgereifterer Mapper wurde von uns bereits an den Entwickler weitergereicht.

Es wird auf Dauer fast zwingend nötig werden auch bereits auf dem System vorhandene Bibliotheken einzubinden. Gerade bekannte Librarys wie GD, mcrypt oder ImageMagick könnten einer Entwicklungsumgebung mit Swift für das Web einen saftigen Boost geben.

Wenn ihr bereits Erfahrungen mit Perfect gemacht habt oder es testet könnte ihr gerne euer Feedback als Kommentar hinterlassen oder uns per E-Mail schicken =)

Previous post

SwiftBlog.de Autoren und Mentorenprogramm

Next post

Swift ist Open Source

The Author

Stefan Mayer-Popp

Stefan Mayer-Popp

Stefan Mayer-Popp ist leidenschaftlicher Softwareentwickler, Fachbuchautor, Trainer und Berater aus dem Münchner Umland. Als passionierter IT- und Apple-Profi hat Mayer-Popp unzählige IT-Projekte in verschiedensten Branchen erfolgreich umsetzen und unterstützen können. Neben seiner Tätigkeit als Teamleiter bei CHECK24 teilt Mayer-Popp seine Erfahrungen auf IT-Veranstaltungen und propagiert Swift aktiv auf verschiedenen Meetups.

No Comment

Leave a reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.