Introspected REST ist ein neuer Ansatz für die Entwicklung von Web-APIs, welcher auf REST aufbaut. In der vorliegenden Arbeit wird dieser neue API-Stil mit REST, GraphQL und gRPC hinsichtlich der Performance, Evolvierbarkeit und Komplexität bzw. Benutzbarkeit verglichen. Die Performance der untersuchten Introspected-REST-API liegt dabei im gleichen Bereich wie die der REST-API, welche ihrerseits von gRPC und GraphQL übertroffen wird. Auch die Evolvierbarkeit ist gleich gut im Vergleich zu REST. Die Verwendung von Introspected REST trägt vor allem zu einer besseren Benutzbarkeit der API bei.:1. Einleitung
2. Grundlagen von Web-APIs
2.1. Definition und Einteilung
2.2. Der Architekturstil Representational State Transfer (REST)
2.2.1. Grundlagen des Webs
2.2.2. REST-Prinzipien
2.2.3. Ablauf der Interaktionen zwischen Client und Server
2.3. Die Abfragesprache GraphQL
2.4. Das gRPC-Protokoll
2.5. Zusammenfassung
3. Introspected REST
3.1. Definition und Hauptbestandteile
3.1.1. Datenmodell
3.1.2. Probleme von REST
3.1.3. Das Introspection-Prinzip
3.1.4. Microtypes
3.2. Prototypische Implementierung
3.2.1. Ein Container-Mediatype für Microtypes
3.2.2. Content-Negotiation für Microtypes
3.2.3. Introspection durch HTTP-OPTIONS
3.2.4. Implementierung in ASP.NET Core
3.3. Zusammenfassung
4. Kriterien für den Vergleich der API-Stile
4.1. Performance
4.1.1. Performancemetriken für Web-APIs
4.1.2. Experiment zur Erfassung der Metriken
4.1.3. Validität und Übertragbarkeit der Ergebnisse
4.1.4. Verwandte Arbeiten
4.2. Evolvierbarkeit
4.2.1. Definition und Einteilung für Web-APIs
4.2.2. Durchführung eines Evolvierbarkeit-Vergleichs für API-Stile
4.2.3. Validität und Übertragbarkeit der Ergebnisse
4.2.4. Verwandte Arbeiten
4.3. Komplexität
4.3.1. Arten der Komplexität bei Web-APIs
4.3.2. Bewertung der Benutzbarkeit einer Web-API
4.3.3. Validität und Übertragbarkeit der Ergebnisse
4.3.4. Verwandte Arbeiten
4.4. Zusammenfassung
5. Vergleich der API-Stile
5.1. Performance
5.1.1. Ermittlung von Requestanzahl und Nachrichtengrößen
5.1.2. Ermittlung der Antwortzeiten
5.2. Evolvierbarkeit
5.3. Komplexität
5.3.1. Heuristiken für die Erlernbarkeit
5.3.2. Heuristiken für das Vorbeugen von Fehlern
5.3.3. Heuristiken für Einfachheit
5.3.4. Heuristiken für Konsistenz
5.3.5. Zusammenfassung
6. Diskussion
6.1. Performance
6.2. Evolvierbarkeit
6.3. Komplexität
6.4. Zusammenfassung
7. Fazit und Ausblick
Literatur
A. Ergebnisse der Performancemessungen
B. Codebeispiele / Introspected REST is a new approach to the development of web APIs. It builds upon the REST architectural style. In this thesis, Introspected REST is compared to REST, GraphQL, and gRPC in terms of performance, evolvability, and complexity/usability. The results show that the performance of Introspected REST is in the same order of magnitude as the performance of REST. Both are in turn outperformed by gRPC and GraphQL, respectively. The evolvability rates similarly to REST’s evolvability, too. Using Introspected REST for an API does most notably improve its usability.:1. Einleitung
2. Grundlagen von Web-APIs
2.1. Definition und Einteilung
2.2. Der Architekturstil Representational State Transfer (REST)
2.2.1. Grundlagen des Webs
2.2.2. REST-Prinzipien
2.2.3. Ablauf der Interaktionen zwischen Client und Server
2.3. Die Abfragesprache GraphQL
2.4. Das gRPC-Protokoll
2.5. Zusammenfassung
3. Introspected REST
3.1. Definition und Hauptbestandteile
3.1.1. Datenmodell
3.1.2. Probleme von REST
3.1.3. Das Introspection-Prinzip
3.1.4. Microtypes
3.2. Prototypische Implementierung
3.2.1. Ein Container-Mediatype für Microtypes
3.2.2. Content-Negotiation für Microtypes
3.2.3. Introspection durch HTTP-OPTIONS
3.2.4. Implementierung in ASP.NET Core
3.3. Zusammenfassung
4. Kriterien für den Vergleich der API-Stile
4.1. Performance
4.1.1. Performancemetriken für Web-APIs
4.1.2. Experiment zur Erfassung der Metriken
4.1.3. Validität und Übertragbarkeit der Ergebnisse
4.1.4. Verwandte Arbeiten
4.2. Evolvierbarkeit
4.2.1. Definition und Einteilung für Web-APIs
4.2.2. Durchführung eines Evolvierbarkeit-Vergleichs für API-Stile
4.2.3. Validität und Übertragbarkeit der Ergebnisse
4.2.4. Verwandte Arbeiten
4.3. Komplexität
4.3.1. Arten der Komplexität bei Web-APIs
4.3.2. Bewertung der Benutzbarkeit einer Web-API
4.3.3. Validität und Übertragbarkeit der Ergebnisse
4.3.4. Verwandte Arbeiten
4.4. Zusammenfassung
5. Vergleich der API-Stile
5.1. Performance
5.1.1. Ermittlung von Requestanzahl und Nachrichtengrößen
5.1.2. Ermittlung der Antwortzeiten
5.2. Evolvierbarkeit
5.3. Komplexität
5.3.1. Heuristiken für die Erlernbarkeit
5.3.2. Heuristiken für das Vorbeugen von Fehlern
5.3.3. Heuristiken für Einfachheit
5.3.4. Heuristiken für Konsistenz
5.3.5. Zusammenfassung
6. Diskussion
6.1. Performance
6.2. Evolvierbarkeit
6.3. Komplexität
6.4. Zusammenfassung
7. Fazit und Ausblick
Literatur
A. Ergebnisse der Performancemessungen
B. Codebeispiele
Identifer | oai:union.ndltd.org:DRESDEN/oai:qucosa:de:qucosa:74891 |
Date | 17 May 2021 |
Creators | Gerlinghoff, Florian |
Contributors | Riechert, Thomas, Kohnert, Marcus, Hochschule für Technik, Wirtschaft und Kultur |
Source Sets | Hochschulschriftenserver (HSSS) der SLUB Dresden |
Language | German |
Detected Language | German |
Type | info:eu-repo/semantics/acceptedVersion, doc-type:bachelorThesis, info:eu-repo/semantics/bachelorThesis, doc-type:Text |
Rights | info:eu-repo/semantics/openAccess |
Page generated in 0.0013 seconds