# WS-Resource Framework

Das Web Services Resource Framework (WSRF) ist eine von der Organization for the Advancement of Structured Information Standards (OASIS) veröffentlichte Softwaresammlung modularer Einzelspezifikationen und beschreibt, wie mit Hilfe von Webservices zustandsbehaftete Ressourcen abgefragt, geändert und repräsentiert werden können. Die Spezifikationen von WSRF beinhalten verschiedene Muster (Patterns) für Definition, Operationen, Fehlerbehandlungen und Lebenszyklen von Ressourcen.

## Entwicklung und Grundlage

Organisationen und Konsortien wie OASIS beschäftigen sich mit der Entwicklung von Grid Standards, wie Open Grid Services Architecture (OGSA), Open Grid Services Infrastructure (OGSI), Web Services Resource Framework (WSRF), Universal Description, Discovery and Integration (UDDI) etc.
Grundziel des WSRF war es, eine Kommunikation zwischen verschiedenen Web Services, die auf Ressourcen zugreifen, zu definieren, sowie eine Wiederverwendbarkeit von Ressourcen zu sichern. Das WSRF ist eine Weiterentwicklung der OGSI. Im Zuge dieser Weiterentwicklung wurden Syntax und Terminologie geändert, um eine bessere, logischere Aufteilung von Spezifikationen zu schaffen. Ebenso wurden die internen Standards um die WS Notification- und Addressing Spezifikation erweitert. Durch die angeführten, entwickelten Standards wird die Kompatibilität, gemeinsame Nutzung, Portabilität und Erweiterung von Grid Systemen erleichtert.
Neben vielen anderen Standards bildet WSRF eine Basis, auf der angebotene Web-/Grid Services aufbauen. Da die Web Services von Natur aus zustandslos sind, wurde das Simulieren von zustandsbehafteten Diensten ebenso implementiert. Dadurch bedingt erfolgt die Verwendung eines Tokens, das bei jeder Anfrage (Request) mit der SOAP-Nachricht mitgesendet wird.
Im WSRF bleibt das Verwenden des Tokens für jeden Client versteckt bzw. transparent. Das Token ist auch als Endpoint Reference (EPR) bekannt. Bei der Erzeugung einer Ressource wird der EPR an den Client als Antwort geschickt, der bei jedem Methodenaufruf in der SOAP-Nachricht eingebettet wird. Die Transparenz wird mit Hilfe vom WS Addressing (WSRF Teilstandard) geschaffen.

## WSRF Spezifikationen

Im Vergleich zu OGSA bietet WSRF eine bessere Übersichtlichkeit und eine logischere Aufteilung nach Themenbereichen. Das WSRF beinhaltet folgende Einzelspezifikationen:

### WS-ResourceProperty

Diese Teilspezifikation beschreibt Operationen, die den Zugriff auf die ResourceProperties erlauben. Sie bietet die Möglichkeit einzelne oder mehrere Eigenschaften einer Ressource zu ändern oder auch Zustandswerte von Ressourcen abzufragen. Mit Get-, Set- oder DeleteResourceProperty Methoden können einzelne Properties zurückgegeben, gesetzt oder gelöscht werden.
Ebenso müssen alle Properties einer Ressource in einem Resource Property Document (RPD) gespeichert werden.

### WS-ResourceLifetime

Die WS-ResourceLifetime Teilspezifikation wird verwendet, um die Lebenszeit der WS-Resource zu setzen, abzurufen, oder den Lebenszyklus von erzeugten Instanzen zu kontrollieren. Es wird zwischen zeitgesteuerter und sofortiger Zerstörung unterschieden. Der Zeitpunkt der Zerstörung darf beliebig weit in der Zukunft liegen. Nachdem ein Client eine Ressource aufgefordert hat, wird diese nach einer bestimmten Zeit für die anderen Clients freigegeben. Die sofortige Zerstörung wird vom Client ausgelöst, die zeitgesteuerte durch den Server.
Bei Bedarf muss vom Client die Lebensdauer einfach verlängert werden. Nach der Ausführung jeder Aktion, ob erfolgreich oder fehlerhaft, wird immer eine Nachricht an den Client übermittelt.

### WS-ServiceGroup

Manchmal ist es sinnvoll, aufgrund der gemeinsamen Eigenschaften mehrere Ressourcen zu gruppieren. Dieser Standard fasst zu diesem Zwecke verschiedene Operationen zusammen. Mit Hilfe des sog. MembershipContentRules werden die Gesetze bzw. Kriterien festgelegt, die die Zugehörigkeit zu der entsprechenden Gruppe beeinflussen. Das Ziel der Gruppierung ist im Wesentlichen applikationsabhängig. Somit kann man die Zugehörigkeiten nicht nur definieren, sondern auch administrieren.
Die Verwaltungs- und Registrierungsfunktionen werden wiederum von einer Service Group Registration übernommen. Ein Web Service kann mehreren ServiceGroups gehören. Der Zugriff auf die Gruppen erfolgt durch Referenzen. Jeder Eintrag beinhaltet eine eindeutige Referenz auf die Ressource und weitere mögliche Metadaten zum Eintrag.

### WS-BaseFaults

In einer SOA Umgebung ist sehr wichtig, ein vordefiniertes Format für die fehlerbeschreibende Nachrichten zu definieren. Diese Spezifikation beinhaltet alle auf XML-Schema basierenden Fehlermeldungen. Alle WS-Nachrichten haben eine ähnliche Struktur, da sie alle vom BaseFaultType abgeleitet sind. Deswegen beinhalten sie dieselbe Informationen, beispielsweise Fehlerbeschreibung, Zeitstempel, Fehlercode oder Quelle des Fehlers.
Durch ein standardisiertes Fehlerformat wird das Management von Fehlern, Erkennung von aufgetretenen Problemen erleichtert.

## Implementierungsbeispiele

Das Globus Toolkit 4 (GT4) ist ein Vermittlungslayer zwischen der Anwendungs- und der Systemschicht. GT4 ist eine Technologie zur Erstellung von Grids, auf dem ein Anwender seine Applikationen laufen lassen kann. Es enthält WS Komponenten wie Java- und C-Implementierungen.
Das Grid Computing ist heterogen aufgebaut. Dessen weltweit verteilte Ressourcen werden durch Grid zusammengefasst und kommunizieren untereinander per Wide Area Network (WAN). Die Services, die für Grid Computing entwickelt wurden, sind nicht anderes als klassische Web Services mit mehreren Anforderungen. Um alle diese Anforderungen zu erfüllen und zu standardisieren, wurden Standards wie unter anderem das WSRF entwickelt.