Das Host Abstraction Framework (HAF) besteht aus mehreren Komponenten. Zum Einen aus einer Laufzeitbibliothek, die den Datenzugriff auf ein Hostsystem (z. B. AS/400) ermöglicht und zum Anderen aus Entwicklungstools, mit deren Hilfe sehr leicht mehrschichtige Clientanwendungen erstellt werden können. Diese Anwendungen werden für die Zusammenarbeit mit einem Hostsystem optimiert. Das HAF ermöglicht sowohl clientseitige (ein Client ruft eine Funktion auf einem Hostsystem auf) als auch hostseitige (ein Host ruft eine Funktion auf einem Windows-System auf) Funktionsaufrufe. Somit ist es ein Leichtes, bestehende Funktionalitäten in der jeweils „anderen Welt“ zu benutzen.

Einbindung von Funktionen auf Windows-Systemen in hostseitige Funktionen

Oftmals ist es einfacher bestimmte Funktionen mit modernen Technologien auf Windows-Systemen anstatt auf dem Host zu entwickeln (z. B. Verarbeitung von XML-Daten, Konsumieren von Webservices etc.). Mit Hilfe des HAF können Sie diese windowsseitigen Funktionen ganz leicht in bestehende hostseitige Funktionen einbinden.

Beispiel: Sie möchten für Ihre Kaufvertragserfassung die Funktionalität, einen Kunden über eine Suche in einem Online-Telefonbuch anzulegen, entwickeln.

Schnittstellenprogrammierung für externe Lösungen

Besonders wenn eine Lösung schon länger am Markt ist, stellt sich oft die Anforderung Software von Drittanbietern einzubinden. In der Vergangenheit wurde hier oft für jede einzelne Lösung eine eigene Schnittstelle entwickelt. Der Einsatz des HAF führt zwangsläufig dazu, dass ein objektorientiertes, clientseitiges API (Application Programming Interface) erstellt wird. Dieses API kann dann immer wieder in verschiedenen Projekten genutzt werden. Somit reduziert sich der Aufwand für die Entwicklung solcher Schnittstellen auf ein Minimum.

Beispiel: Sie sind Anbieter Warenwirtschaftslösung und möchten für die Kaufvertragserfassung eine Planungssoftware eines Drittanbieters einbinden.

Modernisierung der Oberfläche von bestehenden, hostbasierten Anwendungen

Anbieter von hostbasierten Lösungen stehen heute mehr denn je unter Modernisierungsdruck. Es gibt heute viele Lösungsansätze um eine bestehende Anwendung zu modernisieren. Diese reichen von einer „GUI on the fly“ bis zu einer kompletten Neuentwicklung.

Die Erfahrung aus früheren Projekten hat gezeigt, dass die optimale Lösung irgendwo dazwischen liegt. Denn eine „GUI on the fly“ ist zwar mit wenig Aufwand verbunden, führt in der Regel aber zu einer „unschönen“ und wenig intuitiven Oberfläche, die sich von anderen Anwendungen wie Microsoft Office etc. deutlich unterscheidet und kaum Vorteile bringt. Eine Neuentwicklung hingegen ist immer extrem aufwendig und bringt in der Regel unkalkulierbare Risiken mit sich.

Ziel muss es sein, möglichst viel der bisherigen Investitionen zu sichern, daher ist der erste Schritt bei der Modernisierung mit HAF die Trennung von Oberfläche und Geschäftslogik. Die Funktionen der Geschäftslogik (Serviceschnittstelle zum Host) werden anschließend mit dem Host Abstractor abgebildet. Dieser generiert dann ein objektorientiertes API, das auf dem Client die Serviceschnittstelle des Hosts wiederspiegelt. Dieses API kann dann in allen clientseitigen Projekten (Windows-Forms, Windows-Mobile, Webapplikationen etc.) genutzt werden.

Darüber hinaus können Sie Oberflächengeneratoren entwickeln, die in den Generierungsprozess des Host Abstractors eingebunden werden und basierend auf dem API Oberflächen erstellen (z. B. zum Pflegen von Stammdaten etc.).

Komplette Migration von bestehen hostbasierten Anwendungen auf andere Systeme

Nach der Modernisierung befinden sich auf dem Hostsystem nur noch Services ohne Oberfläche. Basierend auf der Schnittstelle dieser Services wurde ein objektorientiertes API generiert, das Dank des Providermodells des HAF unabhängig von Kommunikationstechnologie und somit auch unabhängig vom Hostsystem arbeitet.

Nun können die Services des Hostsystems auf einem anderen System nachgebildet werden. Solange sich die Schnittstelle der Services nicht ändert, können dann alle Clientprogramme weiterhin auf dem „neuen“ Backend arbeiten.

Beispiel: Sie haben die Modernisierung Ihrer AS/400 basierten Anwendung abgeschlossen und möchten nun auch eine Version für Windows-Systeme anbieten. Alle Serviceprogramme des Hostsystems werden mit Hilfe einer RPG-Implementierung für .NET zu windowsseitigem Code konvertiert und als .NET-Remoting-Services gehostet. Für die Kommunikation der Clients wird ein HAF-Provider für .NET-Remoting eingesetzt.