Architettura dei servizi

In questa sezione vengono illustrati gli oggetti di database che definiscono la struttura di base di un'applicazione che utilizza Service Broker.

In fase di progettazione nelle applicazioni di Service Broker vengono specificati gli oggetti seguenti:

  • Tipi di messaggi - Definiscono i nomi dei messaggi scambiati tra applicazioni. Eseguono facoltativamente la convalida dei messaggi.

  • Contratti- Specificano la direzione e il tipo di messaggi in una data conversazione.

  • Code- Archiviano i messaggi. Questo meccanismo di archiviazione consente la comunicazione asincrona tra servizi. Le code di Service Broker forniscono vantaggi aggiuntivi, ad esempio il blocco automatico dei messaggi nello stesso gruppo di conversazioni.

  • Servizi - Endpoint indirizzabili per le conversazioni. I messaggi di Service Broker vengono inviati da un servizio a un altro. Un servizio specifica una coda in cui inserire i messaggi e i contratti per i quali il servizio può svolgere la funzione di destinazione. Un contratto fornisce a un servizio un set di tipi di messaggi ben definito.

Un'applicazione di Service Broker utilizza gli oggetti di SQL Server descritti nell'elenco precedente per eseguire una conversazione. Service Broker può essere utilizzato da qualsiasi programma in grado di eseguire istruzioni Transact-SQL in SQL Server. Le applicazioni possono essere costituite da stored procedure scritte in Transact-SQL o in un linguaggio compatibile con CLR oppure da programmi esterni che si connettono a un'istanza di SQL Server.

Nel diagramma seguente è illustrato un servizio di Service Broker:

Relazioni tra gli oggetti di Service Broker

Come illustrato nella figura, il contratto ProcessExpenses specifica tre tipi di messaggi: SubmitExpense, AcceptDenyExpense e ReimbursementIssued. Nel contratto sono elencati i tipi di messaggi necessari per una conversazione che esegue un'attività di rimborso spese. Il contratto ProcessExpenses regola tutte le conversazioni tra il servizio ProcessExpense e un servizio che avvia una conversazione con il servizio ProcessExpense. Il servizio ProcessExpense archivia i messaggi in arrivo e in uscita nella coda ExpenseQueue. La stored procedure ExpenseProcessing riceve i messaggi da questa coda, li elabora e se è necessaria una risposta li restituisce alla coda per il routing all'istanza di Service Broker appropriata.

Contenuto della sezione

  • Tipi di messaggi
    I partecipanti a una conversazione devono concordare il nome e il contenuto di ogni messaggio. I tipi di messaggio definiscono nomi e contenuto.

  • Contratti
    I contratti definiscono i tipi di messaggi utilizzabili da un'applicazione per completare un'attività particolare.

  • Code
    Le code archiviano i messaggi di Service Broker.

  • Servizi
    I servizi di Service Broker sono nomi per attività aziendali o set di attività aziendali specifici.