2

おはよう/午後/夕方!

CRM (カスタマイズされた SplendidCRM) と自家製モンスター (crm+cms+backoffice) の 2 つのシステムがあります。

  1. CRM - Asp.Net 2.0 Web サイト、Sql Server 2008; ビュー、ストアド プロシージャ、トリガーを使用して実装。たとえば、監査はトリガー + SP として実装されます。WebSite はシンプルな UI です。Ado DataSet は Dtos として使用されます
  2. 自家製モンスター - Asp.Net 3.5 WebApplication、SqlServer 2008; ListToSql を使用して実装。Sql サーバーはストレージとしてのみ使用されます。c# コードで実装されたすべてのロジックと監査。VS のデザイナーが生成したクラスは、Dtos として使用されます。

それらの間に「二重」同期を実装する必要があります。

object is updated in Crm -> changes are applied in home-brewed monster
object is updated in home-brewed monster -> changes are applied in Crm

同期は「ほぼリアルタイム モード」で動作する必要があります。遅延は許容されます。多くのデータはありません。現在、約 35000 オブジェクトと 120000 監査エントリがあり、最大で 100000 オブジェクトになる可能性があります。オブジェクトも大きくありません (データベースの 60 列)。

どちらのシステムにも、更新を可能にする API があります。Crm 用の Web サービスと自家製モンスター用の Wcf サービスです。モンスターのため、実装の変更は Wcf サービスを介してのみ適用できます (監査が機能するためなど)。Crmについては、Webサービス呼び出しまたは直接SP呼び出しによって更新できます(ただし、Webサービスが望ましいです)。

現在、Crm にはオブジェクトの外部 ID を保持する列があり、一種の同期がありますが、より堅牢で専門的なソリューションが必要です。

何らかの理由 (管理者の失敗または間違った更新プログラムの適用) により、両方のシステムが「オフライン」になることがあります。これは同期には影響しません。システムが復旧したらすぐにすべての更新を適用する必要があります。自家製のモンスターからのデータが優先され、Crm からの変更を上書きすることが重要です。

問題は、どのテクノロジ/ライブラリを使用するのが適切かということです。同期を「システム外」で行うことができればよいでしょう (システムはデータが変更されたというイベントを発生させ、外部ツールは変更を同期します)。これはシステムによるものであり、同期ルールは頻繁に変更される可能性があります。たとえば、ある条件で Crm からオブジェクトを削除する最初の「バージョン」の同期、2 番目のバージョンでは削除せずにエクスポートするデータが少なく、「3 番目のバージョン」ではより多くのデータがエクスポートされます。両方のシステムに共通のフィールドが追加されました。この変更は将来表示されるため、他のシステム (またはそれら以外) には触れず、同期ルールのみを変更したいと思います。

4

2 に答える 2

0

アプリケーションの同期について話していることは知っていますが、SQL Server を使用してデータを同期することだけを考えたほうがよいかもしれません (IMHO)。これは、トリガー、ジョブ、および/またはパッケージで行うことができます。

トリガーを使用すると、変更が発生したときに (IE: リアルタイムで) 「同期」することができますが、他の変更はおそらく遅れます。

これはすべて、データベースが配置されている環境 (IE: 同じサーバー、2 つの異なるサーバー) と、独自の「同期」プロセスを作成する際の快適さによって異なります。

編集:

アプリケーション ベースの同期を使用する必要があると本当に考えている場合は、独自のソリューションを展開する方がよいでしょう。2 つのアプリケーションの高度にカスタマイズされた性質を考えると、必要な方法で動作するものを見つけるのは難しいかもしれません。

この場合、Entity Framework と LINQ を使用した単純な古い .net を使用することになるでしょう。

于 2011-05-11T14:36:25.477 に答える
0

Microsoft Sync Frameworkを調べてみるとよいかもしれませんが、しばらく使用した後で個人的にお勧めできるかどうかはわかりません。Sync Orchestrator を使用して 2 つ以上のシステムの間に配置されるため、要件に適合するように思えます。

于 2011-05-11T14:04:28.217 に答える