Выполнение бизнес-логики при синхронизации слиянием
Область применения: SQL Server
Платформа обработчика бизнес-логики всегда доступна для добавления сборки управляемого кода, который выполняется во время процесса синхронизации слиянием. Сборка включает бизнес-логику, которая может учитывать ряд условий во время синхронизации: изменения данных, конфликты и ошибки. Платформа обработчика бизнес-логики предоставляет простую программируемую модель; данные, которые процесс слияния предоставляет для вашей сборки, находятся в форме набора данных ADO.NET, поэтому удобнее эффективно использовать знание ADO.NET, чем изучать патентованный интерфейс. Дополнительные сведения о программируемых обработчиках бизнес-логики см. в следующих источниках:
Справочник по программным интерфейсам (API): Microsoft.SqlServer.Replication.BusinessLogicSupport
Инструкции по реализации обработчика бизнес-логики: Реализация обработчика бизнес-логики для статьи слияния
Применения обработчиков бизнес-логики
Процесс синхронизации слиянием может вызывать обработчики бизнес-логики для выполнения следующих задач:
обработка пользовательских изменений;
устранение пользовательских конфликтов;
разрешение пользовательских ошибок.
Примечание.
Указанный обработчик бизнес-логики выполняется для каждой синхронизируемой строки. Сложная логика и вызовы других приложений или сетевых служб могут влиять на производительность.
обработка пользовательских изменений;
Обработчик бизнес-логики может вызываться во время обработки бесконфликтных изменений данных и может выполнять одно из трех действий:
Отклонить данные
Это применимо для приложений, которые не распространяют изменения на данный подписчик или от него. Например, администратор может отфильтровывать вставки, не относящиеся к секции подписчика, или отклонять удаления, выполненные на подписчике. Другой пример: приложение может отклонить заказ, введенный на подписчике, потому что материально-производственные запасы более не доступны.
Принять данные
Это применимо для приложений, в которых изменения данных, сделанные либо на издателе, либо на подписчике, необходимо просмотреть перед распространением. Например приложение промежуточного уровня может проверять новые заказы, поступающие из отрасли, и интегрировать их с рабочим процессом в промежуточном процессе обработки.
Применить пользовательские данные
Это применимо для приложений, которые нуждаются в переопределении конкретных значений данных или операций. Например приложение может преобразовать строковое удаление в специальное обновление, которое устанавливает для столбца status в строке значение «удалено», и затем отслеживает идентификатор клиента, выполняющего удаление. Это может оказаться удобным для проведения аудита или отслеживания рабочего процесса.
устранение пользовательских конфликтов;
Репликация слиянием обеспечивает обнаружение и разрешение конфликтов, позволяет принять стратегию разрешений по умолчанию или выбрать пользовательское разрешение конфликтов. Дополнительные сведения см. в разделе Advanced Merge Replication Conflict Detection and Resolution. Обработчик бизнес-логики может вызываться в течение обработки конфликтующих изменений данных и может выполнять одно из двух действий:
Принять разрешение по умолчанию
Это действие может использоваться для приложений, нуждающихся в просмотре конфликта, выполнении дополнительных действий и, возможно, записи в журнал сообщения о пользовательском конфликте.
Выполнить пользовательское разрешение
Это действие может понадобиться для приложений, которым нужно выбрать значения данных, относящиеся к их бизнес-логике, и обеспечить процесс синхронизации пользовательским набором данных. Например, приложение может предоставлять новую версию предпочтительной строки путем объединения значений из наборов данных издателя и подписчика.
разрешение пользовательских ошибок.
Пользовательская логика может вызываться во время распространения изменений, которые заканчиваются ошибками. Логика может выполнять одно из двух действий:
Принять разрешение ошибок по умолчанию
Это действие применимо для приложений, которые могут нуждаться в просмотре ошибки, выполнении дополнительного действия и, возможно, записи в журнал сообщения о пользовательской ошибке.
Принять пользовательское разрешение ошибок
Это действие может понадобиться для приложений, которым нужно выбрать значения данных, относящиеся к их бизнес-логике, и обеспечить процесс синхронизации пользовательским набором данных. Например если процесс репликации обнаруживает нарушение повторяющихся ключей, обработчик бизнес-логики может предоставить новую версию изменений данных, в которой ключ не будет вступать в конфликт. Изменения, сделанные на издателе или подписчике, могут затем сохраняться в базе данных, и процессу репликации не нужно будет исправлять ошибочные вставки с помощью удаления.
Сценарии развертывания для обработчиков бизнес-логики
Обработчики бизнес-логики могут развертываться на:
Распространитель. Используйте принудительную подписку с тем, чтобы бизнес-логика выполнялась на распространителе.
Подписчик. Используйте подписку по запросу с тем, чтобы бизнес-логика выполнялась на подписчике.
Сервер служб Internet Information Services (IIS), если используется веб-синхронизация. Используйте подписку по запросу, синхронизированную с помощью веб-синхронизации, и обработчик бизнес-логики будет выполняться на сервере IIS.