マージ同期中のビジネス ロジックの実行

ビジネス ロジック ハンドラ フレームワークを使用すると、マネージ コードのアセンブリを記述して、マージ同期処理中に呼び出すことができます。このアセンブリには、データの変更、競合、およびエラーなど、同期中に発生するさまざまな状況に対処するためのビジネス ロジックを記述できます。ビジネス ロジック ハンドラ フレームワークには単純なプログラミング モデルが用意されており、マージ処理によってアセンブリに提供されるデータは ADO.NET データセットの形式になっています。このため、専用インターフェイスについての知識ではなく ADO.NET についての知識を活用できます。ビジネス ロジック ハンドラのプログラミングの詳細については、以下のトピックを参照してください。

ビジネス ロジック ハンドラの用途

マージ同期処理では、ビジネス ロジック ハンドラを呼び出して、以下の操作を実行できます。

  • カスタム変更処理

  • カスタム競合解決

  • カスタム エラー解決

注意

指定するビジネス ロジック ハンドラは、同期されるすべての行に対して実行されます。その他のアプリケーションまたはネットワーク サービスに対する複雑なロジックおよび呼び出しは、パフォーマンスに影響を与える可能性があります。

カスタム変更処理

ビジネス ロジック ハンドラは、競合していないデータの変更処理中に呼び出すことができ、次の 3 つの操作のいずれかを実行できます。

  • データの拒否

    特定のサブスクライバからの変更または特定のサブスクライバへの変更を反映したくないアプリケーションに役立ちます。たとえば、管理者は、サブスクライバのパーティション内に属さない挿入をフィルタ処理によって拒否したり、場合によってはサブスクライバで実行された削除を拒否することができます。別の例としては、在庫が不足している場合に、サブスクライバで入力された注文をアプリケーションが拒否できます。

  • データの受け入れ

    これは、パブリッシャまたはサブスクライバで行われたデータの変更を反映する前に確認を行う必要があるアプリケーションに役立ちます。たとえば、中間層アプリケーションでは、フィールドから送られてきた新しい注文を検証し、中間層で調達ワークフロー プロセスと統合することができます。

  • カスタム データの適用

    これは、特定のデータの値または操作を上書きする必要があるアプリケーションに役立ちます。たとえば、アプリケーションでは、行の削除を、その行の status 列を "削除" の値に設定するという特殊な更新方法に変更して、その削除を実行するクライアントの ID を追跡することができます。これは、監査やワークフローにも役立ちます。

カスタム競合解決

マージ レプリケーションには、競合の検出機能と解決機能が用意されており、既定の解決方法を受け入れるか、競合に対するカスタム解決方法を選択することができます。詳細については、「マージ レプリケーションの競合検出および解決の詳細」を参照してください。ビジネス ロジック ハンドラは、競合しているデータの変更処理中に呼び出すことができ、次の 2 つの操作のいずれかを実行できます。

  • 既定の解決の受け入れ

    これは、競合の確認や追加アクションの実行、場合によってはカスタム競合ログ メッセージのログ記録などを行う必要があるアプリケーションに役立ちます。

  • カスタム解決の実行

    これは、ビジネス ロジックに固有のデータ値を選択し、このカスタム データセットを使用した同期処理を提供する必要があるアプリケーションに役立ちます。たとえば、アプリケーションで、パブリッシャとサブスクライバのデータセットの値を組み合わせることにより、優先される行の新しいバージョンを提供することができます。

カスタム エラー解決

カスタム ロジックは、結果的にエラーが発生する変更の反映中に呼び出すことができます。このロジックは、次の 2 つの操作のいずれかを実行できます。

  • 既定のエラー解決の受け入れ

    これは、エラーの確認や追加アクションの実行、場合によってはカスタム エラー ログ メッセージのログ記録などを行う必要があるアプリケーションに役立ちます。

  • カスタム エラー解決の受け入れ

    これは、ビジネス ロジックに固有のデータ値を選択し、このカスタム データセットを使用した同期処理を提供する必要があるアプリケーションに役立ちます。たとえば、レプリケーション処理で重複キー違反が発生した場合、ビジネス ロジック ハンドラによって、キーの競合がなくなる新しいバージョンのデータ変更を提供することができます。パブリッシャとサブスクライバで行われた変更は、データベースで保持することができます。レプリケーション プロセスは、失敗した挿入に対して削除による補正を行う必要はありません。

ビジネス ロジック ハンドラの配置シナリオ

ビジネス ロジック ハンドラは、以下の場所に配置できます。

  • ディストリビュータ。ディストリビュータでビジネス ロジックが実行されるように、プッシュ サブスクリプションを使用します。

  • サブスクライバ。サブスクライバでビジネス ロジックが実行されるように、プル サブスクリプションを使用します。

  • インターネット インフォメーション サービス (IIS) サーバー (Web 同期を使用する場合)。Web 同期を使用して同期されたプル サブスクリプションを使用します。ビジネス ロジック ハンドラが IIS サーバーで実行されます。