管理者専用の画面を必要とするクライアント サーバー ベースの Windows フォーム アプリケーションがあります。管理者機能は、常に 1 人の管理者だけがその画面にアクセスできるように実装する必要があります。Windows フォーム クライアント アプリケーションは、.NET Remoting を使用してサーバーと通信します。また、サーバー側は複数のマシンに分散されています。
2 に答える
これは、DB テーブルを使用することで最も簡単に実行できます。通常、DB はすでにフォールト トレラントであり、共有ロック シナリオで使用する安全なリソースです。ロックされたリソースに関する情報、誰がいつそれを持っているかなどを含むロックテーブルを用意するだけです。
市場に出回っているさまざまな「状態サーバー」のいずれかを使用して、ロック状態を保存することもできます。ただし、新しい分散状態テクノロジのいずれかに投資しない限り、これは障害点をもたらします。
しかし、あなたは実際にさらなる問題に備えています。ロック解除を強制したり、ロックを持っている人を表示したりできるようにする画面が必要です。このロックが本当に必要な理由を確認するのが最善です。それはテクノロジーまたはビジネス要件ですか? ユーザー エクスペリエンスを向上させる悲観的なデータ更新シナリオをより簡単かつ明確に実装できます。
ウィンドウが現在使用中かどうかを示す静的メンバーをサーバー上に保持する必要があります。値を設定するときにlock()関数を使用して、スレッドセーフであることを確認してください。その後、管理画面を表示する前にその値を確認できます。
サーバー側に関しては、複数の PC に存在するとおっしゃっています。これは、1 つの仮想サーバーとして動作する負荷分散型のトポロジですか? その場合、値をデータベースに永続化する必要がある場合があります。ASP.Net がSession Stateを永続化するのと同じように考えてください。サーバー上に存在できますが、サーバー ファームがある場合は、すべてのサーバーで使用できるように SQL Server に移動できます。