API-Design. Kai Spichale
Чтение книги онлайн.

Читать онлайн книгу API-Design - Kai Spichale страница 16

Название: API-Design

Автор: Kai Spichale

Издательство: Bookwire

Жанр: Математика

Серия:

isbn: 9783960886037

isbn:

СКАЧАТЬ APIs mit vielen Clients ist daher stark eingeschränkt.

       Lokalität

       Je weiter API und Client entfernt sind, desto schwieriger sind Änderungen. Wenn API und Client zur selben Codebasis gehören, ist die Änderung vergleichsweise einfach. Änderungen innerhalb des Zuständigkeitsbereichs eines Entwicklungsteams sind ebenfalls akzeptabel. Aber Änderungen über Organisationsgrenzen hinweg sind deutlich komplexer, weil die Organisationen wahrscheinlich verschiedene Ziele verfolgen, unterschiedliche Releasezyklen haben und die Kommunikation insgesamt schwieriger oder aufwendiger ist als innerhalb eines Teams.

       Statische Konnaszenz

      Es gibt verschiedene Formen von Konnaszenz, die man in statisch und dynamisch einteilen kann. Statische Formen kann man durch Lesen des Codes finden und analysieren. Die folgende Liste ist nach aufsteigender Stärke sortiert:

       Namenkonnaszenz

       Die schwächste Form statischer Konnaszenz ist Namenskonnaszenz. In diesem Fall müssen sich mehrere Komponenten auf den Namen eines Elements einigen. Falls zum Beispiel ein Name im JSON-Payload einer API geändert wird, müssen auch die von diesem Format abhängigen Clients angepasst werden.

       Typkonnaszenz

       Mehrere Komponenten müssen sich auf den Typ eines Elements einigen. Die Änderung eines Integers im JSON-Format einer API in einen String ist eine inkompatible Änderung mit mittelschwacher Konnaszenz.

       Bedeutungskonnaszenz

       Mehrere Komponenten müssen sich auf die Bedeutung bestimmter Werte einigen. Wenn eine API in ein Feld preis statt des Nettopreises nun den Bruttopreis schreibt, müssen die Clients angepasst werden.

       Positionskonnaszenz

       Mehrere Komponenten müssen sich auf die Reihenfolge bestimmter Werte einigen. Die Reihenfolge von Parametern für einen API-Aufruf ist ein typisches Beispiel für Positionskonnaszenz.

       Algorithmuskonnaszenz

       Bei der stärksten Form statischer Konnaszenz müssen sich mehrere Komponenten auf einen bestimmten Algorithmus einigen. Verbindungen zwischen API und Clients dieser Stärke können nur mit großem Aufwand geändert werden, daher sollte man beim Entwurf einer API auf Algorithmuskonnaszenz achten und versuchen, diese zu minimieren. Denken Sie beispielsweise an IBANs, die einem bestimmten Format folgen. Der Algorithmus zur Validierung von IBANs wird von unzähligen Systemen genutzt. Eine Änderung dieses Algorithmus wäre äußerst schwierig.

       Dynamische Konnaszenz

      Wie bereits erwähnt wurde, gibt es neben den statischen auch dynamische Formen von Konnaszenz, die nachfolgend beschrieben werden:

       Ausführungskonnaszenz

       Die Methoden einer API können nur in spezieller Reihenfolge aufgerufen werden. Häufig gibt es einen offensichtlichen fachlich-logischen Grund, warum API-Methoden nicht in beliebiger Reihenfolge benutzt werden können. Nehmen wir zum Beispiel einen Webservice einer Shopping-Anwendung zum Verwalten von elektronischen Einkaufswagen. Man kann beispielsweise nicht mit einer Operation CartAdd einen Artikel in einen Einkaufskorb legen, wenn nicht zuvor mit einer Operation CartCreate ein entsprechendes Objekt (Einkaufskorb) mit dem Webservice erzeugt wurde.

       Zeitliche Konnaszenz

       Diese Form bezieht sich auf die zeitliche Koordinierung zwischen API und Client. Fachliche Transaktionen werden beispielsweise für den Check-out-Prozess der Shopping-Anwendung eingesetzt. Nach Ablauf einer Frist wird die Transaktion automatisch vom Webserver gelöscht, es sei denn, die Transaktion wird vorher vom Client erfolgreich beendet oder abgebrochen.

       Wertekonnaszenz

       Diese Form von Konnaszenz liegt vor, wenn sich mehrere Werte zusammen ändern müssen, wenn beispielsweise Client und Server sich auf bestimmte Zahlen einigen, um den Zustand von Bestellungen anzugeben. Eine Bestellung in Bearbeitung hat dann zum Beispiel den Wert 2 und eine abgeschlossene Bestellung den Wert 3.

       Identitätskonnaszenz

       In diesem Fall müssen mehrere Komponenten dieselbe Entität referenzieren. Angenommen die zuvor erwähnte Shopping-Anwendung besteht aus mehreren getrennten Webservices für die Verwaltung der elektronischen Einkaufswagen, für den Check-out-Prozess und für die Artikelsuche. Identitätskonnaszenz liegt vor, wenn die Webservices für Check-out und Artikelsuche denselben Einkaufswagen referenzieren müssen.

      Konnaszenz gibt Ihnen das notwendige Vokabular, um die Änderbarkeit von APIs zu untersuchen und die vielfältige Kopplung zwischen Client und API zu benennen.

       2.4Zusammenfassung

      In diesem Kapitel haben Sie die Qualitätsmerkmale bzw. Qualitätsziele kennengelernt. Diese sind hier zusammengefasst:

       APIs müssen vollständig und korrekt sein.

       APIs sollten konsistent, intuitiv verständlich, dokumentiert, minimal, stabil, erweiterbar und leicht zu lernen sein. Sie sollten es Benutzern leicht machen, lesbaren Code zu schreiben. Es sollte schwer sein, sie falsch zu benutzen.

       Die Änderbarkeit von APIs kann mit der Metrik Konnaszenz systematisch analysiert werden.

      Im folgenden Kapitel werden Sie erfahren, wie APIs auf Basis von Use Cases und Beispielen entsprechend zuvor identifizierter Anforderungen iterativ mit Feedbackschleifen entworfen werden können.

       3Allgemeines Vorgehen beim API-Design

      Eine API ist für gewöhnlich das Ergebnis eines Prozesses mit vielen Iterationen. Manche APIs werden über mehrere Jahre kontinuierlich entwickelt. Jeder Schritt in diesem Prozess bietet einerseits die Chance, die API zu verbessern, und andererseits die Gefahr, die API zu verschlechtern. Aus diesem Grund stellt dieses Kapitel einen Leitfaden zum allgemeinen Vorgehen beim Entwurf von neuen APIs oder zur Erweiterung existierender zur Verfügung.

       3.1Überblick

      Das in diesem Kapitel beschriebene Vorgehen ist in der folgenden Abbildung dargestellt. Grundvoraussetzung für den Entwurf einer API sind deren Anforderungen und deren Rolle im Gesamtsystem. Die Anforderungen werden typischerweise mit Use Cases beschrieben. Wenn diese Informationen vorliegen, können Codebeispiele für die neue API geschrieben werden. Diese Beispiele verwenden repräsentative Szenarien, die die wichtigsten Features abdecken. Sie können die Codebeispiele später auch für Tests einsetzen, doch primär sind sie СКАЧАТЬ