# Web Service Resource Framework

Web Service Resource Framework (WSRF) forma parte de la familia de especificaciones relativas a servicios web publicadas por OASIS. Los principales impulsores de esta especificación son IBM y la Globus Alliance.
Un servicio web no tiene estado, es decir, no mantiene ninguna información entre sucesivas invocaciones. Esta falta de estado limita el número de cosas que se pueden hacer con los servicios web, aunque existen soluciones - como por ejemplo hacer que el servicio lea el estado de una base de datos, o hacer que recupere el estado de la sesión a través de cookies o WS-Session.
WSRF proporciona un conjunto de operaciones que los servicios web compatibles pueden implementar para convertirse en servicios web con estado; los clientes de estos servicios web se comunican con servicios WSRF que representan a recursos y que permiten almacenar y recuperar información. Los clientes invocarán el servicio añadiendo como parámetro el identificador del recurso que será utilizado durante la petición, codificado en una referencia que cumpla con WS-Addressing. Esta referencia puede ser simplemente una URI, o puede ser tan compleja como un XML que identifique o incluso describa totalmente el recurso en cuestión.
WSRF proporciona también un conjunto de operaciones estándarizadas para la consulta y modificación de propiedades del recurso representado. Estas operaciones se pueden utilizar para leer y/o modificar el estado del recurso, tal y como los métodos de un objeto comparten las variables de clase. El principal beneficiario de este modelo son las herramientas de gestión de servicios web, que pueden descubrir y consultar recursos, incluso aunque no tengan conocimiento previo de su existencia. Este es uno de los principios de la especificación WSDM dedicada a la gestión de recursos distribuidos.

## Componentes de la especificación

* WS-Resource define un WS-Resource como la exposición de un recurso a través de un servicio web con el que se puede acceder a las propiedades del recurso representado.
* WS-ResourceProperties describe una interfaz a la que asociar un conjunto de propiedades a un recurso que cumpla WS-Resource para que puedan ser consultadas y/o manipuladas de manera estándar.
* WS-ResourceLifetime describe una interfaz para gestionar el ciclo de vida de un recurso WS-Resource.
* WS-BaseFaults define un mecanismo de extensión para una mayor riqueza expresiva en la generación de excepciones incrustadas en el protocolo SOAP, SOAPFault.
* WS-ServiceGroup describe una interfaz para gestionar colecciones (conjuntos) de recursos que cumplen WS-Resource.
Forma parte también, WS-Notification que define la manera de notificar información a otros servicios web.

## Implementaciones

Implementar las funcionalidades básicas de consulta de propiedades en recursos WSRF es relativamente sencillo. La parte más complicada es probablemente la gestión de excepciones codificadas utilizando WSRF Base Faults cuando así lo requiere la especificación, la maroría de las implementaciones de SOAP utilizan las más generales SOAPFault. Implementar la gestión del ciclo de vida de los recursos también es complicado, pero es opcional, como también lo es la implementación de WS-Notification, que es la más complicada de comprobar.
* El Globus Toolkit versión 4 contiene implementaciones de WSRF en Java y C. Muchas de las herramientas de Globus han sido reprogramadas para utilizar WSRF.
* WebSphere Application Server versión 6.1, proporciona un entorno WSRF que soporta la creación de recursos WSRF tanto simples como en clúster si es que se necesita alta disponibilidad.
* The Fundación Apache dispone del proyecto Muse 2.0 que es una implementación en Java de las especificaciones WSRF, WS-Notification, y WSDM.
* WSRF::Lite Archivado el 12 de noviembre de 2007 en Wayback Machine. es una implementación en Perl.
* WSRF.NET es un proyecto desarrollado en .NET de un grupo de investigación de la Universidad de Virginia.
* La versión 6.0 of UNICORE está programada sobre una implementación de WSRF 1.2 que incluye WS-ResourceLifetime y una implementación parcial de WS-Notification.