1

アーキテクチャを結合されたものから疎結合の SOA (WCF) に移行しています。相互に通信するいくつかのサービスがあります。サービス間でビジネス インスタンスをどのように同期しますか?

ここには 2 つのシナリオがあります。

  1. すべてのビジネス オブジェクトは 1 つのサービスでのみ作成されます。それをMainServiceと呼びましょう。オブジェクトに加えられたすべての変更にアクセスできる唯一のサービスです。このサービスは、データベース内のオブジェクトの更新を担当します。オブジェクトが更新されると、通知が発生します。他のサービスは、必要なイベントに登録し、それに応じて通知を受け取ります。私はこれを集中型アプローチと呼んでいます。

    + 変更が行われるとすぐにサービスに通知する
    - サービス間の呼び出しが多い。
    - より多くのカップリング。

  2. すべてのサービスは、必要なオブジェクトをロードし、データベースに加えられた変更を定期的に監視します。私の考えは、SQL Server 2008 の変更追跡を使用して、オブジェクトに加えられた変更を検出することでした。

    + トラフィックが少なくなり、サービス間の通信の問題が発生する可能性があります。
    + 低結合
    - 定期的な監視による遅延。

それで、これについてあなたの答えは何ですか?(3、4等があれば・・・それもいいですね)

4

2 に答える 2

1

サービス間でビジネス インスタンスを同期する必要があるのはなぜですか? サービスがまだ十分に疎結合されていないように思えます。

于 2009-10-23T15:50:13.647 に答える
0

最初のオプションでは、メイン サービスが単一障害点になり、パフォーマンスのボトルネックになります。

2 番目の方法では、情報を得るために多くの不必要なポーリングを行う危険があります。

3 番目の提案は次のようになります。

各サービスに独自のデータベースがある場合は、データベース レプリケーションを使用して、データが作成されたサービスから、それが使用されている他のサービスにデータを移動できます。

編集

あなたのコメントに基づいています。データベース バッキング ストアで Enterprise Library Caching を試すことができます。そうすれば、メモリ内にデータが保持されますが、データベース内の値が更新されると更新されます。

于 2009-10-23T15:47:09.300 に答える