6

私たちが構築することになっているアプリに対処するためのアプローチを調査するように依頼されました。このアプリは、仮想的には C# で記述された Windows フォームであり、接続されている場合はサーバーに直接コマンドを発行しますが、アプリがオフラインの場合は、接続されているかのように状態を維持し、同期してデータの変更/コマンドを発行する必要があります。接続さたサーバー。

どこから探し始めればよいかわかりません。これは Google Gears に似たものですが、Winform ルートを使用する場合、そのオプションはないと思います (アプリケーションが必要とする他の機能が Web アプリでは実行できないことを考えると、そうなる可能性が高いようです)。Microsoft Sync フレームワークは実行可能なオプションですか? Silverlight はこのようなことをしますか? 他のオプションはありますか?私は少しグーグルで調べましたが、シナリオを考えると何が最善かについてコミュニティの意見を求めています.

4

2 に答える 2

9

Microsoft Sync Framework は、あなたが説明したシナリオを確実にサポートしていますが、それを機能させるのはかなり複雑だと思います。

Sync Framework について理解しておくべきことの 1 つは、実際には 2 つのまったく異なるフレームワークが同じパッケージに含まれているということです。

  • 同期フレームワーク
  • ADO.NET 同期サービス v. 2

ADO.NET 同期サービスはセットアップが最も簡単ですが、2 つのリレーショナル データ ストアを同期するという制約があります (ただし、Web サービスを 2 つの間のリモート ファサードとしてセットアップすることはできます)。

コアの同期フレームワークにはそのような制限はありませんが、実装ははるかに複雑です。約 6 か月前に使用したとき、学ぶのに最適なソースは SDK、特にファイル/フォルダー同期のサンプル コードであることがわかりました。

私が知る限り、2 つの「フレームワーク」間でコードと型の共有はほとんどまたはまったくないため、どちらかを選択する必要があります。

いずれの場合も、同期コードをホストする方法に制約はないため、Windows フォームは多くの選択肢の 1 つにすぎません。

于 2009-09-30T19:18:21.917 に答える
2

私の理解が正しければ、これは、2 つのデータベースの同期を維持したい場合の実際のデータ同期の問題とは思えません。接続が不安定な環境でクライアントがサーバー上の関数を呼び出すための信頼できるメカニズムが必要であり、その時点で接続が存在しない場合は、接続が回復するとすぐに関数が呼び出されるようにする必要があるように思えます上。

私の理解が正しければ、これは1つのオプションです。そうでない場合、これはおそらく役に立たないでしょう。


これは詳細な問題に対する非常に短い回答ですが、同様の状況があり、これが対処方法です。

店舗の PC 上のデータを監視する必要があるクライアント アプリケーションがあります。特定のイベントが発生すると、このクライアント アプリケーションは本社のサーバーをリアルタイムで更新する必要があります。ただし、接続は 100% 信頼できるわけではないため、同様のメカニズムが必要でした。

これは、Web サービス経由でサーバーに書き込むことで解決しました。Web サービスの呼び出しでエラーが発生した場合、コマンドは "waiting to upload" という名前のフォルダーに XML ファイルとしてシリアル化されます。

n分ごとに設定されたタイマーで、クライアント アプリで実行されるルーチンがあります。タイマーが経過すると、このフォルダー内の XML ファイルがチェックされます。見つかった場合は、ファイルに保存されている情報を使用して Web サービスの呼び出しを試み、成功するまでこれを繰り返します。呼び出しが成功すると、XML ファイルは削除されます。

ハックのように聞こえますが、コーディングは簡単で、5 年間問題なく動作しています。実際、これは私たちの最もトラブルのないアプリケーションであり、他の場所でもパターンをうまく実装しています。

于 2009-09-30T19:24:02.137 に答える