1

私は、複数のユーザーが使用するデスクトップアプリケーションを作成する初期段階にあります。私はこれに取り組むための最良の方法についてのアドバイスを探しています。

スペック

マップされたネットワークドライブでよく使用されるファイルにモデルを保持します。(これは、道路や、鉄道や小川などの他の線形フィーチャの設計用です。)

さまざまなエンドユーザーが、ファイルに同時に接続して編集できる必要があります。たとえば、ビリーボブはUS321という名前の道路で作業しており、ルパートはI40で作業しています。各道路のモデルは同じファイルにあります。エンドユーザーは、任意の道路名を「申請」できます。この名前では、申請者のみが特定の道路を編集できます。ビリーボブが主張している間、ルパートはUS321を編集できませんが、ルパートは参照用にUS321を読み取ることができます。ユーザーが道路データの編集を終了すると、ユーザーは申し立てを解除でき、他の誰かがそれを編集できます。

シリアル化の制限はありますか?

シリアル化についての私の理解はかなり限られています(私のプロファイルを参照してください)。しかし、オブジェクトとシリアル化ファイルの間には1対1の相関関係があるように見えます。したがって、シリアル化を使用してこれを実装すると、その一部だけを要求することも、一部だけを更新することもできなくなります。(これは正しいですか?そうでない場合は、シリアル化を使用できますよね?)

私が検討している解決策

SQL Server Expressの使用を検討しており、これに関するコミュニティの警告、修正、または確認に関心があります。

エンドユーザーは、私がバックグラウンドでSQLServerExpressを使用していることを知る必要はありません。(ファイル拡張子を自分のアプリに適したものに変更することもあります。)道路をリストにロードすると、各道路は「請求可能」になります。道路を主張すると、アプリの他のインスタンスがそれに応じて反応するようにデータベースにマークが付けられます。これは、複数の人が同時に編集できる共有MS Excelファイルのようですが、(Excelと同様に)ロックできます。個々のワークシート。

[編集]以下のMicahArmantroutの非常に有益な回答を参照してください。だから今、私は仲介データベースアプリとしてMicrosoftAccessを使用することについて疑問に思っています。

[編集]

結論

有益な回答とコメントをありがとうございました。1台のサーバーだけで制御されるファイルに制限されることに気づかなかったので、Micahの答えは非常に役に立ちました。今は完全に理にかなっていますが、私はそれを予期していませんでした。もし私がそのルートに行っていたら、その方向で何時間も働いた後、私はそれに座礁したでしょう。

urbadaveのアイデアを最初に読んだとき、私はそれをすでに考えていて気に入らなかったものとして却下しました。しかし、それを考えた後、それは明らかに最も単純なアプローチです。ファイルのようにディレクトリを使用しますが、最上位のサブオブジェクトに対してユーザーの透過性があります。しかし、モデル全体を1つのファイルにカプセル化することには明らかに魅力があります。

だから、これが私がやろうと決心したことです。urbadaveが示唆しているように、ディレクトリに書き込むことから始めます。次に、それをzipディレクトリに配置し、ZipPackageクラスを使用して、個々のシリアル化されたファイル(またはXMLファイル-いつか行う必要がある別の決定)を取り出して挿入することをテストします。

  • ポール
4

2 に答える 2

4

SQL Serverは探しているものに対して機能しますが、複数のユーザーがいる場合は、サーバーとしてマシンをセットアップする必要があります。各マシンにSQLServerExpressをインストールしても効果はありません。ユーザーのマシンの1つであるか、SQL Server Expressを備えた実際のサーバーで、現在のマシンの外部からアクセスできるように設定する必要があります。これは、このチュートリアルに従ってください。

Windows XP SP2を過ぎて何かを使用している場合は、ファイアウォールのポートを開く必要があります。これらの手順に従ってください。これについては、以下のリンクでも説明されています。

http://blogs.msdn.com/b/sqlexpress/archive/2005/05/05/415084.aspx

データを共有するということは、他の人が働いているのを見ることを意味します。サーバーにSQLServerをインストールしたくない場合は、MSAccessを使用できます。

http://www.techrepublic.com/article/should-you-use-sql-server-express-edition-or-microsoft-access-for-your-small-business-applications/6140859

于 2012-04-18T01:15:13.667 に答える
1

私は仕事で素敵なデータベースにアクセスできますが、私の個人的なプログラミングのほとんどはデータベースを使用していません。私が過去に使用したトリックの1つは、ファイル拡張子が意味を運ぶことを意図しているということです。あなたの場合、ファイル拡張子を利用してクレームを示し、マスターファイルへの書き込みを制御できます。

そうです、各道路オブジェクトを独自のファイルにシリアル化する必要があります。マスターファイルは、これらの個々の道路オブジェクトをすべて保持するコレクションオブジェクトのシリアル化です。

ユーザーはこれらの道路ファイルを選択して開きます。ファイルを開く前に、ユーザーのアプリはファイルの名前を変更し、拡張子(おそらくユーザーのID)を追加します。このように、ディレクトリスキャンを使用して、要求されたファイルと要求されていないファイルを見つけることができます。

マスターファイルは、ユーザーが作業中の道路でクレームをリリースしたときにのみ書き込まれます。ユーザーのアプリは、すべての道路ファイルを開き、道路オブジェクトを使用してマスターオブジェクトをアセンブルし、このオブジェクトをマスターファイルにシリアル化します。終了すると、ユーザーアプリは、名前を変更して道路ファイルに対するユーザーの申し立てを解除します。

マスターファイルに書き込む前に、ユーザーのアプリはファイルの名前を変更し、書き込まれようとしていることを示します。ユーザーアプリに書き込む必要がある場合は、ファイルの名前が変更されているかどうかを確認し、ファイル名が書き込み可能な名前に復元されるのを待つことができます。

これは、私がこの仕様を攻撃する方法のスケッチです。幸運を。

于 2012-04-18T04:21:43.923 に答える