3

データベースに接続し、マルチユーザーモードで使用できるアプリケーションがあります。これにより、複数のコンピューターが同じデータベースサーバーに接続して、データを表示および変更できます。クライアントの1つは、常に「マスター」クライアントとして指定されます。このマスターは、R​​S232またはUDP入力からテキスト情報を受信し、このデータを1秒ごとにローカルマシンのテキストファイルに記録します。

私の問題は、他のクライアントがマスタークライアントからこのデータにアクセスする必要があるということです。私はこの問題を解決するために進むための最良かつ最も効率的な方法を考えています。私は2つのオプションを検討しています:

  1. フォルダー同期クラスを作成して、リモート(マスター)コンピューター上のフォルダーをローカル(クライアント)コンピューター上のフォルダーと同期します。これは、スレッド化されたバッファファイルコピールーチンになります。
  2. クライアント/サーバーを実装して、マスターコンピューターがこのデータを接続してデータを要求するすべてのクライアントに提供できるようにします。マスターは、TCP/UDPを介してファイルを要求元のクライアントに送信します。

ソリューションでは、次のことを考慮に入れる必要があります。

a。ログファイルは毎秒書き込まれます。潜在的なファイルロックの問題を回避する必要があります。

b。コピールーチンは、クライアントマシンにすでに存在するファイルよりも後日変更されたファイルのみをコピーする必要があります。

c。できるだけ効率的にする

d。すべてのマシンはLAN上にあります

e。同期は、たとえば10分程度ごとに実行するだけで済みます。

f。データ量は約50MB程度ですが、最初の(最初の)同期が完了すると、転送するデータ量は約1MBになります。これは将来増加します

どちらを使用するのが良いですか?長所/短所は何ですか?使用を検討しているFastFileCopyの投稿も見ました。

4

4 に答える 4

6

データベースを使用している場合、データを共有する必要がある場合、「マスター」がデータベースではなくテキスト ファイルにデータを書き込むのはなぜですか?

于 2011-07-05T14:36:03.933 に答える
3

なぜ車輪を発明したのですか?代わりにrsyncを使用してください。Windows 用パッケージ: cwrsync .

たとえば、マスター マシンに rsync サーバーをインストールし、クライアント マシンに rsync クライアントをインストールするか、単にファイルをプロジェクト ディレクトリにドロップします。クライアント マシン上のアプリケーションは、必要に応じてrsync.exe を実行し、必要なファイルをサーバーから同期するように要求します。

開いているファイルをコピーするには、Windows ボリューム シャドウ コピー サービスをセットアップする必要があります。ここでは、Windows ボリューム シャドウ コピーを使用して開いているファイルをコピーできるようにマスター マシンをセットアップする方法について、非常に詳細に説明します。

于 2011-07-05T16:29:18.850 に答える
2

クライアントがサーバーに接続し、必要に応じて新しいデータをプルできるように、Webサービスインターフェイスを記述します。または、サブスクライブ/プッシュメカニズムとして記述して、クライアントがサーバーに接続し、「サブスクライブ」してから、サーバーがすべての新しいコンテンツを登録済みクライアントにプッシュするようにすることもできます。クライアントは、更新が発生したときにオフラインだった場合に備えて、登録時に完全に同期する(最後の同期以降のすべての変更を取得する)必要があります。

于 2011-07-05T13:31:57.653 に答える
1

どちらのソリューションもLAN上で問題なく機能しますが、選択はあなた次第です。選択したテクノロジーに関連するこれらの問題も検討することをお勧めします。

  • 展開の柔軟性。ファイル共有とファイルコピーを使用するには、ファイル共有が機能する必要があり、すべてのLANユーザーがログファイルにアクセスできる可能性があります。
  • 長期計画:ファイル共有はローカルネットワークでのみ有効ですが、IPベースのソリューションはインターネットなどのルーティングされたネットワークで機能します。
  • ファイルベースのソリューションは、IPソリューションと比較して実装が大幅に簡単になります。
于 2011-07-05T13:32:04.613 に答える