-
Notifications
You must be signed in to change notification settings - Fork 0
REST beyond the obvious (Oliver Drotbohm)
JPA (Java Persistence API) wird verwendet um das abstrahierte Geschäftsmodell in Spring Boot als Framework abzubilden
Es sollte keine Komplett-Referenzierung auf andere Entitäten geben. Vielmehr sollte immer nur auf die ID eines Geschäftsobjektes/Aggregats-Entität verwiesen werden um bei Datenverkehr, beispielsweise über JSON, eine Kaskadierung von aufeinander referenzierenden Objekten zu verhindern.
DDD (Domain Driven Design)sieht es hauptsächlich vor Dinge explizit zu machen - nicht implizit. Beispielsweise einen ZIP-Code nicht als Integer verwenden, sondern besser als als explizites Konzept Zip-Code.
Um die Wartbarkeit, Austauschbarkeit und Kompatibilität von Clients zu erhöhen, wird empfohlen das Domänenwissen möglichst von den Clients zu entfernen. Stattdessen soll das Protokollwissen der Clients, beispielsweise über HAL erhöht werden. Diese standardisierten Notationen verändern sich seltener als Geschäftsvorgänge, weshalb Clients seltener und unabhängiger von sich ändernden Prozessen ein Update erfahren müssen.
HAL steht für Hypertext Application Language und dient durch eine standardisierte Darstellung der Bekanntmachung von Links via JSON oder XML. Eine Übersicht allgemein gängiger Links, wie sie auch in HTTP Headern verwendet werden, sind auf der Seite der IANA zu finden.
Analog zu einem Geschäftsprozess in der realen Welt, wo einem Kunden alle seine Möglichkeiten dargelegt werden, werden einem Client über die REST API seine Optionen bekannt gegeben. Diese Optionen ergeben sich aus dem Zustand des angestoßenen Prozesses (Applikationsschicht, Geschäftslogik) und werden über ein vorher vereinbartes Protokoll kommuniziert (Hypermedia). Da in Webanwendungen typischerweise REST-Schnittstellen definiert werden, wurde vorgeschlagen, sich ein Konzept wie HAL zunutze zu machen und darüber alle Ressourcen der Serverseite dem Client bekannt zu machen. Damit können, bei geschickt gewähltem Design der Schnittstelle, Statusänderungen einer Geschäftslogik durch Benutzerverhalten entkoppelt werden von der Darstellung in einer Clientanwendung.
- Home
- Microserviceübergeifende Dokumente
- Einzelne Microservice Dokumentationen
- Nachbereitung von Gastvorträgen & Workshhops
- REST beyond the obvious (Oliver Drotbohm)
- How to scale Monoliths (Ansgar-Brauner)
- Container & Execution Environment (Axel Burghof)
- Eventing mit Kafka (Sebastian Gauder)
- Workshop mit Studenten der sozialen Arbeit
- Micro Frontends (Wolf Schlegel, Niko Hellwig)
- Monolith vs Microservice (Christian Nockemann)
- Resilience, Monitoring, Logging and Disaster Recovery Strategies (Marion Bruns, Komal Ahluwalla)
- Challenges in the Field of Dynamic UI Composition for Microservices (Christian Fröhlingsdorf)
- 8 things a developer should know about microservices (Wolf Schlegel, Laura Ionescu, Felix Hammerl)