In einem OS-Buch habe ich gerade gelesen, dass "Öffentliche APIs für immer sind: Nur eine Chance, es richtig zu machen". Ist es wahr? Gilt es nur für APIs von Betriebssystemen oder auch für andere APIs? Trifft dies beispielsweise für die APIs von Android-Anwendungen wie Tasker, Locale und Pushover zu?
android
api
api-design
Md Mahbubur Rahman
quelle
quelle
Antworten:
Dies gilt im Allgemeinen für alle öffentlichen APIs, ja. Sobald Sie eine API der Öffentlichkeit zugänglich machen und Benutzer damit beginnen, Anwendungen zu erstellen, die von dieser API abhängen, wird es äußerst schwierig, die API zu ändern, da dies alle diese Anwendungen zum Erliegen bringt. Das ist in der Regel sowohl ein schwieriges technisches als auch ein schwieriges politisches Problem.
Natürlich ist es möglich, eine öffentliche API zu ändern. Es kommt beispielsweise vor, dass Projekte eine API in einer Version deklassieren, eine neue API einführen und dann die alte API in einer zukünftigen Version entfernen. Dies setzt jedoch voraus, dass jede (wichtige) Anwendung, die die alte API verwendet, neu geschrieben wird, um die neue API zu verwenden, bevor die alte API entfernt wird. Das dauert oft mehrere Jahre. Dies bedeutet, dass der Eigentümer der öffentlichen API jedem anderen Projekt, das die API verwendet, Kosten auferlegt. Da es im Allgemeinen weitaus mehr Verbraucher einer API gibt, handelt es sich bei diesen Verbrauchern in der Regel um eine relativ mächtige politische Lobby.
quelle
Der Autor des Zitats ist Joshua Bloch. Die Aussage stammt aus seinem Artikel über das API-Design für Autoaufkleber :
Für weitere Details dazu verweist der Autor die Leser auf seine Konferenzpräsentation "Wie man eine gute API entwirft und warum es wichtig ist" . Folie Warum ist API-Design wichtig für Sie? Es ist ziemlich klar, dass dies für jede Programmieraktivität relevant ist (Betriebssysteme oder nicht, egal für welchen Autor):
Slide Fazit unterstreicht dies auch als allgemeinen Ansatz:
quelle
APIs ändern sich immer, sonst was wäre der Sinn eines System-Upgrades? Nur Interna wechseln?
Jede Version des Systems bringt neue APIs, alte APIs werden veraltet und veraltete APIs verschwinden.
API-Änderungen müssen nur technisch und in Bezug auf die Kommunikation sehr vorsichtig sein.
quelle
Meiner Meinung nach ist diese 'Version' der API nach ihrer Veröffentlichung für immer, aber Sie können sie durch die Veröffentlichung einer '2.0'-API ablehnen (es gibt mehrere Beispiele, in denen dies geschieht - derzeit kann ich an Strava denken, der sie veröffentlicht hat eine 2.0-Version einer API für die Entwicklung, um deren Dienste zu nutzen).
Das Problem besteht darin, dass die ursprüngliche API ins Unendliche geht ... Ich denke, das hängt von der Verwendung der alten API ab und davon, welchen Wert diese API-Konsumenten für Sie haben.
Zurück zu den alten Zeiten von Windows 3.x und 9x usw., nach der Veröffentlichung wurden diese Betriebssystem-APIs erstellt und eingerichtet. Jetzt werden die Betriebssystemupdates ständig gepusht, sodass neue APIs veröffentlicht werden können. Solange Sie jedoch eine bestimmte Betriebssystemversion (Hauptversion) ausführen, werden diese APIs möglicherweise nur hinzugefügt, niemals entfernt sei der Fall für die 'nächste' Hauptversion.
Hmm, vielleicht bin ich von der ursprünglichen Frageabsicht abgewichen.
quelle
Es hängt davon ab, um welche Art von API es sich handelt (und ich gehe davon aus, dass sich die Änderungen ändern, ansonsten ist die Aussage offensichtlich nicht wahr).
Wenn der Aufrufer auswählen kann, welche Version er verwendet (z. B. mit Bibliotheken / Frameworks, die mit der aufrufenden Anwendung gebündelt sind), ist das Ändern der API kein großes Problem - aber immer noch schlecht für den Ruf der Software. Leute möchten nahtlos upgraden.
Wenn andere Benutzer die alte Version der API nicht mehr verwenden können (z. B. bei einem Onlinedienst oder in einem Browser oder Betriebssystem, in dem alte Versionen sehr unerwünscht sind), ist es sehr schlecht, APIs inkompatibel zu ändern in der Tat, da es alle Software, die es verwendet, kaputt macht und auch nicht aktualisiert wird. Dies verursacht den Entwicklern Wartungskosten und sie werden Sie dafür hassen. Und Software, die nicht gewartet wird und nicht funktioniert, wird sich auch auf Sie negativ auswirken.
Auf der spannenden Seite gibt es mindestens einen API-Anbieter, der ständig Änderungen an der API vornimmt und trotzdem lächerlich erfolgreich ist: Facebook. Sie gehen jedoch sehr sorgfältig mit den Änderungen um: Es gibt eine veröffentlichte Richtlinie , aktuelle Änderungen werden mindestens 90 Tage im Voraus angekündigt und erklärt, und Entwickler können sie innerhalb dieses Zeitraums frühzeitig aktivieren.
quelle
Wenn Sie die Voraussicht haben, eine Versionsnummer in die API selbst aufzunehmen. Entweder beim Verbindungs- / Initialisierungsaufruf oder irgendwo am Anfang der Parameterliste bei jedem Aufruf kann sich Ihre API im Laufe der Zeit weiterentwickeln und verändern, ohne vorhandene Clients zu stören.
quelle
Obwohl alles, was wir tun, ist, sie auf einmal zum Besten zu machen, aber da die Zeit umschlägt und sich verbessert, müssen wir manchmal die Informationen aktualisieren, wie es viele riesige Anbieter getan haben (wie bei Facebook mehrere Updates, twitter one major) Wenden Sie sich an oAuth und mehrere Hauptfächer, aber alle sind mit Verbesserungen verbunden, sodass keine häufigen Änderungen erforderlich sind. Und ja, bitte hören Sie nicht auf, ältere zu unterstützen. Es tut weh !! :)
quelle
Jedes Mal, wenn Sie ein Kommunikationsprotokoll freigeben, das offensichtlich eine API enthält, haben Sie eine Chance, dies in dem Sinne zu korrigieren, dass das Protokoll / die Schnittstelle abwärtskompatibel und erweiterbar sein muss.
Auf diese Weise können Sie neue Funktionen hinzufügen und neue Versionen freigeben, ohne sich Gedanken darüber machen zu müssen, ob Benutzer mit älteren Versionen betroffen sind. Niemals in der Welt der Software werden Sie eine Situation haben, in der Sie zu einem bestimmten Zeitpunkt nur eine harte Unterbrechung haben können, und jeder die alte Version fallen lässt und die neue Version verwendet.
quelle