私は、複数のユーザーが使用するデスクトップアプリケーションを作成する初期段階にあります。私はこれに取り組むための最良の方法についてのアドバイスを探しています。
スペック
マップされたネットワークドライブでよく使用されるファイルにモデルを保持します。(これは、道路や、鉄道や小川などの他の線形フィーチャの設計用です。)
さまざまなエンドユーザーが、ファイルに同時に接続して編集できる必要があります。たとえば、ビリーボブはUS321という名前の道路で作業しており、ルパートはI40で作業しています。各道路のモデルは同じファイルにあります。エンドユーザーは、任意の道路名を「申請」できます。この名前では、申請者のみが特定の道路を編集できます。ビリーボブが主張している間、ルパートはUS321を編集できませんが、ルパートは参照用にUS321を読み取ることができます。ユーザーが道路データの編集を終了すると、ユーザーは申し立てを解除でき、他の誰かがそれを編集できます。
シリアル化の制限はありますか?
シリアル化についての私の理解はかなり限られています(私のプロファイルを参照してください)。しかし、オブジェクトとシリアル化ファイルの間には1対1の相関関係があるように見えます。したがって、シリアル化を使用してこれを実装すると、その一部だけを要求することも、一部だけを更新することもできなくなります。(これは正しいですか?そうでない場合は、シリアル化を使用できますよね?)
私が検討している解決策
SQL Server Expressの使用を検討しており、これに関するコミュニティの警告、修正、または確認に関心があります。
エンドユーザーは、私がバックグラウンドでSQLServerExpressを使用していることを知る必要はありません。(ファイル拡張子を自分のアプリに適したものに変更することもあります。)道路をリストにロードすると、各道路は「請求可能」になります。道路を主張すると、アプリの他のインスタンスがそれに応じて反応するようにデータベースにマークが付けられます。これは、複数の人が同時に編集できる共有MS Excelファイルのようですが、(Excelと同様に)ロックできます。個々のワークシート。
[編集]以下のMicahArmantroutの非常に有益な回答を参照してください。だから今、私は仲介データベースアプリとしてMicrosoftAccessを使用することについて疑問に思っています。
[編集]
結論
有益な回答とコメントをありがとうございました。1台のサーバーだけで制御されるファイルに制限されることに気づかなかったので、Micahの答えは非常に役に立ちました。今は完全に理にかなっていますが、私はそれを予期していませんでした。もし私がそのルートに行っていたら、その方向で何時間も働いた後、私はそれに座礁したでしょう。
urbadaveのアイデアを最初に読んだとき、私はそれをすでに考えていて気に入らなかったものとして却下しました。しかし、それを考えた後、それは明らかに最も単純なアプローチです。ファイルのようにディレクトリを使用しますが、最上位のサブオブジェクトに対してユーザーの透過性があります。しかし、モデル全体を1つのファイルにカプセル化することには明らかに魅力があります。
だから、これが私がやろうと決心したことです。urbadaveが示唆しているように、ディレクトリに書き込むことから始めます。次に、それをzipディレクトリに配置し、ZipPackageクラスを使用して、個々のシリアル化されたファイル(またはXMLファイル-いつか行う必要がある別の決定)を取り出して挿入することをテストします。
- ポール