CSF: Conceptos básicos y visión general de su arquitectura

Para entender CSF (Connected Services Framework) es fundamental comprender algunos conceptos:

  • Participantes
    • Son las entidades que participan en un contexto donde se intercambian mensajes.
    • Pueden ser servicios Web, servicios Web interceptores (son servicios Web cuyo objetivo es transformar un mensaje para que cumpla los requerimientos o las características esperadas por otro servicio Web) y/o "Persona", que representa la información relativa a las credenciales primarias de un usuario.
  • Tabla de enrutamiento
    • Define las rutas posibles dentro de un contexto de colaboración.
    • Cada ruta dispone de 3 propiedades:
      • Criterio: Especifica cuando se cumple una condición o no
      • Destino: Indica hacia donde hay que encaminar el mensaje origen
      • Intercepción: Valor opcional que especifica el servicio Web a invocar antes de enrutar el mensaje al destinatario
  • Sesión
    • Se puede decir que es una aplicación virtual compuesta por una serie de participantes cuyo comportamiento es establecido a través de una tabla de enrutamiento, es decir el contexto de colaboración donde se intercambian mensajes.
    • Se define mediante un documento XML llamado Manifiesto bajo un nombre e identificador único junto a sus participantes y posibles rutas.

Ahora que conocemos los conceptos, veamos brevemente la Arquitectura de CSF. Para ello propongo utilizar como punto de partida el siguiente gráfico:

CSF esta compuesto por un servidor principal llamado Gestor de la Sesión (en inglés Session Management), este es el encargado almacenar las distintas aplicaciones existentes y gestionadas por CSF. En definitiva es la pieza que intercambia mensajes entre los participantes en base a las tablas de enrutamiento definidas. En un despliegue en un entorno de producción podemos incluir varios servidores de sesión configurados como una granja de servidores.

Por otra parte CSF proporciona una serie de servicios Web como parte importante de la plataforma, son llamados servicios básicos (en inglés Core Services). A continuación indico los que considero más importantes:

  • Gestor de Identidad (en inglés Identity Management
    • Este servicio permite mediar ante la identidad o credencial a utilizar entre la colaboración de servicios, evitando así que los usuarios tengan que introducir sus credenciales cada vez que se realiza una petición a un servicio.
    • De alguna manera proporciona un mecanismo de autenticación única o single sing-on. Por explicarlo de una forma simple, funciona creando relaciones entre las credenciales a utilizar y los servicios que intervienen en la colaboración (origen-destino). Esta información se almacena en el ESSO (Enterprise Single Sign-On).
    • Requiere de un directorio activo que actue como controlador de dominio.
  • Catalogo de Servicios (en inglés Service Catalog)
    • Su misión es recopilar el grueso de los servicios Web que serán utilizados por CSF.
    • Para su correcto funcionamiento requiere disponer un servidor UDDI (Universal Description, Discovery and Integration) para registrar y gestionar los servicios
  • Lógica del Servicio (en inglés Service Logic)
    • Es el mecanismo existente en CSF para implementar lógica de negocio dentro de una aplicación o servicio, permitiendo así extender su comportamiendo más alla de lo permitido por la tabla de enrutamiento.
    • Es una pieza clave para mantener la integridad y fiabilidad de los procesos de negocio.
    • Para la sesión de CSF es un participante más, es decir un servicio Web.  Se pueden implementar como orquestaciones de BizTalk Server o mediante desarrollo C#

Opcionalmente, CSF proporciona un conjunto de soluciones de negocio que complementan su arquitectura. Estos son los llamados Eventos Estándares de Negocio (en inglés  Standard Business Events o SBE). En la versión actual (3.0) se disponen de 2 SBE que están orientados principalmente a compañías de telecomunicación.

  • Provisión (en inglés Order Handling)
    • Es un producto de servidor que proporciona mecanismo para la activación de pedidos y/ servicios así como para realizar altas o registros masivos.
  • Facturación (en inglés Billing)
    • Es un producto de servidor que permite la propagación de información de uso y aviso de cambios para ser contemplados en el procesos e facturación de los servicios

Para ver un ejemplo, os invito a visitar el blog de Juan Luis Guerrero (compañero con él cual he tenido el gusto de compartir proyecto de CSF) donde este ha publicado 2 interesantes post:

  1. Introducción a CSF (Connected Services Framework) I
  2. Introducción a CSF II - HelloWorldAsync

Si tienes dudas, ya sabes, escribeme un email o comentario e intentaré responderte lo antes posible :)