Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Istanza gestita di SQL di Azure
Un'applicazione usa Service Broker eseguendo istruzioni Transact-SQL che operano sugli oggetti Service Broker definiti in un database. In questa sezione vengono descritte considerazioni generali per la creazione di oggetti di Service Broker per un'applicazione.
Panoramica
Gli oggetti di Service Broker definiscono i metadati e l'archiviazione per un set specifico di attività:
I tipi di messaggio definiscono i dati scambiati in una conversazione.
I contratti definiscono le attività. Ogni contratto specifica i tipi di messaggio che possono essere usati in una specifica conversazione e quale lato della conversazione può inviare il messaggio.
Una coda archivia i messaggi in ingresso per un servizio.
Un servizio rappresenta un set correlato di attività commerciali. Il nome del servizio viene usato anche per individuare la coda per il servizio.
Un contratto dipende da uno o più tipi di messaggio. Un servizio dipende da una coda e può dipendere da uno o più contratti. Perciò i contratti vengono creati dopo i tipi di messaggio ed eliminati prima dei tipi di messaggio. I servizi vengono creati dopo le code e i contratti ed eliminati prima delle code e dei contratti.
- Per altre informazioni su questi oggetti, vedere Architettura della conversazione.
Creare oggetti per un servizio
La procedura per la creazione di un servizio segue la stessa struttura di base indipendentemente dal fatto che il servizio sia un servizio di origine, di destinazione o entrambi.
La definizione di un servizio specifica i contratti per cui il servizio può essere una destinazione. mentre un'applicazione può usare un servizio per avviare una conversazione che usa qualsiasi contratto definito nel database. Service Broker usa questo approccio per applicare la regola generale per cui un servizio deve ricevere solo messaggi che l'applicazione è in grado di elaborare. Per assicurarsi che l'applicazione non riceva messaggi di un tipo arbitrario o sconosciuto, Service Broker accetta una nuova finestra di dialogo solo se la finestra di dialogo segue un contratto specificato nel servizio. Un servizio di avvio specifica il contratto da usare all'inizio della conversazione, pertanto un servizio di avvio non deve includere il contratto nella definizione del servizio.
Se si desidera creare gli oggetti per un servizio, eseguire queste operazioni:
Creare i tipi di messaggio, che definiscono i messaggi che il servizio usa per eseguire qualsiasi comunicazione richiesta. È possibile definire manualmente questi tipi o ottenere script per creare i tipi dall'autore del servizio con cui il servizio comunicherà. Ignorare questo passaggio se il database contiene già i tipi di messaggio necessari per il servizio.
Creare uno o più contratti che definiscono la struttura delle conversazioni in cui questo servizio può partecipare. È possibile definire il contratto manualmente o ottenere script per creare il contratto dall'autore del servizio con cui il servizio comunicherà. Ignorare questo passaggio se il database contiene già i contratti necessari per il servizio.
Creare una coda. Service Broker usa questa coda per ricevere e archiviare i messaggi in arrivo per il servizio. Per altre informazioni sulla creazione di code, vedere CREATE QUEUE. Ogni servizio deve avere una coda. Per semplificare la programmazione e l'amministrazione, ogni servizio usa in genere una coda specifica. Se il servizio richiede la conservazione dei messaggi, specificarla per la coda.
Creare un servizio. La definizione del servizio specifica la coda usata e i contratti per i quali il servizio è la destinazione.
Nella maggior parte dei casi, si crea il servizio di destinazione e quindi si usano i contratti e i tipi di messaggio creati per creare un servizio di origine. In alcuni casi, tuttavia, è possibile creare un servizio di destinazione per un servizio di avvio già definito. In questi casi, il servizio di destinazione usa i tipi di messaggio e i contratti usati dal servizio di origine. Ad esempio, se si sta creando un servizio di destinazione per ricevere notifiche degli eventi, si usa il contratto https://schemas.microsoft.com/SQL/Notifications/PostEventNotification, perché si tratta del contratto usato dal servizio di avvio.
Gestire le definizioni degli oggetti
È consigliabile creare uno script di Transact-SQL per gli oggetti di Service Broker usati dall'applicazione. Questo script Transact-SQL consente di fare riferimento in modo semplice alle specifiche degli oggetti di Service Broker usati, Lo script consente inoltre di distribuire il servizio in un sistema diverso o di ricrearlo, se necessario.
Se l'applicazione prevede l'invio di messaggi tra istanze di SQL Server, è consigliabile creare uno script che definisce i tipi di messaggio e i contratti per il servizio e un secondo script che definisce la coda e il servizio. Il primo script definisce l'interfaccia per il servizio, gli oggetti comuni sia al servizio di origine che al servizio di destinazione. Il secondo script definisce il nome del servizio e la coda, ovvero gli oggetti di un lato della conversazione.
In questa sezione
| Article | Description |
|---|---|
| Creare tipi di messaggio di Service Broker | Vengono descritti i tipi di messaggio e il modo in cui vengono usati. |
| Creare contratti di Service Broker | Descrive i contratti e il modo in cui vengono usati. |
| Creare code di Service Broker | Vengono descritte le code e il modo in cui vengono usate. |
| Creare servizi di Service Broker | Descrive i servizi e il modo in cui vengono usati. |
| Assegnare un nome agli oggetti service broker | Fornisce considerazioni sulla denominazione degli oggetti del broker di servizi. |
| Esempio di script di servizio | Viene illustrato un esempio di codice Transact-SQL e viene definito un servizio. |