私は、複数のユーザーが使用できるようにデスクトップアプリケーションを作成する段階です。私はこれに近づく最善の方法について何かアドバイスを求めています。同じファイルで作業する複数のユーザーのためのデザインに関するアドバイスを求める
スペック
に私は頻繁にマップされたネットワークドライブに使用されるファイルで私のモデルを持続します。 (これは道路や鉄道や川などの線形機能の設計用です)
さまざまなエンドユーザーがファイルに同時に接続して編集できる必要があります。例えば、ビリー・ボブはUS321という道路に取り掛かり、ルパートはI40に取り組んでいます。各道路のモデルは同じファイルに存在します。エンドユーザーは、申請者だけが所与の道路を編集できる道路名を「請求」することができます。 RupertはUS321を編集できませんが、Billy Bobはそれを主張していますが、RupertはUS321を参照することができます。ユーザーが道路データの編集を終了すると、ユーザーは申し立てを解除し、他のユーザーがそれを編集することができます。
シリアル化の制限?
シリアライゼーションについての私の理解は非常に限られています(私のプロフィールを参照)。しかし、オブジェクトとシリアライゼーションファイルの間に1対1の相関関係があるように思えます。したがって、私がこれを実装するためにシリアライゼーションを使用すると、その一部を要求することも、その一部だけを更新することもできないでしょう。 (これは正しいですか?ない場合は、その後、私は右、シリアル化を使用することができますか?)
ソリューション私はSQL Server Expressを使用して検討している、と私は社会の警告に興味があります、修正
を検討していますかこれについての肯定
エンドユーザーは、私がバックグラウンドでSQL Server Expressを使用していることを知る必要はありません。 (私はファイル拡張子を自分のアプリに適したものに変更するつもりだ)私はリストに道路をロードし、各道路は「主張可能」となるだろう。アプリケーションの他のインスタンスがそれに応じて反応するように、ロードを主張すると、それは複数の人が同時に編集できる共有MS Excelファイルのようなものですが(Excelに類似しています)、ロックすることができます個々のワークシート。
[編集]以下のMicah Armantroutの非常に有益な回答をご覧ください。だから私は中間のdbアプリケーションとしてMicrosoft Accessを使用することについて不思議です。
[編集]
結論彼らの役に立つ回答やコメントのみんなへ
感謝。ミカの答えは非常に役に立ちました。なぜなら、私は1つのサーバだけがファイルを制御することに制限されることに気付かなかったからです。今は完全に意味がありますが、私はそれを予期していませんでした。もし私がその道を歩いていたら、その方向に何時間も働いた後、私はそれを踏みにじりました。
私が最初にurbadaveのアイデアを読んだとき、私はそれを私がすでに考えていたものとして却下しました。しかし、それを考えた後、それは明らかに最も簡単なアプローチです。私はちょうどそれがファイルであるようにディレクトリを使用しますが、私のトップレベルのサブオブジェクトに対するユーザーの透過性を備えています。しかし、明らかに、私のモデル全体を単一のファイルにカプセル化するという魅力があります。
これは私が何をすべきかを決めたものです。urbadaveが示唆するように、ディレクトリに書き込むだけで始まります。その後、zipディレクトリに入れてテストし、ZipPackageクラスを使用して個々のシリアライズされたファイル(またはXMLファイル - ある日の別の決定)を抜き出して挿入します。
- ポール
SQLサーバーまたはデータベースエンジンはこのトリックを行いますが、行レベルのロックと、これをもっと簡単な方法で可能にするものがあります。 –
すべての人がオフィスで同じネットワークに接続する予定ですか?このケースでは、ユーザーが「フィールド」に出てからオフィスに戻ることができるようにする必要がありますか? Access 2010の新しい「オフライン」機能は、ここで非常に役立つかもしれません。 –
@ AlbertD.Kallal誰もが同時に接続されています。私は現在、チェックアウトを考えていません。 – philologon