1

私は、ユーザーがモンスター、アイテム、キャラクターなどを含むロールプレイングシナリオを作成できるようにするWPFのC#を使用したユーティリティプログラムを作成しています。

ユーザーは要素(モンスターなど)を作成またはインポートしてから、インポートした要素を使用してシナリオを作成します。プログラムで使用されるものはすべてプログラム内で作成されるため、アクセスする事前定義されたデータはありません。

これが私の質問です-データを保存およびロードするための最良の方法は何ですか?

現在、XMLシリアル化を使用して、オブジェクトをXMLファイルにシリアル化し、後で再ロードしています。これはちょっと不格好で、データベースの方が効果的かどうか疑問に思っています。データは間違いなくリレーショナルであり(モンスターにはアイテムがあり、マップにはモンスターがあります)、数十または数百のエントリが存在する可能性があります。

使用するコードやメソッドの実際の行は必要ありません。この状況で(.NETで)通常どのような種類のファイルストレージ/取得が使用されるかを知っているだけです。

ありがとう!

4

4 に答える 4

1

あなた自身が言ったように:データはリレーショナルであるため、リレーショナルデータベースがおそらく役立つでしょう。Sql Server Compactを使用すると、開いたときにSql Serverにロードする、任意の名前の単純なファイルを作成できます。そうすれば、従来のデータベースサーバーを管理する必要がなくなり、ユーザーはデータベースが関係していることすらわかりません。

データにアクセスするために、私は個人的にLinq-to-Sqlが大好きです。これにより、C#で直接タイプセーフなクエリが実行されます。

于 2010-03-07T15:55:32.753 に答える
0

データベースは、間違いなく進むべき道です。オブジェクトリレーショナルマッパーを使用してデータベースと通信します。これにより、最初はニーズの99%がカバーされる可能性があります。

異なるプロセスの相互通信を必要とするシナリオでは、XMLシリアル化を維持することを好みます。

于 2010-03-07T15:56:34.327 に答える
0

それは本当にあなたが達成する必要があるものに依存します。データベースには場所がありますが、フラットファイル(シリアル化を介して)データに完全に適しています。

それで; xmlはどのような問題を引き起こしますか?あなたがそれに答えることができれば、あなたはあなたが対処したい問題点が何であるかを知るでしょう。あなたは「ゲーム」について言及しますが、実際にはフラットファイルの方が適している傾向があります(最小限のオーバーヘッドが必要な場合など)が、通常はどちらでも問題ありません。バイナリシリアル化は、CPUとディスクの点でより効率的かもしれません(ただし、お勧めしませんBinaryFormatter。タイプを変更すると、問題が発生します)。

私はアンチデータベースではありません(それからはほど遠いです)-バランスの取れた視点を提示したかっただけです;-p

于 2010-03-07T19:30:58.060 に答える
0

オブジェクトデータベース(db4oなど)を使用できます。利点は次のとおりです。型安全性、ORMなし、インデックス付き情報...

于 2010-03-07T20:03:15.823 に答える