2

1 つのネットワーク上の多くのコンピューターにインストール/配布できる Windows フォーム アプリケーション (または WPF) を開発する予定です。

これらのアプリは、アプリ間で 1 つの SQL データベースにアクセスします。

この種のソリューションへの典型的なアプローチは何ですか?

これまでに私が思いついたのは次のとおりです。

  • Web でホストされている SQL データベースにアクセスするすべて
  • すべてのインストールには、db もインストールするオプションが付属しています (最初の 1 つだけがこれを必要とします)。インストールにより、ユーザーに db への IP が提供され、ネットワーク上の他のすべてのアプリがこの db を参照できます。

SO の規則に反していることはわかっているので、意見を求めているわけではありません。これを達成するための唯一の最善の方法は何かを尋ねています。

4

3 に答える 3

4

すべての DB アクセス (呼び出し) を行うために、ネットワーク内でホストされている Web サービスを検討してください。これにより、データベースがクライアントから完全に分離されます。クライアントの app.config は、サービスの URL を保持します。

于 2012-08-20T11:51:53.213 に答える
1

通常、複数のクライアントが同じデータベースにアクセスする必要がある場合、データベースをホストする専用のデータベースサーバーがネットワークのどこかにあります。これは、データベースがホストされる唯一の場所になります。クライアントは自分のコピーを取得しません。

補足:上記では、データベースが複数のサーバーに分散しているシナリオは考慮していません。これは通常、データベースが非常に大きくなる場合、または高可用性が非常に重要な場合にのみ必要です。このような状況では、データベースが地理的に異なる場所にあるさまざまなデータベースサーバーに完全に複製されたり、シャーディングと呼ばれる手法を使用してデータベースを小さなデータベースに分割したりできます。各データベースには一部のデータしかありません。(データベースを配布する理由や手法は他にもあると思いますが、前述のように、今のところこれらについては考慮しません。)

データベースの独自のコピーを持っている各クライアントは、次のような問題について考え始める必要があるため、悪い考えのように聞こえます。

  • 他のクライアントがオフラインになった場合に各クライアントが完全なデータを持つように、さまざまなコピーを定期的に同期/マージする必要があるかどうか。

  • 異なるデータベースに矛盾する情報が含まれている場合はどうなりますか。

  • ユーザーパスワードなど、データベースに存在する機密データを保護する方法。これは常に問題ですが、各クライアントがローカルデータベースファイルに直接アクセスできる場合はさらに困難になります。たとえば、サービスファサードの背後にデータを「隠す」ことにより、中央データベースサーバー上のそのようなデータを保護する方が簡単です。

したがって、データベースを中央データベースサーバーに配置し、クライアントをそれに接続させます。データベースに直接、または(おそらく保護された)SOAP/RESTサービスを介して。

于 2012-08-20T13:14:53.030 に答える