リモート オフィスを中央データベースに接続する方法を知りたいです。
シナリオは次のとおりです。
複数のユーザーが Windows デスクトップ アプリケーションで作業している Office
このアプリケーションは、オフィス サーバーのデータベースからデータを取得します。
現在、1 つ以上のリモート (オフィス、店舗など) が同じデータにアクセスする必要があります。
どうすればこれを達成できますか?
時にはリアルタイムが必要です
それほど重要ではない場合もあります。
リモート オフィスを中央データベースに接続する方法を知りたいです。
シナリオは次のとおりです。
複数のユーザーが Windows デスクトップ アプリケーションで作業している Office
このアプリケーションは、オフィス サーバーのデータベースからデータを取得します。
現在、1 つ以上のリモート (オフィス、店舗など) が同じデータにアクセスする必要があります。
どうすればこれを達成できますか?
時にはリアルタイムが必要です
それほど重要ではない場合もあります。
セキュリティのために、クライアントとデータベースの間にある種の中間層が必要です。データベースをインターネットに直接公開することは非常に危険です。SOAP は広く採用されているため、多くのアプリケーションがこのシナリオで SOAP を使用します。SOAP サービスを作成し、プロトコルと関数を定義すると、クライアントがそれを呼び出します。他のオプションは、同じことを行うRESTベースのサービス/サーバーを作成するか、プレーンなTCP / IPレイヤーを作成することです. したがって、オプションは次のとおりです。
クライアントから VPN 接続を確立すると、データベースに直接アクセスできますが、これはおそらく、クライアントがあなたの会社のものではない場合に特別に認められるためです。私は個人的にはおそらく 2 つまたは 3 つを選択しますが、SOAP があまり好きではないという理由だけでそうです。尋ねられた場合、ほとんどの人はSOAPを好むと思います。
編集:
これらはリモート オフィスであるため、永続的な VPN 接続を検討できます。最近のほとんどのルーターは、これらの機能を備えています。その後、アプリケーションは、ローカルで行うのと同じようにリモートで動作できます。
考えられる解決策は 3 つあります。
DataSnapまたはRemObjectsを簡単に使用して、既存のデータベースを中間層サーバーとしてラップおよび公開し、それに対してクライアントを書き込むことができます。これに接続するには、リモートと中間層の間の VPN 接続を強くお勧めします。こうすれば、通信リンクの保護についてそれほど心配する必要はありません...ただし、転送するデータがリスクの低いデータ (何の価値もない) でない限りは。
TClientDatasetに慣れる必要があります。これにより、マスター データベースにアクセスせずにリモート システムを操作できるだけでなく、ネットワーク経由で送信されるトラフィックの量を削減できます (ローカルでフィルター処理および並べ替えを行うことができます)。
更新パフォーマンスの多くは、バックエンド サーバーの速度と、転送するデータの種類と量に基づいています。これはほとんどの目的で十分に高速であり、大量のデータをパイプに送信する必要がある場合は、クライアント キャッシュを実行する価値があることがわかりました。各レコードに更新されたタイムスタンプを設定する更新トリガーを追加することで、最後に受け取ったレコードよりも新しいレコードのみを要求してキャッシュを更新できます。
何を採用するかを選択する基準の 1 つは、リモート オフィスと中央サーバー間の接続速度、信頼性、およびコストです。速度が十分で、信頼性も問題なく、コストも一定であれば、VPN が最適です。アプリケーションを変更する必要はありません (データベース全体をダウンロードするように作成されていない場合...)。データの認証と暗号化も処理します。VPN を選択できない場合は、ランナーの回答にあるリモート手法の 1 つを使用できますが、通常はアプリケーションを再設計 (および再作成) する必要があり、そのモデルは「従来の」クライアント/サーバー アプリケーションとは少し異なります。HTTP(S) ベースのものは通常、ファイアウォールに問題はありませんが、通常はステートレスでコールバックをサポートしない必要があり、セキュリティには証明書の生成と展開が必要です。その他のプロトコル (つまり、DCOM、dbExpress Datasnap) はより柔軟ですが、セットアップや適切な保護がより複雑になる場合があります。接続の速度と信頼性が十分でない場合、または接続が高すぎる場合は、リモート サーバーと適切に同期されたローカル キャッシュが必要になることがありますが、アプリケーションのニーズによっては、これを実現するのは簡単ではない場合があります。