# Typbibliothek

Eine Typbibliothek (engl.: type library) im Sinne der elektronischen Datenverarbeitung ist ein standardisierter Kommunikationsschlüssel (eine Schnittstellenbeschreibung) zum Zugriff auf die öffentlich zugänglichen Datenstrukturen und Unterprogramme eines fremden Dienstprogramms (Server), welche so durch viele andere Programme (Clients) anonym mitbenutzt werden können. Beispiele für das Verwenden von Typbibliotheken finden sich bei COM, dynamischen Laufzeitbibliotheken und den Metadatenbeschreibungen moderner Laufzeitsysteme wie Java (Programmiersprache) oder das .Net-Framework.

## Implementierung

Im Falle einer prozeduralen Implementierung handelt es sich bei den veröffentlichten Ressourcen um Funktionen oder Methoden. Sie ermitteln aus den ihnen übergebenen Eingabewerten durch Anwendung eines Algorithmus einen oder mehrere determinierte Ergebniswerte und geben diese an das aufrufende Programm zurück.
Im Falle einer objektorientierten Implementierung sind im Dienstprogramm (Server) komplex strukturierte Datenklassen definiert. Diese Datenklassen dienen als Schablone für bestimmte Datenobjekte, die zur Laufzeit lokal nach dieser Vorlage erstellt, abgespeichert, wieder aufgerufen und gelöscht werden können. Die komplexen Eigenschaften von gültigen (also erzeugten und gespeicherten, sprich „instanziierten“) Datenobjekten können mit Hilfe der im Dienstprogramm (Server) implementierten Methoden gelesen und verändert werden. Diese Methoden bedienen sich dabei intern prozeduraler Funktionen, die sowohl öffentlich als auch verborgen sein können. Der Server muss nicht alle Methoden der Klasse einem Clienten in seiner Schnittstelle anbieten. Zur Mitbenutzung durch fremde Programme müssen aber zumindest die Methoden zur Erzeugung und Zerstörung (Konstruktoren und Destruktoren) dieser Datenobjekte, eine Teilmenge ihrer Eigenschaften und eine Teilmenge ihrer vorhandenen Manipulationsmethoden öffentlich sein.

## Erstellung der Typbibliothek

Der Zugang zu den Funktionen und Datenobjekten des Dienstprogramms (Server) kann durch ein Schloss, das sogenannte Dispatch-Interface (zu deutsch gewissermaßen „Kurier-Schnittstelle“), geregelt sein. Dieser „Kurier“ im Dienstprogramm (Server) nimmt die Wünsche der Außenwelt entgegen. Soweit sie verständlich und gültig formuliert sind, ruft er intern die entsprechenden Unterprogramme auf und gibt die ermittelten Resultate zurück.
Die Typbibliothek als Schnittstellenbeschreibung definiert auf Seiten des aufrufenden Programms (Client) die Sprachregelungen für die Datenkommunikation mit dem Server. Sie gestattet dem aufrufenden Programm die Formulierung von Aufrufbefehlen in einer vordefinierten, verständlichen Syntax (Aufrufkonvention) sowie die richtige Zuordnung und Auswertung der Rückmeldungen und Ergebnisse. Sie ermöglicht damit den geregelten Zugriff auf die programmtechnisch ausgelagerten, aber öffentlich zugänglichen Datenstrukturen und Funktionen des Dienstprogramms (Server).
Typbibliotheken werden als Programmierschnittstelle nach verallgemeinerten Konventionen katalogartig, schematisiert und maschinenlesbar erstellt (siehe hierzu: Component Object Model/COM). Diese Methodik ermöglicht die flexible Verknüpfung zahlreicher spezialisierter Programmbausteine, die auch auf unterschiedlichen Rechnern mit verschiedenen Betriebssystemen oder verschiedenen Programmiersprachen verteilt sein können, zu komplexen Anwendungen (siehe hierzu auch: Verteilte Systeme).
Eine Typbibliothek kann eine eigenständige, typisierte Schnittstellendatei (z. B. .TLB-Datei bei COM) sein, als Metadaten im Server (Java oder .NET) enthalten sein, oder sie kann programmtechnisch in das aufrufende Programm (Client) integriert werden.

## Verwendung

Das aufrufende Programm (Client) gibt einen Befehl, der mit Hilfe der Typbibliothek in eine für das Dienstprogramm (Server) verständliche Form übersetzt wurde, zunächst an das eigene Laufzeitsystem weiter. Dieses ruft die angedockte Programmkomponente (Server) entweder direkt oder indirekt auf und gibt deren Rückmeldungen und Ergebnisse in ihrer eigenen Syntax an das aufrufende Programm (Client) zurück.
Ein direkter Aufruf des Dienstprogramms (Server) ist dann möglich, wenn beide Programmteile auf demselben Rechner und unter dem gleichen Betriebssystem oder gar innerhalb desselben Prozesses ausgeführt werden. Anders sieht es aus in einem verteilten System, in dem das Dienstprogramm (Server) indirekt über ein Netzwerk auf einem anderen Netzwerkrechner angesprochen wird. Dabei kann es sich um einen realen oder virtuellen Netzwerkrechner mit dem gleichen oder einem fremden Betriebssystem handeln.
Datenobjekte im aufgerufenen Programm-Modul (Server) müssen vom aufrufenden Hauptprogramm (Client) zur Laufzeit zunächst mit den dafür vorgesehenen Server-Befehlen als eigenständige „Instanzen“ ihrer jeweiligen Klassendefinition generiert werden, da der Server nicht auf den Adressraum des Clients zugreifen kann (siehe Serialisierung, verteiltes System).
Die aufgerufene Programmkomponente (Server) kommuniziert im Regelfall nicht eigenständig mit dem Benutzer, sondern sie stellt lediglich eine anonyme Dienstleistung bereit. Ihre gegebenenfalls vorhandene eigene Bedienungsoberfläche bleibt dem Anwender verborgen.