Share via


Funzioni di Service Broker

Service Broker consente agli sviluppatori la creazione di applicazioni asincrone a regime di controllo libero in cui componenti indipendenti concorrono all'esecuzione di un'attività. Questi componenti di applicazione si scambiano messaggi contenenti le informazioni necessarie per completare l'attività stessa. In questo argomento vengono descritti i seguenti aspetti fondamentali di Service Broker:

  • Conversazioni
  • Ordinamento e coordinamento dei messaggi
  • Programmazione asincrona transazionale
  • Supporto di applicazioni a regime di controllo libero
  • Componenti di Service Broker

Conversazioni

Service Broker è strutturato sulle funzioni di base di invio e ricezione di messaggi. Ogni messaggio fa parte di una conversazione, un canale di comunicazione affidabile e persistente. Ogni messaggio e ogni conversazione sono associati a un tipo specifico imposto da Service Broker per agevolare gli sviluppatori nella scrittura di applicazioni affidabili.

Le nuove istruzioni Transact-SQL consentono alle applicazioni di inviare e ricevere i messaggi in modo affidabile. Un'applicazione invia messaggi a un servizio, costituito da un insieme di attività correlate e riceve i messaggi da una coda, costituita da una vista di una tabella interna.

I messaggi relativi alla stessa attività fanno parte della stessa conversazione. All'interno di ogni conversazione, il compito di Service Broker è garantire che un'applicazione riceva i messaggi una sola volta e rispettando l'ordine di invio. Il programma che implementa un servizio può associare conversazioni correlate per lo stesso servizio in un gruppo di conversazioni, come illustrato in Vantaggi di Service Broker.

La protezione basata su certificati consente di proteggere i messaggi riservati e controllare l'accesso ai servizi.

Per comprendere meglio il funzionamento di Service Broker, è possibile paragonarlo a un servizio postale. Una conversazione con un collega lontano può avvenire tramite lettere inviate attraverso il servizio postale, che ordina e recapita le lettere. I partecipanti recuperano le lettere dalle cassette postali, le leggono, scrivono le risposte e inviano nuove lettere, fino alla conclusione della conversazione. Il recapito delle lettere avviene in modo "asincrono", ovvero quando i partecipanti alla conversazione sono impegnati in altre attività.

Scambio di posta tra due utenti tramite un servizio postale

Nell'analogia con il servizio postale, le lettere rappresentano i messaggi, il servizio di Service Broker è l'indirizzo al quale l'ufficio postale recapita le lettere e le code corrispondono alle cassette postali che contengono le lettere recapitate. Le applicazioni ricevono i messaggi, eseguono le operazioni appropriate e inviano le risposte.

Un programma che utilizza Service Broker conversa con altri programmi in modo analogo al recapito postale.

Non è necessario sapere con precisione quando il collega legge la posta o scrive le risposte. Analogamente un'applicazione che utilizza Service Broker non deve necessariamente conoscere il modo in cui un altro servizio elabora un messaggio, il modo in cui il messaggio viene recapitato o quando l'altra applicazione elabora il messaggio.

Ordinamento e coordinamento dei messaggi

La gestione dell'accodamento, una tecnica comune di programmazione dei database, da parte di Service Broker si differenzia rispetto alla gestione dei prodotti tradizionali per due aspetti fondamentali:

  • Le code di Service Broker sono integrate nel database.
  • Le code coordinano e ordinano i messaggi correlati.

L'accodamento integrato implica la manutenzione e l'amministrazione di Service Broker all'interno delle normali attività di manutenzione e amministrazione del database. In genere, un amministratore non svolge attività di manutenzione di routine relative a Service Broker.

L'infrastruttura di Service Broker combina un'interfaccia Transact-SQL semplice per l'invio e la ricezione dei messaggi e un set di garanzie avanzate per il recapito e l'elaborazione dei messaggi. Service Broker assicura che un programma riceva i messaggi di una conversazione una sola volta e rispettando l'ordine di invio anziché l'ordine di inserimento nella coda. I prodotti di accodamento tradizionali recapitano i messaggi nell'ordine di immissione nella coda, lasciando all'applicazione il compito di determinare l'ordine e il raggruppamento dei messaggi. Service Broker garantisce che i messaggi di una stessa conversazione o di uno stesso gruppo di conversazioni correlate non vengano elaborati contemporaneamente da due lettori di coda.

Il programma di origine avvia una conversazione per ogni attività e quindi invia un messaggio al servizio di destinazione. Il messaggio contiene i dati necessari per l'esecuzione di un passaggio specifico di un'attività. Il servizio di destinazione riceve il messaggio. Il programma per il servizio di destinazione elabora il messaggio e quindi risponde al servizio di origine. La conversazione procede e infine si conclude in base alle regole determinate dallo sviluppatore.

Service Broker gestisce le attività più complesse previste per la scrittura di applicazioni di messaggistica, tra cui il coordinamento, il recapito affidabile del messaggi, il blocco e l'avvio dei lettori di coda, consentendo agli sviluppatori di database di concentrare la propria attenzione sulla risoluzione dei problemi aziendali.

Programmazione asincrona transazionale

Nell'infrastruttura di Service Broker, il recapito dei messaggi tra le applicazioni è transazionale e asincrono. Poiché la messaggistica di Service Broker è di tipo transazionale, in caso di rollback di una transazione si verifica il rollback di tutte le operazioni di Service Brokerall'interno della transazione, comprese le operazioni di invio e ricezione. Nel recapito asincrono, Motore di database gestisce il recapito durante la normale esecuzione dell'applicazione. Per consentire una scalabilità migliore, Service Broker dispone di meccanismi per l'avvio automatico dei programmi di elaborazione di una coda quando la quantità di lavoro raggiunge un determinato livello. Per ulteriori informazioni, vedere Service Broker Activation.

La programmazione asincrona consente agli sviluppatori di scrivere applicazioni che utilizzano l'accodamento. In molte applicazioni di database sono presenti tabelle che svolgono la funzione di code di lavoro da evadere in base alla disponibilità delle risorse. Grazie all'accodamento, il database può continuare a rispondere agli utenti interattivi ottimizzando l'utilizzo delle risorse disponibili. L'accodamento di Service Broker risulta un elemento essenziale di Motore di database.

L'accodamento consente a un'applicazione di operare in una transazione diversa rispetto a quella richiedente. Service Broker estende questo concetto e consente alle applicazioni di eseguire operazioni in un'altra istanza o in un altro computer. Service Broker inoltre agevola gli sviluppatori di database offrendo code predefinite all'interno del database e messaggistica transazionale affidabile tra le istanze.

Supporto di applicazioni a regime di controllo libero

Service Broker supporta le applicazioni a regime di controllo libero Tali applicazioni sono composte da più programmi che inviano e ricevono messaggi in modo indipendente tra loro. Devono contenere le stesse definizioni per i messaggi scambiati e definire la stessa struttura complessiva per l'interazione tra i servizi. Esse, tuttavia, non devono necessariamente essere in esecuzione contemporaneamente e all'interno della stessa istanza di SQL Servero condividere i dettagli di implementazione. Per un'applicazione non è necessario conoscere la posizione fisica o l'implementazione dell'altro partecipante alla conversazione.

Componenti di Service Broker

Service Broker dispone di tre tipi di componenti:

  • Componenti di conversazione. Gruppi di conversazioni, conversazioni e messaggi costituiscono la struttura di run-time di un'applicazione di Service Broker. Le applicazioni scambiano messaggi nel contesto di una conversazione. Ogni conversazione fa parte di un gruppo di conversazioni, ognuno dei quali può contenere più conversazioni. Le conversazioni di Service Broker sono dialoghi, ovvero coinvolgono esattamente due partecipanti. Per ulteriori informazioni sui componenti di conversazione, vedere Architettura delle conversazioni.
  • Componenti di definizione dei servizi. Si tratta di componenti della modalità progettazione che specificano la struttura di base delle conversazioni utilizzata dall'applicazione. Definiscono i tipi di messaggi, il flusso della conversazione e l'archiviazione nel database per l'applicazione. Per ulteriori informazioni sui componenti di definizione dei servizi, vedere Architettura dei servizi.
  • Componenti di rete e di protezione. Questi componenti definiscono l'infrastruttura per lo scambio di messaggi all'esterno di un'istanza di SQL Server. Per agevolare la gestione di ambienti soggetti a cambiamenti, Service Broker consente agli amministratori di database di configurare questi componenti in modo indipendente dal codice dell'applicazione. Per ulteriori informazioni sui componenti di rete e di protezione, vedere Funzionalità di rete e protezione remota.

Componenti di definizione dei servizi, componenti di rete e componenti di protezione fanno parte dei metadati per il database e l'istanza di SQL Server. Gruppi di conversazioni, conversazioni e messaggi fanno parte dei dati contenuti nel database.

Vedere anche

Concetti

Scalabilità di Service Broker

Altre risorse

Architettura di Service Broker
Service Broker Activation
Considerazioni sulla protezione relative a Service Broker
Esercitazioni su Service Broker

Guida in linea e informazioni

Assistenza su SQL Server 2005