Архитектура служб

В этом разделе описываются объекты баз данных, которые определяют основные принципы проектирования приложений, использующих компонент Service Broker.

На стадии разработки приложения компонента Service Broker определяют следующие объекты.

  • Типы сообщений — определяют имена сообщений, которыми обмениваются приложения. По выбору проверяют правильность сообщений.

  • Контракты— указывают направление движения и типы сообщений в данном диалоге.

  • Очереди— хранят сообщения. Этот механизм хранения реализует асинхронный обмен данными между службами. Очереди компонента Service Broker обеспечивают дополнительные преимущества, такие как автоматическая блокировка сообщений внутри одной группы сообщений.

  • Службы— это адресуемые конечные точки диалогов. Сообщения компонента Service Broker пересылаются из одной службы в другую службу. Служба указывает очередь для хранения сообщений, а также контракты, для которых данная служба может являться целью. Контракт предоставляет службе набор четко определенных типов сообщений.

Приложение компонента Service Broker использует перечисленные в вышеприведенном списке объекты SQL Server для осуществления диалога. Использовать компонент Service Broker может любая программа, способная выполнять инструкции Transact-SQL в SQL Server. Приложениями могут быть хранимые процедуры, написанные на Transact-SQL или на другом CLR-совместимом языке. В роли приложений могут выступать и внешние программы, подключаемые к экземпляру SQL Server.

На публикуемой ниже диаграмме показана служба компонента Service Broker.

Связь объектов компонента Service Broker

Как показано на этой иллюстрации, в контракте ProcessExpenses указываются три типа сообщений: SubmitExpense, AcceptDenyExpense и ReimbursementIssued. В контракте перечислены типы сообщений, необходимые для диалога, в ходе которого решается задача возмещения расходов. Контракт ProcessExpenses регулирует все диалоги между службой ProcessExpense и другими службами, инициирующими диалог со службой ProcessExpense. Служба ProcessExpense сохраняет все входящие и исходящие сообщения в очереди ExpenseQueue. Хранимая процедура ExpenseProcessing получает сообщения из этой очереди, обрабатывает их и возвращает сообщения в ту же очередь для маршрутизации на соответствующий брокер, если требуется ответ.

В этом разделе

  • Типы сообщений
    Участники диалога должны прийти к соглашению относительно имени и содержимого каждого сообщения. Имена и содержимое определяются типом сообщения.

  • Контракты
    Контракт определяет тип сообщений, которые приложение использует для выполнения конкретной задачи.

  • Очереди
    В очередях хранятся сообщения компонента Service Broker.

  • Службы
    Службами компонента Service Broker предоставляются имена для конкретных бизнес-задач или наборов бизнес-задач.