Στοιχεία αναφοράς για τα κορυφαία πλαίσια πλαισίου διακομιστή Swift έναντι Node.js

Επεξεργασία 7ης Οκτωβρίου: Έλεγχος παρακολούθησης μου: Τα κριτήρια αναφοράς για το Linux (Ubuntu)

Εισαγωγή

Πρόσφατα δούλευα στο Server-Side Swift και μου ρωτήθηκε:

"Μπορεί το Swift Server να κερδίσει το Node.js;"

Το Swift ως πρωταρχική γλώσσα για όλα, συμπεριλαμβανομένου του διακομιστή, είναι ενδιαφέρουσα από τότε που ήταν για πρώτη φορά ανοιχτή και μεταφέρθηκε στο Linux. Πολλοί από εσάς είναι ασφαλώς τόσο περίεργοι όσο είμαι, γι 'αυτό είμαι πολύ ευτυχής που μοιράζομαι εδώ τα αποτελέσματα της μελέτης μου.

Τα κορυφαία πλαίσια πλαισίου διακομιστή Swift

Κατά τη στιγμή της σύνταξης, τα κορυφαία πλαίσια πλαισίου Server-Side Swift (που παρατίθενται κατά σειρά των αστεριών στο GitHub) είναι:

  • Τέλεια 7,956
  • Ατμός ️ 5.183
  • Kitura ️ 4.017
  • Zewo ️1,186

Οργάνωση αυτής της δημοσίευσης

Το έγγραφο αυτό παρουσιάζεται με τον ακόλουθο τρόπο:

  • Αυτή η γρήγορη εισαγωγή
  • Σύνοψη αποτελεσμάτων
  • Μεθοδολογία
  • Λεπτομερή αποτελέσματα
  • Συμπεράσματα και τελικές σημειώσεις

Σύνοψη αποτελεσμάτων

Ακολουθεί μια σύντομη περίληψη των κύριων σημείων αναφοράς και θα το πω εδώ:

Ανεξάρτητα από τις ατομικές βαθμολογίες, όλα αυτά τα πλαίσια πραγματοποιήθηκαν απίστευτα καλά, το Swift νίκησε σταθερά το Node.js και ήταν πολύ διασκεδαστικό να συνεργαστεί.
Αυτή η εικόνα ενημερώθηκε την 1η Σεπτεμβρίου 2016 με διόρθωση

Μεθοδολογία & Σημειώσεις

Γιατί να χρησιμοποιήσω Blogs & JSON;

Πιο απλά, τα blogs είναι κάτι παραπάνω από την επιστροφή "Hello, world!", Και το JSON είναι μια πολύ συνηθισμένη περίπτωση χρήσης. Τα καλά σημεία αναφοράς χρειάζονται ένα παρόμοιο φορτίο σε κάθε πλαίσιο, και έπρεπε να είναι λίγο περισσότερο φορτίο που εκτυπώνει δύο λέξεις στην οθόνη.

Κρατώντας τα ίδια πράγματα

Ένα από τα σημαντικότερα θέματα που προσπάθησα να επιμείνω ήταν να διατηρεί όλα τα blogs όσο το δυνατόν ομοιόμορφα το ένα με το άλλο, αναπτύσσοντας παράλληλα το στυλ και τη σύνταξη κάθε πλαισίου. Πολλές από τις δομές, όπως η δημιουργία περιεχομένου, επαναλαμβάνονται κατά γράμμα, έτσι ώστε κάθε πλαίσιο να έχει τα ίδια μοντέλα δεδομένων με τα οποία συνεργάζεται, αλλά οι πτυχές όπως η δρομολόγηση διευθύνσεων URL είναι μερικές φορές εντελώς διαφορετικές ώστε να ταιριάζουν με τη σύνταξη και το στυλ κάθε πλαισίου.

Λεπτές διαφορές

Υπάρχουν ορισμένες λεπτές διαφορές που πρέπει να σημειωθούν μεταξύ των πλατφόρμων Swift από την πλευρά του διακομιστή.

  • Τόσο η Kitura όσο και η Zewo δημιουργούν προβλήματα αν υπάρχουν διαστήματα στις απόλυτες διαδρομές των αρχείων τους. Το Xcode έχει επίσης προβλήματα δημιουργίας χώρων σε απόλυτες διαδρομές αρχείων σε οποιοδήποτε πλαίσιο.
  • Το Zewo χρησιμοποιεί το στιγμιότυπο 05-09-a Swift, το οποίο σημαίνει ότι έχει πρόβλημα στην κατασκευή του σε κατάσταση απελευθέρωσης και πρέπει να εκτελεστεί σε λειτουργία εντοπισμού σφαλμάτων. Όλες οι δοκιμές Zewo πραγματοποιήθηκαν με την κατασκευή του Zewo και λειτουργία σε λειτουργία εντοπισμού σφαλμάτων (χωρίς βελτιστοποιήσεις απελευθέρωσης) για το λόγο αυτό.
  • Ο στατικός χειρισμός αρχείων είναι ένα σημείο συζήτησης μεταξύ των πλατφόρμων Swift από την πλευρά του διακομιστή. Οι Vapor και Zewo προτείνουν να χρησιμοποιήσετε το Nginx ως διακομιστή μεσολάβησης για το στατικό χειρισμό αρχείων και στη συνέχεια να τοποθετήσετε το πλαίσιο πίσω από αυτό ως την ισχύ επεξεργασίας για το backend. Perfect προτείνει τη χρήση του ενσωματωμένου χειριστή τους και δεν έχω δει κανένα σχόλιο για την IBM σχετικά με τις δικές τους απόψεις σχετικά με το θέμα. Δεδομένου ότι αυτή η μελέτη δεν αφορούσε πόσο καλά λειτουργούν τα πλαίσια με εφαρμογές διακομιστή όπως το Nginx, ο στατικός χειρισμός αρχείων χρησιμοποιήθηκε εγγενώς με κάθε πλαίσιο. Ίσως να είστε σε θέση να επιτύχετε καλύτερη απόδοση τόσο στο Vapor όσο και στο Zewo αν επιλέξετε να το χρησιμοποιήσετε. Αυτός είναι επίσης ένας δευτερεύων λόγος που συμπεριέλαβα τη δοκιμή JSON.
  • [Προστέθηκε 1 Σεπτεμβρίου με ενημερωμένα αποτελέσματα] Το Zewo είναι μια ενιαία εφαρμογή με σπείρωμα. Μπορείτε να αποκτήσετε επιπλέον απόδοσης εκτελώντας μια εμφάνιση της εφαρμογής ανά διαθέσιμη CPU, καθώς ακολουθούν ένα μοντέλο ταυτόχρονης και όχι πολλαπλών νημάτων. Για τους σκοπούς αυτής της μελέτης, εκτελέστηκε μόνο μία περίπτωση κάθε εφαρμογής.
  • Εργαλειομηχανές. Κάθε πλαίσιο δημιουργεί μια διαφορετική εργαλειοθήκη ανάπτυξης στιγμιότυπων από την Apple. Τη στιγμή της τελικής δοκιμής ήταν / ήταν:
     
    - ΑΝΑΠΤΥΞΗ-SNAPSHOT-2016-08-24-a για Perfect
    - ΑΝΑΠΤΥΞΗ-SNAPSHOT-2016-07-25-a για Vapor & Kitura
    - ΑΝΑΠΤΥΞΗ-SNAPSHOT-2016-05-09-α για τη Zewo
  • Ο ατμός έχει μια ειδική σύνταξη για την εκτέλεση απελευθερώσεων. Εάν εκτελέσετε απλώς το δυαδικό, θα πάρετε κάποια επιπλέον καταγραφή κονσόλας που προορίζεται να βοηθήσει με τη διαδικασία ανάπτυξης και debugging. Αυτό έχει λίγο πάνω από το κεφάλι. Για να εκτελέσετε το Vapor στη λειτουργία απελευθέρωσης πρέπει να προσθέσετε
- env ​​= παραγωγή

στο εκτελέσιμο αρχείο. δηλ.

.build / release / App - env ​​= παραγωγή
  • [Προστέθηκε 1 Σεπτεμβρίου με ενημερωμένα αποτελέσματα] Όταν εργάζεστε με το Zewo, παρόλο που δεν μπορείτε να δημιουργήσετε με γρήγορη λειτουργία απελευθέρωσης στη σειρά εργαλείων 05-09, μπορείτε να προσθέσετε ορισμένες βελτιστοποιήσεις λειτουργίας απελευθέρωσης διαβιβάζοντας αυτά τα επιχειρήματα:
γρήγορη δημιουργία -Xswiftc -O
  • Το Node.js / Express δεν δημιουργεί ούτε διαφοροποιεί την απόσβεση / απελευθέρωση
  • Στατικό χειρισμό αρχείων περιλαμβάνεται στο προεπιλεγμένο μεσαίο λογισμικό της Vapor. Αν δεν χρησιμοποιείτε στατικά αρχεία και θέλετε να βελτιστοποιήσετε την ταχύτητα, πρέπει να συμπεριλάβετε (όπως έκανα στο VaporJSON):
drop.middleware = []

Γιατί Node.js / Express;

Αποφάσισα να συμπεριλάβω μια παραλλαγή του blog χρησιμοποιώντας το πλαίσιο Express στο Node.js. Αυτή είναι μια καλή σύγκριση επειδή έχει μια πολύ παρόμοια σύνταξη με το Server-Side Swift και χρησιμοποιείται ευρέως. Βοηθά στην καθιέρωση μιας καλής γραμμής βάσης για να δείξει πόσο εντυπωσιακό μπορεί να είναι το Swift.

Ανάπτυξη των Blogs

Κάποια στιγμή άρχισα να το αποκαλώ "κυνηγώντας τη σφαίρα". Τα τρέχοντα πλαίσια Server-Side Swift βρίσκονται υπό πολύ ενεργή ανάπτυξη, όπως το Swift 3, και το καθένα έχει έναν τόνο αλλαγών από τις προηγούμενες εκδόσεις του. Αυτό ενισχύθηκε από τις συχνές κυκλοφορίες από όλα τα Server-Side Swift Frameworks, καθώς και από την ομάδα Swift της Apple. Καμία από αυτές δεν ήταν ιδιαίτερα πλήρης στην τεκμηρίωσή τους σε αυτό το σημείο, γι 'αυτό είμαι πολύ ευγνώμων στα μέλη των ομάδων πλαισίων και της κοινότητας Server-Side Swift για τις συνεισφορές τους. Είμαι επίσης ευγνώμων για τη βοήθεια που μου έδωσαν αμέτρητα μέλη της κοινότητας και ομάδες πλαισίων. Ήταν ένας τόνος διασκέδασης, και θα το έκανα ξανά χωρίς να σκέφτομαι.

Ως πλαϊνό σημείωμα, παρότι η άδεια χρήσης δεν απαιτείτο από την άδεια, θεωρώ ότι είναι ωραίο να σημειώσω ότι όλες οι τυχαίες εικόνες χωρίς δικαιώματα που περιλαμβάνονται στις πηγές προέρχονται από την Pixbay και επιλέχτηκαν τυχαία από εμένα. Πηγές όπως αυτό κάνουν τα έργα επίδειξης πολύ πιο εύκολο.

Φιλοξενία & Περιβάλλον

Για να ελαχιστοποιηθούν τυχόν διαφορές στο περιβάλλον, πήρα ένα Mac Mini 2012 και μου έδωσε μια καθαρή εγκατάσταση του El Capitan (10.11.6). Μετά από αυτό, κατέβαλα και εγκατέστησα το Xcode 8 beta 6 και έβαλα τα εργαλεία της γραμμής εντολών στο Xcode 8. Από εκεί εγκατέστησα το swiftenv, εγκατέστησα τα απαραίτητα στιγμιότυπα, κλωνοποίησα τα repos και χτίζω καθαρά κάθε ένα από τα blogs, δυνατόν. Ποτέ δεν έτρεξα περισσότερες από μία μία φορά, και έκαστος σταμάτησε και επανεκκινήθηκε μεταξύ των δοκιμών. Οι προδιαγραφές server δοκιμών είναι:

Για την ανάπτυξη, χρησιμοποιώ ένα rMBP 2015. Πραγματοποίησα εδώ τις δοκιμές χρόνου κατασκευής, καθώς αυτή είναι η μηχανή μου για την ανάπτυξη πραγματικού βίου και έδειξε την πιο λογική. Χρησιμοποίησα wrk για να βρω τα σημεία αναφοράς, και το έκανα πάνω από μια γέφυρα κεραυνό χρησιμοποιώντας ένα καλώδιο κεραυνό 2 μεταξύ των μηχανών. Χρησιμοποιώντας μια γέφυρα κεραυνός βεβαιωθείτε ότι έχετε ένα απίστευτο εύρος ζώνης και ότι δεν συγκρίνετε τους περιορισμούς του δρομολογητή σας, αντί για το καθήκον. Είναι επίσης πιο αξιόπιστο να χρησιμοποιείτε τα ιστολόγια σε ένα μηχάνημα και να χρησιμοποιείτε ένα ξεχωριστό και πιο ισχυρό μηχάνημα για να δημιουργείτε το φορτίο, εξασφαλίζοντας ότι είστε σε θέση να υπερκεράσετε το διακομιστή, ώστε να μπορείτε να είστε βέβαιοι ότι αυτό δεν αποτελεί περιορισμό. Αυτό σας δίνει επίσης ένα συνεκτικό περιβάλλον δοκιμών, οπότε μπορώ να πω ότι κάθε ιστολόγιο εκτελέστηκε με το ίδιο υλικό και υπό τις ίδιες συνθήκες. Για τους περίεργους, οι προδιαγραφές της μηχανής μου είναι:

Σημειώσεις συγκριτικής αξιολόγησης

Για τη συγκριτική αξιολόγηση, αποφάσισα να χρησιμοποιήσω μια δοκιμασία δέκα λεπτών με τέσσερις κλωστές, καθεμία από τις οποίες έφερε 20 συνδέσεις. Τέσσερα δευτερόλεπτα δεν είναι δοκιμή. Δέκα λεπτά είναι ένα λογικό χρονικό πλαίσιο για να πάρετε πολλά δεδομένα, και τρέξιμο 20 συνδέσεις σε τέσσερις κλωστές είναι ένα βαρύ φορτίο για τα blogs, αλλά όχι ένα φορτίο θραύσης.

Κωδικός πηγής

Εάν θέλετε να διερευνήσετε τον πηγαίο κώδικα για τα έργα ή να κάνετε κάποια από τις δικές σας δοκιμές, ενοποίησα τον κωδικό που χρησιμοποιήθηκε για τον έλεγχο σε ένα αποθετήριο, που βρέθηκε στο:

https://github.com/rymcol/Server-Side-Swift-Benchmarking

Λεπτομερή αποτελέσματα

Δημιουργία χρόνου

Νόμιζα ότι θα ήταν διασκεδαστικό να ρίξουμε μια ματιά στους χρόνους κατασκευής. Ο χρόνος κατασκευής μπορεί να διαδραματίσει σημαντικό ρόλο στην καθημερινή ανάπτυξη και παρόλο που έχει ελάχιστη σχέση με την απόδοση ενός πλαισίου, σκέφτηκα ότι θα ήταν διασκεδαστικό να διερευνήσουμε πραγματικούς αριθμούς εναντίον του πόσο αισθάνθηκαν τα πράγματα ενώ περίμενα.

Τι τρέχει

Για κάθε πλαίσιο,

γρήγορη δημιουργία - clean = dist

και μετά

γρήγορη κατασκευή γρήγορα

εκτελούνται, ακολουθούμενη από δεύτερη δοκιμή

γρήγορη κατασκευή - καθαρισμός

έπειτα:

γρήγορη κατασκευή γρήγορα

Αυτές οι παράμετροι είναι τόσο πλήρης, συμπεριλαμβανομένης της έλξης εξαρτήσεων με SPM, όσο και μια κανονική, καθαρή κατασκευή με εξαρτήσεις που έχουν ήδη ληφθεί.

Πώς τρέχει

Αυτό εκτελέστηκε στο τοπικό rMBP του 2015 και όλες οι κατασκευές έγιναν σε λειτουργία εντοπισμού σφαλμάτων, επειδή αυτή είναι η κανονική διαδικασία κατά την ανάπτυξη του λογισμικού Swift.

Δημιουργία αποτελεσμάτων χρόνου

Χρήση μνήμης

Το δεύτερο πράγμα που κοίταξα ήταν το αποτύπωμα μνήμης κάθε πλαισίου υπό φορτίο.

Τι ήταν Run

1ο - αρχικό αποτύπωμα μνήμης (απλά κοίταξε τη διαδικασία)
2η - Μέγιστη μνήμη Χρήση της διαδικασίας στον διακομιστή δοκιμών μου χρησιμοποιώντας:

wrk -d 1m-t4-c10

3η φορά - Μια επανάληψη της δεύτερης δοκιμής χρησιμοποιώντας:

wrk-d 1 m-t 8-c 100

Πώς ήταν το τρέξιμο

Αυτή η δοκιμή εκτελέστηκε σε ένα καθαρό Mac mini αφιερωμένο ως δοκιμαστικό διακομιστή. Κάθε πλαίσιο χτίστηκε σε λειτουργία απελευθέρωσης όπου ήταν δυνατόν. Μόνο ένα πλαίσιο εκτελέστηκε από τη γραμμή εντολών κάθε φορά και επαναλήφθηκε μεταξύ των δοκιμών. Το μόνο άλλο ανοιχτό παράθυρο κατά τη διάρκεια της δοκιμής ήταν ο έλεγχος δραστηριότητας, ο οποίος χρησιμοποιήθηκε από εμένα για να απεικονίσει τη χρήση μνήμης αιχμής. Καθώς κάθε πλαίσιο εκτελέστηκε, απλά σημειώσαμε την υψηλότερη τιμή που εμφανίστηκε στο παράθυρο παρακολούθησης δραστηριότητας.

Αποτελέσματα χρήσης μνήμης

Χρήση νήματος

Το τρίτο πράγμα που κοίταξα ήταν η χρήση νήματος από κάθε πλαίσιο υπό φορτίο.

Τι ήταν Run

1ο - αρχικά θέματα (απλά κοίταξε τη διαδικασία)
2nd - Peak Thread Χρήση της διαδικασίας στον διακομιστή δοκιμών μου χρησιμοποιώντας:

wrk -d 1m-t4-c10

Πώς ήταν το τρέξιμο

Αυτή η δοκιμή εκτελέστηκε σε ένα καθαρό Mac mini αφιερωμένο ως δοκιμαστικό διακομιστή. Κάθε πλαίσιο χτίστηκε σε λειτουργία απελευθέρωσης όπου είναι δυνατόν (περισσότερο για αυτό είναι στο τμήμα μεθοδολογίας). Μόνο ένα πλαίσιο εκτελέστηκε από τη γραμμή εντολών κάθε φορά και επαναλήφθηκε μεταξύ των δοκιμών. Το μόνο άλλο ανοιχτό παράθυρο κατά τη διάρκεια της δοκιμής ήταν ο έλεγχος δραστηριότητας, ο οποίος χρησιμοποιήθηκε από εμένα για να απεικονίσει τη χρήση του νήματος. Καθώς κάθε πλαίσιο εκτελέστηκε, απλά σημειώσαμε την υψηλότερη τιμή που εμφανίστηκε στο παράθυρο παρακολούθησης δραστηριότητας, ενώ η δοκιμή εκτελείται.

Μια σημείωση σχετικά με αυτά τα αποτελέσματα

Δεν υπάρχει "νίκη" σε αυτή την κατηγορία. Πολλές εφαρμογές αντιμετωπίζουν τα νήματα διαφορετικά, και αυτά τα πλαίσια δεν αποτελούν εξαίρεση. Για παράδειγμα, το Zewo είναι μια ενιαία εφαρμογή με σπείρωμα και δεν θα χρησιμοποιήσει ποτέ περισσότερα από ένα (επεξεργαστείτε: χωρίς την παρέμβασή σας για να το εκτελέσετε σε κάθε CPU σε παράλληλη διαμόρφωση). Τέλεια, από την άλλη πλευρά, θα χρησιμοποιήσει ένα ανά διαθέσιμη CPU. Ο ατμός θα χρησιμοποιεί ένα ανά μοντέλο σύνδεσης. Ως εκ τούτου, αυτό το γράφημα σχεδιάστηκε έτσι ώστε οι αιχμές στα σπειρώματα υπό φορτίο να είναι εύκολα ορατές, καθώς είναι στην ίδια σειρά και στα δύο γραφήματα.

Αποτελέσματα χρήσης νήματος

Ιστορικά σημεία αναφοράς

Το πρώτο σημείο αναφοράς είναι η διαδρομή / blog σε κάθε σελίδα, η οποία είναι μια σελίδα που επιστρέφει 5 τυχαίες εικόνες και ψεύτικες αναρτήσεις ιστολογίου για κάθε αίτημα.

Τι ήταν Run

wrk -d 10m -t 4 -c 20 http://169.254.237.101:(PORT)/blog

εκτελέστηκε για κάθε blog από το rMBP μου πάνω από τη γέφυρα κεραυνό μου.

Πώς ήταν το τρέξιμο

Όπως και με τη δοκιμή μνήμης, κάθε πλαίσιο εκτελέστηκε σε λειτουργία απελευθέρωσης όπου ήταν δυνατόν και σταμάτησε και επανεκκίνησε πριν από κάθε δοκιμή. Μόνο ένα πλαίσιο λειτουργούσε ανά πάσα στιγμή στο διακομιστή. Όλες οι δραστηριότητες έγιναν ελάχιστες και στις δύο μηχανές κατά τη διάρκεια των δοκιμών για να διατηρηθεί το περιβάλλον όσο το δυνατόν πιο όμοιο.

Αποτελέσματα

Αυτή η εικόνα ενημερώθηκε την 1η Σεπτεμβρίου 2016 με διόρθωσηΑυτή η εικόνα ενημερώθηκε την 1η Σεπτεμβρίου 2016 με διόρθωση

JSON Benchmarks

Λόγω κάποιων επιπλοκών του τρόπου με τον οποίο ο καθένας διαχειρίζεται στατικά αρχεία, αισθάνθηκε πιο δίκιο να εκτελέσει ξανά τις ίδιες δοκιμές χρησιμοποιώντας μια πιο απλή διεπαφή, έτσι πρόσθεσα εκδόσεις κάθε εφαρμογής που είναι sandboxed σε μια διαδρομή / json που επιστρέφει δέκα τυχαίους αριθμούς εντός 0 -1000. Είναι ξεχωριστά για να βεβαιωθείτε ότι οι χειριστές στατικού αρχείου και το μεσαίο λογισμικό δεν παρεμβαίνουν στα αποτελέσματα.

Τι ήταν Run

wrk -d 10m -t 4 -c 20 http://169.254.237.101:(PORT)/json

εκτελέστηκε για κάθε έργο JSON.

Πώς ήταν το τρέξιμο

Όπως και με τις άλλες δοκιμές, κάθε πλαίσιο εκτελέστηκε σε κατάσταση απελευθέρωσης όπου ήταν δυνατόν και σταμάτησε και επανεκκίνησε πριν από κάθε δοκιμή. Μόνο ένα πλαίσιο λειτουργούσε ανά πάσα στιγμή στο διακομιστή. Όλες οι δραστηριότητες έγιναν ελάχιστες και στις δύο μηχανές κατά τη διάρκεια των δοκιμών για να διατηρηθεί το περιβάλλον όσο το δυνατόν πιο όμοιο.

Αποτελέσματα

Αυτή η εικόνα ενημερώθηκε την 1η Σεπτεμβρίου 2016 με διόρθωσηΑυτή η εικόνα ενημερώθηκε την 1η Σεπτεμβρίου 2016 με διόρθωση

Συμπεράσματα

Η ερώτησή μου απαντήθηκε με ένα συντριπτικό ΝΑΙ. Το Swift είναι περισσότερο από ικανό να αναλάβει τα καθιερωμένα πλαίσια διακομιστή. Όχι μόνο αυτό, αλλά όλα τα πλαίσια Server-Side Swift πραγματοποιήθηκαν εξαιρετικά καλά και ο Node.js κτυπήθηκε από τουλάχιστον δύο από αυτά σε κάθε δοκιμή.

Δεδομένου ότι ο Server-Side Swift μπορεί να εξοικονομήσει έναν τρελό χρόνο που μοιράζεται τον κωδικό του κώδικα με τις άλλες εφαρμογές σου Swift, τα σύνολα χαρακτηριστικών των διαφόρων πλαισίων Swift Server και τα αποτελέσματα εδώ, θα έλεγα ότι το Server-Side Swift βρίσκεται σε καλή κατάσταση τρόπο να είναι ένας πολύ μεγάλος υποψήφιος στην αρένα προγραμματισμού. Είμαι προσωπικά προγραμματισμός όσο το δυνατόν περισσότερο στο Swift, ειδικά στην πλευρά του διακομιστή, και δεν μπορώ να περιμένω να δούμε όλα τα απίστευτα έργα που θα ξεσηκωθούν από την κοινότητα!

Εμπλέκομαι

Αν σας ενδιαφέρει το Server-Side Swift, τώρα είναι η ώρα να εμπλακείτε! Εξακολουθεί να υπάρχει πολλή δουλειά για τα πλαίσια, για την τεκμηρίωσή τους και για την εμφάνιση ορισμένων ωραίων εφαρμογών, παραδείγματα, ανοικτών ή κλειστών πηγών. Μπορείτε να μάθετε περισσότερα για κάθε πλαίσιο και να συμμετέχετε εδώ:

Τέλεια: Ιστοσελίδα | Github | Χαλαρή | Gitter
Ατμός: Ιστοσελίδα | Github | Χαλαρότητα
Kitura: Ιστοσελίδα | Github | Gitter
Zewo: Ιστοσελίδα | Github | Χαλαρότητα

Ερχομαι σε επαφή

Εάν θέλετε να συνδεθείτε, μπορείτε να επικοινωνήσετε μαζί μου στο @rymcol στο Twitter.

Δημοσιεύσεις που ένιωσα απαραίτητες: Οι τροποποιήσεις προστέθηκαν την 1η Σεπτεμβρίου 2016 για να διορθωθούν ορισμένα δεδομένα μετά τη βελτιστοποίηση της κυκλοφορίας για το Zewo με τη χρήση μιας μεθόδου που εναλλάσσεται με την «γρήγορη δημιουργία -c απελευθέρωση». Η PerfectlySoft Inc. συμφώνησε να χρηματοδοτήσει αυτή τη μελέτη για μένα, για να προωθήσει τη δύναμη του Swift. Είμαι επίσης στις ομάδες github για το Perfect & Vapor, αν και δεν είμαι ούτε υπάλληλος ούτε οι απόψεις μου αντικατοπτρίζουν τις δικές τους. Έκανα το απόλυτο καλύτερό μου να παραμείνω αμερόληπτο, καθώς αναπτύσσονται και στις τέσσερις πλατφόρμες, και ήμουν πραγματικά περίεργος να δω τα αποτελέσματα. Όλος ο κωδικός είναι διαθέσιμος δημοσίως για αυτή τη μελέτη, παρακαλώ αισθανθείτε ελεύθερος να το ελέγξετε ή να επαναλάβετε μερικές από τις δοκιμές και να το επιβεβαιώσετε μόνοι σας!