合約
合約定義了應用程式會使用何種訊息類型來完成特定工作。合約是兩個服務之間有關各個服務傳送何種訊息來完成特定工作的協定。合約定義保存於建立類型的資料庫中。
您可以在參與交談的各資料庫中建立相同的合約。例如,如果人力資源應用程式想要確認員工識別碼,則要求驗證的服務必須知道另一個服務需要的訊息類型。要求的服務還必須知道它預期會接收到的訊息類型,以便準備處理它們。
合約會指定何種訊息類型可用於完成所需的工作。合約還會指定交談中的哪方參與者可使用每個訊息類型。某些訊息類型可由各方參與者傳送,而其他訊息類型則僅限由起始端或目標傳送。合約必須包含由起始端傳送的訊息類型或由各方參與者傳送的訊息類型。否則,起始端將無法開始使用此合約的交談。
Service Broker 也包含名為 DEFAULT 的內建合約。DEFAULT 合約只包含訊息類型 SENT BY ANY。如果 BEGIN DIALOG 陳述式中未指定合約,則 Service Broker 會使用 DEFAULT 合約。
例如,合約可具有的訊息類型包括:SubmitRequest、ProcessRequest 和 RequestStatus。只有起始端點可使用 SubmitRequest,而只有目標端點可傳送 ProcessRequest。交談的各方參與者都可傳送 RequestStatus 訊息類型。RequestStatus 訊息類型可讓參與者在其處理期間查看目標在何處,或檢查起始端與此要求相關之任何平行處理的狀態。