Beim Erstellen von Anwendungen in Golang kann die Einhaltung der Prinzipien der hexagonalen Architektur sauberen, modularen und wartbaren Code gewährleisten. Mit Torpedo können Sie diese Architektur einfach implementieren und gleichzeitig Ihren Entwicklungsprozess beschleunigen. In diesem Leitfaden zeigen wir Ihnen, wie Sie Ihr erstes Projekt mit Torpedo erstellen, von der Installation bis zur Generierung von Entitäten und Anwendungsfällen.
Dieser Beitrag ist eine Zusammenfassung der dokumentierten Kurzanleitung
Bevor wir mit der Erstellung eines Projekts beginnen, stellen Sie sicher, dass Go auf Ihrem System installiert ist. Installieren Sie dann Torpedo gemäß den Anweisungen in der Installationsanleitung
Dieses CLI-Tool übernimmt für Sie die Projektgenerierung, Entitätserstellung und Anwendungsfallgerüstbildung. Nach der Installation können Sie Ihr erstes Projekt erstellen.
Lasst uns mit unserer ersten Anwendung beginnen, die mit Torpedo! erstellt wurde. Wir werden eine Flugreservierungs-App namens Booking Fly entwickeln.
Wenn Torpedo installiert ist, ist das Erstellen eines neuen Projekts so einfach wie das Ausführen von:
mkdir booking-fly && cd booking-fly
torpedo init
Dieser Befehl generiert den Ordner .torpedo, in dem Sie Ihre Entitäten und Anwendungsfälle definieren sollten. Weitere Informationen zu diesem Ordner finden Sie unter .torpedo dir struct
Als nächstes möchten Sie Ihre Domain-Entitäten definieren. Entitäten sind die Kernobjekte in der Geschäftslogik Ihrer Anwendung und repräsentieren Dinge wie Benutzer, Produkt oder Bestellung.
Um Ihre erste Entität zu definieren, erstellen Sie eine YAML-Datei im Verzeichnis .torpedo/entities. Erstellen wir zum Beispiel eine einfache Benutzerentität:
.torpedo/entities/user.yaml
version: torpedo.darksub.io/v1.0 kind: entity spec: name: "user" plural: "users" description: "The frequent flyer user" doc: | The user entity represents a system user but also a frequent flyer. This entity is only for the example purpose. schema: reserved: id: type: ulid fields: - name: name type: string description: "The user full name" - name: email type: string description: "The user contact email" - name: password # it is not recommended to save passwords, this is an example only type: string encrypted: true description: "The user system password" - name: plan type: string description: "The user membership plan" validate: list: values: - GOLD - SILVER - BRONZE - name: miles type: integer description: "The accumulated flyer miles" relationships: - name: trips type: $rel ref: ".torpedo/entities/trip.yaml" cardinality: hasMany load: type: nested metadata: maxItems: 100 adapters: input: - type: http output: - type: memory
Zusätzlich ist die Entität „Reise“ erforderlich, also erstellen wir eine Entität „Reise“:
.torpedo/entities/trip.yaml
version: torpedo.darksub.io/v1.0 kind: entity spec: name: trip plural: trips description: "The user fly trip reservations" doc: | The trip entity handles all data related with the frequent flyer trip schema: reserved: id: type: ulid fields: - name: departure type: string description: "The trip departure airport" - name: arrival type: string description: "The trip arrival airport" - name: miles type: integer description: "The trip miles" - name: from type: date description: "The trip from date" - name: to type: date description: "The trip to date" adapters: input: - type: http output: - type: memory
Torpedo generiert den Go-Code für die Benutzer- und Trip-Entitäten zusammen mit den entsprechenden CRUD-Vorgängen, einschließlich der Repository-Schnittstellen und aller erforderlichen Datenbankverarbeitungscodes.
Sobald Ihre Entitäten vorhanden sind, ist es an der Zeit, mithilfe von Anwendungsfällen zu definieren, wie sie mit den Arbeitsabläufen der Anwendung interagieren. Anwendungsfälle kapseln die Geschäftsregeln und -prozesse, die auf Ihre Einheiten einwirken.
Erstellen Sie eine YAML-Datei im Verzeichnis .torpedo/use_cases, um Ihren Anwendungsfall zu definieren. Hier ist ein Beispiel für einen einfachen Anwendungsfall für die Flugbuchung:
.torpedo/use_cases/booking_fly.yaml
mkdir booking-fly && cd booking-fly
Diese Definition weist Torpedo an, den Grundcode zu erstellen, um Ihre benutzerdefinierte Logik für die Verarbeitung einer Flugreservierung unter Berücksichtigung einer Reise und eines Benutzers bereitzustellen.
Torpedo übernimmt das Gerüst für den gesamten Anwendungsfall, einschließlich der Interaktionen mit Ihren Entitäten.
Nachdem Sie den nächsten Schritt (#5) abgeschlossen haben, lesen Sie bitte die Kurzanleitung, um zu erfahren, wie Sie Ihre Logik innerhalb des generierten Skelett-Anwendungsfalls unter Anwendungsfälle programmieren können
Sobald Sie Ihre Entitäten und Anwendungsfälle definiert haben, stellt Torpedo sicher, dass die Verkabelung zwischen diesen Komponenten den Prinzipien der Hexagonal Architecture folgt. Die Anwendungsfälle interagieren mit den Entitäten über die Serviceschnittstellen, während Ihre Adapter (z. B. Datenbanken oder APIs) die Persistenz und externe Kommunikation übernehmen.
Jetzt ist es an der Zeit, Ihre App-Spezifikation zu schreiben, um alles zusammenzustellen!. Die Anwendungsdefinition ist die wichtigste Datei, da hier Ihre App beschrieben wird. Das folgende Beispiel zeigt, wie die Booking Fly-App definiert wird:
.torpedo/app.yaml
torpedo init
Um den Anwendungscode (Entitäten, Anwendungsfälle und mehr) zu generieren, führen Sie den Befehl aus:
version: torpedo.darksub.io/v1.0 kind: entity spec: name: "user" plural: "users" description: "The frequent flyer user" doc: | The user entity represents a system user but also a frequent flyer. This entity is only for the example purpose. schema: reserved: id: type: ulid fields: - name: name type: string description: "The user full name" - name: email type: string description: "The user contact email" - name: password # it is not recommended to save passwords, this is an example only type: string encrypted: true description: "The user system password" - name: plan type: string description: "The user membership plan" validate: list: values: - GOLD - SILVER - BRONZE - name: miles type: integer description: "The accumulated flyer miles" relationships: - name: trips type: $rel ref: ".torpedo/entities/trip.yaml" cardinality: hasMany load: type: nested metadata: maxItems: 100 adapters: input: - type: http output: - type: memory
Dieser Befehl generiert ein Projektgerüst und richtet die Verzeichnisstruktur basierend auf der hexagonalen Architektur ein. Das Projekt umfasst Kernordner für Entitäten, Anwendungsfälle und Adapter. Es stellt sicher, dass Ihre Geschäftslogik und Infrastruktur von Anfang an entkoppelt bleiben.
Sie können Ihr Projekt jetzt erweitern, indem Sie weitere Entitäten, Anwendungsfälle und sogar benutzerdefinierte Adapter hinzufügen. Die Struktur von Torpedo ermöglicht es Ihnen, Ihren Code sauber und modular zu halten, sodass Sie Ihre Anwendung problemlos skalieren können, wenn sie wächst.
Sehen Sie sich auch an, wie Sie Ihre eigene Logik mit dem generierten Use-Case-Code programmieren können.
Nachdem Sie Entitäten und Anwendungsfälle eingerichtet haben, können Sie Ihre Anwendung ausführen. Torpedo umfasst einen leichtgewichtigen Server, der auf dem Gin Gonic-Projekt basiert und den Sie zu Test- und Entwicklungszwecken ausführen können. Benutzen Sie einfach:
Vergessen Sie nicht, vorher Go Mod Tidy auszuführen, um Abhängigkeiten zu aktualisieren!
version: torpedo.darksub.io/v1.0 kind: entity spec: name: trip plural: trips description: "The user fly trip reservations" doc: | The trip entity handles all data related with the frequent flyer trip schema: reserved: id: type: ulid fields: - name: departure type: string description: "The trip departure airport" - name: arrival type: string description: "The trip arrival airport" - name: miles type: integer description: "The trip miles" - name: from type: date description: "The trip from date" - name: to type: date description: "The trip to date" adapters: input: - type: http output: - type: memory
Sie können jetzt mit der API Ihrer Anwendung interagieren und die von Ihnen definierten CRUD-Vorgänge und Anwendungsfälle ausführen.
Torpedo macht es einfach, sauberen, strukturierten Go-Code mit Hexagonal Architecture zu generieren. Aber das ist erst der Anfang! Sie können die Funktionen von Torpedo weiter erkunden, indem Sie komplexere Workflows hinzufügen, externe Dienste integrieren und das Framework an Ihre Bedürfnisse anpassen.
Bleiben Sie gespannt auf weitere erweiterte Funktionen, die bald für Torpedo verfügbar sein werden, und teilen Sie uns gerne Ihr Feedback mit, während Sie erkunden, was möglich ist!
Das Erstellen Ihres ersten Projekts mit Torpedo ist einfach und schnell. Durch die Nutzung der Leistungsfähigkeit von Entitätsschemata und Anwendungsfalldefinitionen in YAML können Sie schnell ein Gerüst für eine robuste Golang-Anwendung erstellen und gleichzeitig klare Architekturprinzipien beibehalten. Jetzt ist es an der Zeit einzutauchen und mit dem Bau zu beginnen! Teilen Sie uns Ihre Meinung mit und wie Torpedo Ihre zukünftigen Projekte unterstützen kann.
Das obige ist der detaillierte Inhalt vonErstellen Sie Ihr erstes Projekt mit Torpedo: Eine Schritt-für-Schritt-Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!