Contratti

Si applica a:SQL ServerIstanza gestita di SQL di Azure

Un contratto definisce i tipi di messaggio usati da un'applicazione per eseguire un'attività specifica. Un contratto è un accordo tra due servizi sui messaggi inviati da ciascun servizio per eseguire un'attività specifica. Le definizioni di contratto vengono mantenute nel database in cui viene creato il tipo.

Si crea un contratto identico in ogni database che partecipa a una conversazione. Ad esempio, se un'applicazione delle risorse umane vuole verificare un ID dipendente, il servizio che richiede la verifica deve conoscere i tipi di messaggi previsti dall'altro servizio. Il servizio richiedente deve anche conoscere i tipi di messaggi che può aspettarsi di ricevere in modo da essere pronto a elaborarli.

Il contratto specifica i tipi di messaggio che possono essere utilizzati per eseguire il processo desiderato. Il contratto specifica anche quale partecipante della conversazione può usare ciascun tipo di messaggio. Alcuni tipi di messaggio possono essere inviati da entrambi partecipanti, altri tipi di messaggio sono limitati per essere inviati solo dall'iniziatore o dalla destinazione. Un contratto deve contenere un tipo di messaggio inviato dall'iniziatore o un tipo di messaggio inviato da uno dei partecipanti. In caso contrario, non esiste alcun modo per l'iniziatore di avviare una conversazione che usa il contratto.

Service Broker include anche un contratto predefinito denominato DEFAULT. che contiene solo il tipo di messaggio SENT BY ANY. Se non viene specificato alcun contratto nell'istruzione BEGIN DIALOG, Service Broker usa il contratto DEFAULT.

Ad esempio, per un contratto è possibile specificare i tipi di messaggi SubmitRequest, ProcessRequest e RequestStatus. Solo l'endpoint di avvio può usare SubmitRequest e solo l'endpoint di destinazione può inviare ProcessRequest. Entrambi i partecipanti alla conversazione possono inviare il tipo di messaggio RequestStatus. Il tipo di messaggio RequestStatus consente al partecipante di visualizzare lo stato di elaborazione della destinazione o di verificare con l'initiator lo stato di qualsiasi operazione di elaborazione parallela relativa alla richiesta.

Vedi anche