Οι εφαρμογές Go μπορούν να συνδυάσουν πολλούς διαφορετικούς τύπους αρχείων πηγαίου κώδικα, επομένως η χρήση μιας σταθερής, συμβατικής δομής έχει πολλά πλεονεκτήματα.
Η εξαγωνική αρχιτεκτονική (ή "θύρες και προσαρμογείς") είναι ένα δημοφιλές μοτίβο αρχιτεκτονικής λογισμικού που μπορείτε να εφαρμόσετε καθώς δημιουργείτε τις εφαρμογές Go σας. Χρησιμοποιώντας το, μπορείτε να βελτιώσετε την επεκτασιμότητα, τη δυνατότητα συντήρησης και τη δυνατότητα δοκιμής της εφαρμογής σας.
Αυτή η αρχιτεκτονική βοηθά στον διαχωρισμό της επιχειρηματικής λογικής από τις εξωτερικές εξαρτήσεις και την υποδομή, καθιστώντας την εφαρμογή σας ευέλικτη και ευκολότερη στη συντήρηση.
Τι είναι η Εξαγωνική Αρχιτεκτονική;
Η εξαγωνική αρχιτεκτονική χωρίζει τις εφαρμογές σε τρία κύρια επίπεδα:
- οΕπίπεδο εφαρμογής φιλοξενεί τη βασική λογική της εφαρμογής ανεξάρτητα από τυχόν εξαρτήσεις τρίτων. Το επίπεδο εφαρμογής θα πρέπει να περιέχει τη λογική της επιχείρησής σας, τα μοντέλα τομέα και τις υπηρεσίες εφαρμογής.
- οΣτρώμα θυρών και προσαρμογέων στεγάζει τους προσαρμογείς που αλληλεπιδρούν με τις υπάρχουσες εφαρμογές. Οι θύρες είναι διεπαφές που καθορίζουν τις λειτουργίες για την εφαρμογή σας, ενώ οι προσαρμογείς είναι υλοποιήσεις των διεπαφών. Οι προσαρμογείς μπορεί να είναι βάσεις δεδομένων, HTTP API, μεσίτες μηνυμάτων ή οποιοδήποτε άλλο εξωτερικό σύστημα.
- Το στρώμα υποδομής στεγάζει την υλοποίηση των προσαρμογέων. Το επίπεδο υποδομής θα πρέπει να περιλαμβάνει βάσεις δεδομένων, μεσίτες μηνυμάτων και άλλα εξωτερικά συστήματα.
Πλεονεκτήματα της χρήσης της εξαγωνικής αρχιτεκτονικής
Η εξαγωνική αρχιτεκτονική είναι δημοφιλής για τα ακόλουθα πλεονεκτήματα που προσφέρει.
Επεκτασιμότητα και Συντηρησιμότητα Έργου
Η διαίρεση των εφαρμογών σας επιτρέπει μια αρθρωτή και αποσυνδεδεμένη βάση κώδικα που διευκολύνει την κλίμακα και τη συντήρηση της εφαρμογής σας.
Μπορείτε να αφαιρέσετε προσαρμογείς χωρίς να επηρεάσετε τη λογική του πυρήνα και να τροποποιήσετε τη λογική του πυρήνα χωρίς να επηρεάσετε τους προσαρμογείς. Αυτό σημαίνει ότι μπορείτε εύκολα να αντικαταστήσετε τους προσαρμογείς χωρίς να ξαναγράψετε ολόκληρη την εφαρμογή σας.
Δυνατότητα δοκιμής και ευκολία ενσωμάτωσης
Η εξαγωνική αρχιτεκτονική προάγει τη δυνατότητα δοκιμής, καθώς μπορείτε να γράψετε δοκιμές μονάδων για τη λογική του πυρήνα χωρίς ψευδείς εξωτερικές εξαρτήσεις. Μπορείτε να χρησιμοποιήσετε δοκιμαστικά διπλά, όπως ψεύτικα ή στελέχη, χωρίς να χρειάζεται δημιουργήστε μια βάση δεδομένων ή μεσίτη μηνυμάτων.
Η εξαγωνική αρχιτεκτονική καθιστά επίσης εύκολη την ενοποίηση της εφαρμογής σας με άλλα συστήματα. Δεδομένου ότι οι προσαρμογείς είναι ξεχωριστοί από τη λογική του πυρήνα, μπορείτε να τους χρησιμοποιήσετε ξανά σε άλλες εφαρμογές ή για μικροϋπηρεσίες. Μπορείτε επίσης να εκθέσετε τα API της θύρας της εφαρμογής σας για κατανάλωση σε άλλα συστήματα.
Ευελιξία και προσαρμοστικότητα σε μεταβαλλόμενες απαιτήσεις
Η εξαγωνική αρχιτεκτονική παρέχει ευελιξία και προσαρμοστικότητα στις μεταβαλλόμενες απαιτήσεις. Δεδομένου ότι η βασική λογική είναι ανεξάρτητη από τους προσαρμογείς, μπορείτε εύκολα να τροποποιήσετε ή να επεκτείνετε τη λειτουργικότητα της εφαρμογής χωρίς να επηρεάζετε τους προσαρμογείς.
Μπορείτε να εξελίξετε την εφαρμογή σας με την πάροδο του χρόνου, τηρώντας συγκεκριμένα εξωτερικά συστήματα.
Go and the Hexagonal Architecture
Στον πυρήνα, η εξαγωνική αρχιτεκτονική αφορά τον διαχωρισμό της βασικής επιχειρηματικής λογικής της εφαρμογής από την υποδομή, έτσι ώστε μπορείτε να ανταλλάξετε εξαρτήσεις χωρίς να επηρεάζετε τη λογική του πυρήνα της εφαρμογής, καθιστώντας ευκολότερη τη διατήρηση και τη δοκιμή του εφαρμογή.
Η τυπική εξαγωνική εφαρμογή Go χρησιμοποιεί τέσσερις κύριους καταλόγους: cmd, εσωτερικός, pkg, και Προμηθευτή.
ο cmd κατάλογος περιέχει τις κύριες εφαρμογές για το έργο. Ο κώδικας που γράφετε εδώ θα καλεί συνήθως συναρτήσεις από αρχεία στο pkg και εσωτερικούς καταλόγους.
ο εσωτερικός Ο κατάλογος πρέπει να περιέχει έναν ιδιωτικό κωδικό εφαρμογής που δεν θέλετε να εισάγουν οι χρήστες στην εφαρμογή τους. Ο μεταγλωττιστής Go επιβάλλει το μοτίβο εσωτερικής διάταξης και μπορείτε να έχετε όσους εσωτερικούς καταλόγους θέλετε σε άλλους καταλόγους. Δεν περιορίζεστε σε έναν εσωτερικό κατάλογο ανώτατου επιπέδου.
ο pkg κατάλογος θα πρέπει να περιέχει τον κωδικό της βιβλιοθήκης που θέλετε να εισάγουν και να χρησιμοποιούν οι εξωτερικές εφαρμογές. Αν και χρησιμοποιώντας το pkg κατάλογος είναι κοινή πρακτική, δεν είναι καθολικά αποδεκτή ούτε επιβάλλεται.
ο Προμηθευτή Ο κατάλογος πρέπει να περιέχει εξαρτήσεις εφαρμογών (μη αυτόματη ή αυτόματη διαχείριση). Μπορείτε να χρησιμοποιήσετε το πάω πωλητής mod εντολή για δημιουργία α /vendor κατάλογο για να αξιοποιήσετε τις λειτουργίες που παρέχει η Go για τους προμηθευτές.
Εφαρμογή της Εξαγωνικής Αρχιτεκτονικής στο Go
Η δομή του αρχείου του έργου σας είναι σημαντική κατά την εφαρμογή της εξαγωνικής αρχιτεκτονικής σε οποιαδήποτε γλώσσα, συμπεριλαμβανομένης της Go.
Ακολουθεί ένα παράδειγμα δομής αρχείου για την υλοποίηση της Εξαγωνικής Αρχιτεκτονικής στο Go:
.
├── cmd
│ └── http
│ └── main.go
├── εσωτερικό
│ ├── προσαρμογείς
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── βάση δεδομένων
│ │ └── db_adapter.go
│ ├── εφαρμογή
τομέας │ │ ├──
│ │ │ ├── entity1.go
│ │ │ └── entity2.go
Θύρες │ │ ├──
Είσοδος │ │ │ ├──
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
Έξοδος │ │ │ └──
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── περιπτώσεις χρήσης
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── pkg
Είσοδος │ ├──
│ │ ├── input1.go
│ │ └── input2.go
Έξοδος │ └──
│ ├── output1.go
│ └── output2.go
└── πωλητής
├── ενότητα1
│ ├── file1.go
│ └── file2.go
└── module2
├── file1.go
└── file2.go
ο pkg κατάλογος περιέχει τις θύρες εισόδου και εξόδου της εφαρμογής σας σε αυτό το παράδειγμα. Θα ορίσετε διεπαφές για θύρες εισόδου και εξόδου σε αυτά τα αρχεία.
ο εσωτερικός κατάλογος περιέχει τον τομέα της εφαρμογής και τις περιπτώσεις χρήσης. Θα γράψετε την επιχειρηματική λογική της εφαρμογής σας σε αυτά τα αρχεία.
ο προσαρμογείς κατάλογος περιέχει τον κωδικό υποδομής που συνδέει την εφαρμογή σας με τη βάση δεδομένων και το API.
Ρύθμιση της δομής του αρχείου εξαγωνικής αρχιτεκτονικής
Η ρύθμιση της δομής του αρχείου εξαγωνικής αρχιτεκτονικής του έργου σας μπορεί να είναι περίπλοκη, αλλά μπορείτε να γράψετε ένα σενάριο bash για να αυτοματοποιήσετε τη διαδικασία δημιουργίας καταλόγου.
Εκτελέστε αυτήν την εντολή στον κατάλογο εργασίας του έργου σας σε δημιουργήστε ένα σενάριο bash, εξαγωνικό.shκαι εκχωρήστε δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης σε αυτό:
αγγίξτε εξάγωνο.sh && chmod 777 εξάγωνο.sh
Εισαγάγετε αυτόν τον κωδικό bash εξαγωνικό.sh για να δημιουργήσετε τη δομή του αρχείου στον τρέχοντα κατάλογο εργασίας σας:
#!/bin/bash
# δημιουργία καταλόγων κορυφαίου επιπέδου
mkdir cmd εσωτερικός προμηθευτής pkg# δημιουργία καταλόγου cmd/http
mkdir cmd/http# δημιουργία εσωτερικών καταλόγων
mkdir εσωτερικά/προσαρμογείς εσωτερική/εσωτερική εφαρμογή/εσωτερική εφαρμογή/τομέα εσωτερική/εφαρμογή/θύρες εσωτερικές/εφαρμογή/θύρες/εισόδου εσωτερική/εφαρμογή/θύρες/εξόδου εσωτερικές/εφαρμογή/περιπτώσεις χρήσης# δημιουργία εσωτερικών καταλόγων/προσαρμογέων
mkdir εσωτερικό/προσαρμογείς/api εσωτερικό/προσαρμογείς/βάση δεδομένων# δημιουργία εσωτερικών καταλόγων/εφαρμογών/θυρών
mkdir εσωτερική/εφαρμογή/θύρες/είσοδος εσωτερική/εφαρμογή/θύρες/έξοδος# δημιουργία καταλόγων προμηθευτών
mkdir προμηθευτής/module1 προμηθευτής/module2
# μήνυμα επιτυχίας εκτύπωσης
ηχώ"Η δομή καταλόγου δημιουργήθηκε με επιτυχία."
Μπορείτε να εκτελέσετε αυτό το σενάριο bash με την ακόλουθη εντολή:
./εξάγωνο.sh
Το πρόγραμμα bash δημιουργεί τους φακέλους και τους υποφακέλους, ώστε να μπορείτε να προχωρήσετε στη δημιουργία αρχείων και να γράψετε την επιχειρηματική λογική για την εφαρμογή σας.
Η εξαγωνική αρχιτεκτονική είναι εύχρηστη για σύνθετες εφαρμογές κτιρίων
Η εφαρμογή της εξαγωνικής αρχιτεκτονικής μπορεί να είναι χρονοβόρα, αλλά τα οφέλη υπερτερούν του κόστους μακροπρόθεσμα. Διαχωρίζοντας τις ανησυχίες και κάνοντας τον κώδικά σας πιο αρθρωτό, μπορείτε εύκολα να διατηρήσετε και να δοκιμάσετε τις εφαρμογές σας.
Υπάρχουν πολλά άλλα αρχιτεκτονικά μοτίβα, το καθένα με πλεονεκτήματα και μειονεκτήματα για την κατασκευή ευέλικτων, αποδοτικών εφαρμογών. Αυτές περιλαμβάνουν τη δημοφιλή αρχιτεκτονική MVC (μοντέλο, προβολή, ελεγκτής) για τη δημιουργία διαδικτυακών εφαρμογών.