同様の環境があり、3 つのシステム (アクセス、企業所有の SQL Azure、およびサードパーティの SQL Azure) を同期させています。Web サービスの統合から始めましたが、主にパフォーマンス上の理由から、より厳密な SQL から SQL へのレプリケーションに徐々に移行しています。私たちの実装は完全にカスタムで (SQL Server が提供する組み込みの同期サービスやレプリケーション サービスを使用していません)、基本的に BulkImport とセットベースのクエリを使用して同期します。
ウェブサービス
長所
- 疎結合 (正しく設計されている場合) であるため、一部が変更または交換された場合のリスク管理が向上します。
- アクセス制御の向上
- データベース上に構築された既存のアプリケーションとのより良い統合。
- 拡張性が高い。
短所
- 大量のデータを移動する場合、非常に遅くなる可能性があります。
- トランザクションとデータ処理は手動で処理する必要がありますが、実行できます。
SQL 統合
長所
- はるかに高いスループット。
- テーブル構造のマッピングが比較的簡単であれば、管理が容易になる可能性があります。
- トランザクション サポート。
短所
- テーブル全体を一掃したり、列全体を台無しにしたりするなど、大きな間違いを犯しやすい.
- セットベースのレプリケーション用に独自の統合を展開する必要がある場合、確実なエラー処理を構築するのは困難です。
- テーブルの構造が非常に異なる場合、つまりシステムのような EAV モデルの場合、システム間の緊密な統合は非常に困難になります。
選択肢があり、パフォーマンスに問題がなければ、私は間違いなく Web サービスを選択します。私たちの 3 つのシステムの性質は、テーブル構造が大きく異なるため、バックエンド テーブル構造を単純な POCO データ構造に抽象化して渡される Web サービスは、物事をより単純に保ちます。また、3 つのシステムのうちの 1 つは、キャッシュされたレコードや同時更新などを気にせずに「機能する」Web サービスを公開する Web サイトを駆動します。
現在、Web サービス統合でトランザクション更新を処理する方法は次のようになっています (サーバーは、より複雑で失敗する可能性が高い側である必要があります)。
- クライアントがサーバーへの接続を開始します。
- クライアントがローカル トランザクションを開始します。
- サーバーがローカル トランザクションを開始します。
- サーバーはリクエストを処理します。
- サーバーは、成功/失敗に基づいてローカル トランザクションをコミット/ロールバックします。
- サーバーは、成功/失敗およびエラー メッセージを含む応答を返します。
- クライアントが応答を処理します。
- クライアントは、成功/失敗に基づいてローカル トランザクションをコミット/ロールバックします。