質問を読み直しましたが、すべてのクライアント システムにローカル IIS とローカル データベースがインストールされていることがわかりました。
したがって、解決策は非常に簡単です。
アプリケーション (メイン フォーム)
- Windows フォーム アプリケーションを作成します。
- WebBrowser コントロールと StatusStrip コントロールをフォームに配置します。
- LocalStartUrl と OnlineStartUrl という名前の 2 つの文字列リソースを追加します。これは、ローカルおよびオンラインの Web サイトのホーム/スタートアップ ページのアドレスを保持します。
- Form_Load で、オンラインのインターネット接続を確認し、それに応じて Web ブラウザー コントロールで LocalStartUrl または OnlineStartUrl を起動します。メッセージボックスを表示し、ステータスバーを使用してユーザーに同じことを通知できます。
同期モジュール:
データベース同期モジュールはタイマー/個別スレッドで実行され、ローカル データベースとオンライン データベースをバックグラウンドで同期します。保存されていない変更をサーバーに送信し、不足しているデータをサーバーからローカル データベースにダウンロードします。このモジュールの速度を制御して、ユーザーが他の Web サイトを閲覧したり、アプリケーションをスムーズに使用したりするのに問題が生じないようにする必要があります。モジュールは遅くて安定しており、一度に小さなデータのチャンクのみを送信/要求する必要があります。
オフライン モードの場合は、一定の間隔で定期的にオンライン接続をチェックします。インターネット接続が見つかるとすぐに、ユーザーに通知されます。許可されると、オンライン モードに切り替わります。そうしないと、ユーザーは、アプリケーションを閉じて再度起動するまで、オフラインで作業を続けます。
オンライン モードでは、同期モジュールはオンライン データベースとの間でデータを同期します。ユーザーはこのデータベースに接続されていないため、これは影響しません。代わりに、オンラインの Web サイトとデータベースに接続されています。
このアプローチを合理化するには努力が必要ですが、最終的には簡単に達成できます。