Compartir a través de


¿En qué consiste Service Broker?

Service Broker ayuda a los programadores a crear aplicaciones asincrónicas de acoplamiento flexible en las que los componentes independientes funcionan conjuntamente para llevar a cabo una tarea. Estos componentes de aplicación intercambian mensajes que contienen la información necesaria para finalizar la tarea. En este tema se describen los aspectos fundamentales de Service Broker:

  • Conversaciones
  • Coordinación y ordenación de mensajes
  • Programación asincrónica transaccional
  • Compatibilidad con aplicaciones de acoplamiento flexible
  • Componentes de Service Broker

Conversaciones

Service Broker está diseñado según las funciones básicas de envío y recepción de mensajes. Cada mensaje forma parte de una conversation, un canal de comunicación confiable y persistente. Cada mensaje y conversación tienen un tipo específico que impone Service Broker para ayudar a los programadores a escribir aplicaciones confiables.

Las nuevas instrucciones Transact-SQL permiten a las aplicaciones enviar y recibir los mensajes de forma segura. Una aplicación envía mensajes a un servicio, que es un nombre para un conjunto de tareas relacionadas. Una aplicación recibe mensajes de una cola, que es una vista de una tabla interna.

Los mensajes para la misma tarea forman parte de la misma conversación. En cada conversación, Service Broker garantiza que una aplicación reciba cada mensaje exactamente una vez en el orden en el que se envió. El programa que implementa un servicio puede asociar conversaciones relacionadas para el mismo servicio en un grupo de conversación, como se describe en Ventajas de Service Broker.

La seguridad basada en certificados ayuda a proteger los mensajes confidenciales y controla el acceso a los servicios.

Una forma de entender Service Broker consiste en compararlo con el servicio postal. Para mantener una conversación con un amigo que está lejos, puede comunicarse mediante cartas enviadas a través del servicio postal, que ordena y entrega las cartas. Ambos retiran las cartas de sus buzones, las leen, escriben respuestas y envían nuevas cartas, hasta que la conversación finaliza. La entrega de cartas sucede de forma "asincrónica", mientras los dos llevan a cabo otras tareas.

Dos usuarios intercambian correo mediante un servicio postal

En la analogía del servicio postal, las cartas son los mensajes. El servicio de Service Broker es la dirección a la que la oficina postal entrega las cartas. Las colas son los buzones que guardan las cartas una vez entregadas. Las aplicaciones reciben los mensajes, actúan sobre los mismos y envían respuestas.

Un programa que utiliza Service Broker mantiene conversaciones con otros programas de forma similar a la entrega postal.

No hay que saber específicamente cuándo lee su amigo el correo o escribe la respuesta. De igual forma, una aplicación que utiliza Service Broker no tiene que conocer cómo otro servicio procesa el mensaje, cómo se entrega o cuándo la otra aplicación va a procesar el mensaje.

Coordinación y ordenación de mensajes

Service Broker controla las colas, una técnica de programación de base de datos común, de forma diferente a los productos tradicionales en dos aspectos clave:

  • Las colas de Service Broker están integradas en la base de datos.
  • Las colas coordinan y ordenan los mensajes relacionados.

Las colas integradas suponen que el mantenimiento y la administración ordinarios de la base de datos también incluyen a Service Broker. Normalmente, un administrador no tiene tareas de mantenimiento rutinarias relacionadas con Service Broker.

La estructura de Service Broker proporciona una interfaz Transact-SQL sencilla para enviar y recibir mensajes combinada con un conjunto de sólidas garantías para el procesamiento y la entrega de los mensajes. Service Broker garantiza que un programa reciba cada mensaje de una conversación exactamente una vez en el orden en el que se envió, no en el orden en el que entró en la cola. Los productos de cola tradicionales proporcionan los mensajes en el orden en el que entran en la cola, lo que hace necesario que una aplicación determine el orden y la agrupación de los mensajes. Service Broker garantiza que dos lectores de cola no puedan procesar mensajes simultáneamente desde la misma conversación o desde el mismo grupo de conversaciones relacionadas.

El programa iniciador inicia una conversación para cada tarea y, a continuación, envía un mensaje al servicio de destino. El mensaje contiene los datos necesarios para llevar a cabo un paso específico de una tarea. El servicio de destino recibe el mensaje. El programa del servicio de destino procesa el mensaje y, a continuación, responde al servicio iniciador. La conversación continúa y acaba finalizando según las reglas determinadas por el programador.

Service Broker controla las tareas más difíciles implicadas en la creación de aplicaciones de mensajería, como la coordinación de mensajes, la entrega confiable de mensajes, el bloqueo y el inicio de los lectores de cola; de este modo, se deja libre a los programadores de la base de datos para que se concentren en resolver otros problemas.

Programación asincrónica transaccional

En la infraestructura de Service Broker, la entrega de mensajes entre aplicaciones es transaccional y asincrónica. Como la mensajería de Service Broker es transaccional, si una transacción se revierte, todas las operaciones de Service Broker de la transacción también lo harán, incluidas las operaciones de envío y recepción. En una entrega asincrónica, Database Engine (Motor de base de datos) controla la entrega mientras la aplicación continúa ejecutándose. Para mejorar la escalabilidad, Service Broker proporciona mecanismos para iniciar automáticamente programas que procesan una cola cuando existen tareas pendientes. Para obtener más información, vea Service Broker Activation.

La programación asincrónica ayuda a los programadores a escribir aplicaciones que usan las colas. Muchas aplicaciones de base de datos incluyen tablas que funcionan como colas de trabajo que debe realizarse según permitan los recursos. Las colas permiten que la base de datos continúe dando respuesta a los usuarios interactivos a la vez que utilizan los recursos disponibles de forma eficaz. Service Broker proporciona colas como parte integral de Database Engine (Motor de base de datos).

Las colas permiten que una aplicación realice un trabajo en una transacción distinta de la transacción que solicita el trabajo. Service Broker amplía esta idea, de forma que las aplicaciones puedan llevar a cabo el trabajo en una instancia o en un equipo diferentes. Service Broker ayuda a los programadores de bases de datos, ya que proporciona colas integradas en la base de datos y una mensajería transaccional confiable entre instancias.

Compatibilidad con aplicaciones de acoplamiento flexible

Service Broker es compatible con las aplicaciones de acoplamiento flexible. Estas aplicaciones están formadas por varios programas que envían y reciben mensajes de forma independiente. Tales aplicaciones deben contener las mismas definiciones para los mensajes intercambiados y definir la misma estructura global para la interacción entre los servicios. Sin embargo, las aplicaciones no tienen que ejecutarse al mismo tiempo, ni ejecutarse en la misma instancia de SQL Server, ni compartir los detalles de la implementación. Una aplicación no necesita conocer la ubicación física ni la implementación del otro participante de la conversación.

Componentes de Service Broker

Service Broker utiliza tres tipos de componentes:

  • Componentes de conversación. Los grupos de conversación, las conversaciones y los mensajes conforman la estructura de tiempo de ejecución de una aplicación de Service Broker. Las aplicaciones intercambian mensajes como parte de una conversación. Cada conversación forma parte de un grupo de conversación; un grupo de conversación puede contener varias conversaciones. Las conversaciones de Service Broker son diálogos, es decir, conversaciones entre dos participantes. Para obtener más información acerca de los componentes de conversación, vea Arquitectura de la conversación.
  • Componentes de definición de servicio. Éstos son los componentes de tiempo de diseño que especifican la estructura básica de las conversaciones que utiliza la aplicación. Definen los tipos de mensajes, el flujo de conversación y el almacenamiento de base de datos de la aplicación. Para obtener más información acerca de los componentes de definición de servicio, vea Arquitectura de servicio.
  • Componentes de red y de seguridad. Estos componentes definen la infraestructura para intercambiar mensajes fuera de una instancia de SQL Server. Para ayudar a los administradores de base de datos a administrar entornos cambiantes, Service Broker les permite configurar estos componentes independientemente del código de la aplicación. Para obtener más información acerca de los componentes de red y de seguridad, vea Redes y seguridad remota.

Los componentes de definición de servicio, los componentes de red y los componentes de seguridad forman parte de los metadatos de la base de datos y de la instancia de SQL Server. Los grupos de conversación, las conversaciones y los mensajes forman parte de los datos que contiene la base de datos.

Vea también

Conceptos

Escalabilidad de Service Broker

Otros recursos

Arquitectura de Service Broker
Service Broker Activation
Consideraciones de seguridad para Service Broker
Tutoriales de Service Broker

Ayuda e información

Obtener ayuda sobre SQL Server 2005