„Programmierschnittstelle“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Keine Bearbeitungszusammenfassung
Dinarsad (Diskussion | Beiträge)
Zeile 14: Zeile 14:
Im weiteren Sinne wird die Schnittstelle jeder [[Programmbibliothek|Bibliothek]] (''{{lang|en|Library}}'') als API bezeichnet.
Im weiteren Sinne wird die Schnittstelle jeder [[Programmbibliothek|Bibliothek]] (''{{lang|en|Library}}'') als API bezeichnet.


== Einteilung ==
== Einteilung nach Typklassen ==
Programmierschnittstellen lassen sich in folgende Klassen einteilen:
Programmierschnittstellen lassen sich in folgende Typklassen einteilen:


* funktionsorientiert (z. B. [[Dynamic Link Library]])
* funktionsorientiert (z. B. [[Dynamic Link Library]])
Zeile 33: Zeile 33:
=== Protokollorientierte Programmierschnittstellen ===
=== Protokollorientierte Programmierschnittstellen ===
Protokollorientierte Programmierschnittstellen sind unabhängig vom [[Betriebssystem]] und der [[Computerhardware]]. Allerdings muss das [[Netzwerkprotokoll|Protokoll]] stets neu implementiert werden. Um diesen Aufwand zu minimieren, wird die protokollorientierte Schnittstelle durch eine funktions- oder interfaceorientierte Schnittstelle gekapselt. Man kann hier weiterhin zwischen allgemeinen (z. B. [[Simple Object Access Protocol|SOAP]]) und anwendungsspezifischen (z. B. [[Simple Mail Transfer Protocol|SMTP]]) Protokollen unterscheiden.
Protokollorientierte Programmierschnittstellen sind unabhängig vom [[Betriebssystem]] und der [[Computerhardware]]. Allerdings muss das [[Netzwerkprotokoll|Protokoll]] stets neu implementiert werden. Um diesen Aufwand zu minimieren, wird die protokollorientierte Schnittstelle durch eine funktions- oder interfaceorientierte Schnittstelle gekapselt. Man kann hier weiterhin zwischen allgemeinen (z. B. [[Simple Object Access Protocol|SOAP]]) und anwendungsspezifischen (z. B. [[Simple Mail Transfer Protocol|SMTP]]) Protokollen unterscheiden.

== Einteilung nach Entwicklungsstufen ==
Bei Programmierschnittstellen für [[Anwendungssoftware|Anwendersoftware]] wird darüber hinaus auch nach Entwicklungsstufe unterschieden. Ausgangspunkt dieser Unterscheidung ist die Beobachtung, dass sich API-Operationen oft erst im Laufe der Zeit herausentwickeln. Von großer Wichtigkeit ist dabei, ob in früheren Versionen der API verfügbare Operation auch in allen Folgeversion noch vorhanden sind und auch die selbe Bedeutung haben. Bei einer stabilen Schnittstelle braucht die Anwendung nicht mehr geändert zu werden. Unterschieden wird zwischen sich entwickelnden (engl. evolving) und stabilen Programmierschnittstellen.<ref>[http://www.cs.kent.edu/~jmaletic/cs63902/Papers/Dig06.pdf Danny Dig and Ralph Johnson: How do APIs evolve? A story of refactoring], in ''Journal of Software Maintenance and Evolution: Research and Practice'', 2006.</ref> Als [[Refaktorisierung]] wird die Fortentwicklung einer Programmierschnittstelle bezeichnet, die keine Änderungen in den Anwenderprogrammen nötig machen.


== Siehe auch ==
== Siehe auch ==

Version vom 9. März 2012, 20:52 Uhr

Eine Programmierschnittstelle (englisch application programming interface (API), deutsch Schnittstelle zur Anwendungsprogrammierung“) ist ein Programmteil, der von einem Softwaresystem anderen Programmen zur Anbindung an das System zur Verfügung gestellt wird. Im Gegensatz zu einer Binärschnittstelle (ABI) definiert ein API nur die Programmanbindung auf Quelltextebene.[1]

Neben dem Zugriff auf Datenbanken oder Hardware wie Festplatte oder Grafikkarte, kann ein API auch das Erstellen von Komponenten der grafischen Benutzeroberfläche ermöglichen oder vereinfachen.

Heutzutage stellen auch viele Internetdienste APIs zur Verfügung. Im weiteren Sinne wird die Schnittstelle jeder Bibliothek (Library) als API bezeichnet.

Einteilung nach Typklassen

Programmierschnittstellen lassen sich in folgende Typklassen einteilen:

Funktionsorientierte Programmierschnittstellen

Funktionsorientierte Programmierschnittstellen kennen nur Funktionen mit oder ohne Rückgabewert als Mittel der Kommunikation. Dabei wird fast immer das Konzept der Handles verwendet. Man ruft eine Funktion auf und bekommt ein Handle zurück. Mit diesem Handle lassen sich weitere Funktionen aufrufen, bis abschließend das Handle wieder geschlossen werden muss. Das BIOS eines Personal Computer ist die älteste Programmierschnittstelle für diesen Rechnertyp.

Dateiorientierte Programmierschnittstellen

Dateiorientierte Programmierschnittstellen werden über die normalen Dateisystemaufrufe open, read, write und close angesprochen. Sollen Daten an ein Objekt gesendet werden, werden diese mit write geschrieben, sollen welche empfangen werden, werden sie mit read gelesen. Unter UNIX ist dieses Prinzip bei der Ansteuerung von Gerätetreibern weit verbreitet.

Objektorientierte Programmierschnittstellen

Objektorientierte Programmierschnittstellen verwenden Schnittstellenzeiger und sind damit deutlich flexibler als die funktionsorientierten Programmierschnittstellen. Häufig wird eine Typbibliothek mitgegeben.

Protokollorientierte Programmierschnittstellen

Protokollorientierte Programmierschnittstellen sind unabhängig vom Betriebssystem und der Computerhardware. Allerdings muss das Protokoll stets neu implementiert werden. Um diesen Aufwand zu minimieren, wird die protokollorientierte Schnittstelle durch eine funktions- oder interfaceorientierte Schnittstelle gekapselt. Man kann hier weiterhin zwischen allgemeinen (z. B. SOAP) und anwendungsspezifischen (z. B. SMTP) Protokollen unterscheiden.

Einteilung nach Entwicklungsstufen

Bei Programmierschnittstellen für Anwendersoftware wird darüber hinaus auch nach Entwicklungsstufe unterschieden. Ausgangspunkt dieser Unterscheidung ist die Beobachtung, dass sich API-Operationen oft erst im Laufe der Zeit herausentwickeln. Von großer Wichtigkeit ist dabei, ob in früheren Versionen der API verfügbare Operation auch in allen Folgeversion noch vorhanden sind und auch die selbe Bedeutung haben. Bei einer stabilen Schnittstelle braucht die Anwendung nicht mehr geändert zu werden. Unterschieden wird zwischen sich entwickelnden (engl. evolving) und stabilen Programmierschnittstellen.[2] Als Refaktorisierung wird die Fortentwicklung einer Programmierschnittstelle bezeichnet, die keine Änderungen in den Anwenderprogrammen nötig machen.

Siehe auch

Einzelnachweise

  1. Oliver Thoma: Mac OS X 10.4 Tiger. Google Bücher, 2006, S. 57, abgerufen am 27. März 2011.
  2. Danny Dig and Ralph Johnson: How do APIs evolve? A story of refactoring, in Journal of Software Maintenance and Evolution: Research and Practice, 2006.

Literatur