- - PR -
設定情報の保存法について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-13 05:50
の改良系ですが・・・ まずImageとファイル名をまとめて扱うクラスを作成します。 ・ImageFileという新しいクラスを作成し、そこにImageとファイル名をもたせる。 ・ImageはIgnoreしておき、ファイル名などの必要な情報だけシリアル化。 ・デシリアライズ時は読み込み後にイメージを読み込む。 skinクラスにImageがたくさんあるのならば、 ・ImageFileクラスのコレクションImageFileCollectionを作成 ・ImageFileCollectionのインデクサでは引数に応じたImageFileのImageを返す ・skinクラスにはImageFileCollectionをフィールドとしてもたせる ・ImageFileCollectionをImagesプロパティとする とすると以下のように使えますね。
ところで、最初に「速度面の問題から」とありますが、iniファイルの読み書きが xmlファイルの読み書きよりも遅いってことですか? | ||||||||
|
投稿日時: 2005-11-13 14:43
>Jubeiさん
なるほど、DataSetの使い方示していただいてありがとうございます。 んーやはりファイル名を指定したいですね(汗。 >ほげたさん それは一応考えました、ただシリアライズ・デシリアライズで作られるXmlがどのようなものになるのか分からないので…今のところ一番有力な方法ですが。 イメージのインデクサは思いつきませんでしたね、ですが Skin.Active.Header.Image SKin.Active.Footer.Image Skin.Inactive.Image のように別れているのでそれを指定するのはインデクサでは難しいような気がします(これに関する説明書いてませんでしたね、すいません汗)また別の機会に使用させていただきます。 INIファイルを読み込むAPIが遅いとのことです、実際に確認はしていませんが前回作ったソフトの状態を見ると修正すべき点と思われました。自分で読み込みクラス作ればいいんですがね(汗、Xmlが推薦されているということもあり使ってみようと思ったわけです。 ここまでで新たな疑問出てきたのですが、スタイルファイルなどは 1, INIやXMLなどのテキストファイルで記述 2, 独自のエディタで記述→バイナリ形式 3, 独自のエディタで記述→テキスト形式 のどちらがいいのでしょうか?バイナリのほうが速度面では速いですが…そこまで必要なスキンじゃないです。 速度に関しては妥協できるのです(INIは極端に遅いとのことなので妥協しかねますが) スキンなど作ったこと無いので今までの経験からこっちのほうがいいよという意見があればご教授願いたいです。条件として「簡単に作成可能である」「コーディングが簡単である(スキン考えてる時点で飽きたらもともこも無いのでw)」 | ||||||||
|
投稿日時: 2005-11-13 15:54
同じ力業にしても、SelectSingleNode や SelectNodes を使ってみるとか。 | ||||||||
|
投稿日時: 2005-11-13 16:48
そりゃ何度も読み出せば読み出すほど、GetPrivateProfileString 関数の方が不利になりますよね。 読み込む時にキャッシュを作っておくとか、セクション単位で読むなどの工夫をしないと。
速度ではなく保守性を重視しましょう。 やはり、XML でしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-11-14 06:32
SerializeAttribute で XML 化 するのと、ISerializable インターフェイス を実装して SoapFormatter で SOAP-XML 化 するのとでは、できあがった XML の形式が違います。 SOAP-XML では、リモートでオブジェクトを転送するため、循環参照しているオブジェクトであってもシリアライズできます。そのため、参照などを解決するための記述に置き換わるため、意図しない要素が多数紛れ込みます。 一方、属性によるシリアライズでは、パブリックで読み書き可能なフィールドおよびプロパティという制約はつきますが、属性で指定したとおりの XML ができあがります。 どちらも、バイナリを可視テキスト化して保存することが可能です。 SoapFormatter の話が出ているので、「SOAP-XML では、外部の人間が特定の値を変更するのは困難」という意味で書きました。 出てきた案は、採用する、しないにかかわらず、テストアプリ作って確認しておくといいですよ。次の時の選択肢が増えますから。 ついでに、.NET Framework 2.0 で、アプリケーションプロパティを簡単に外出しできますが、同じ理由で、あまりお薦めしません。もっとも、エンドユーザがさわらないのなら、お薦めします。 ___________________________________________________________________ □ written by Jitta on 2005/11/14 □ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2005-Sept.2006 _________________ | ||||||||
|
投稿日時: 2005-11-14 12:39
>じゃんぬさん
保守性、人間に分かりやすいのはINIのほうだと思うのですが。XMLの場合タグを使った入れ子なのでぱっと見では分かりにくいと僕は感じます(人それぞれでしょうが) っと、この意見がかなりじゃんぬさんの言いたいこととずれている気がします(汗。保守性=メンテナンス性=どれほどメンテナンスが行いやすいか=人間に理解しやすいか?と解釈したのですが…間違いがあればご指摘ください。 >Jittaさん なるほど…ぜんぜん知らなかったです(汗。 と、いうか --------------------------------------------------------------------------------- 出てきた案は、採用する、しないにかかわらず、テストアプリ作って確認しておくといいですよ。次の時の選択肢が増えますから。 --------------------------------------------------------------------------------- が刺さりました、いや悪い意味じゃないです、そのとおりじゃんって(笑。 なかなかテストアプリ作るのも大変なんですがね、今後作っていくようにしたいと思います、ご忠告ありがとうございました(*´∇`*) | ||||||||
|
投稿日時: 2005-11-14 12:51
うぁすげぇ…実験してみましたSoapFormatter
確かにこれはちょっと分かりにくいですね(汗。 | ||||||||
|
投稿日時: 2005-11-14 12:54
間違いでは無いと思いますが。。。 .ini がシンプルなのはそのとおりですが、その代わり「出来ること」の限界も相当低い位置にあります。 XML はタグがごちゃごちゃして見難いかもしれませんが、構造化データを簡単に記述できるなど、.ini には到底出来ないことが簡単に実現できます。 「その割には」簡単かつ可読性があるというのが XML の利点です。 |