質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

3回答

16140閲覧

設定データはどう管理するのがベター?

nyahonyaho

総合スコア83

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

3クリップ

投稿2016/09/05 05:51

編集2016/09/05 06:37

スマホの「設定」画面やテレビゲームの「オプション」画面をイメージして下さい。

デスクトップアプリの設定画面で設定したデータはどう管理するのが主流でしょうか。

1.datファイルに保存してクラスのフィールド群に一気にセット → VB6時代の「構造体」みたいで古くない?

2.SQLDBで管理 → 設定の保存なので1レコードしか作られないだろうから無駄?

3.iniまたはXMLで管理 → 遅くない?

4.別のナウい方法がある

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

1.datファイルに保存してクラスのフィールド群に一気にセット → VB6時代の「構造体」みたいで古くない?

変数のバイナリイメージをそのまま保存するというやり方は、バージョン間の互換性の維持が難しいので現在の主流ではありませんし、お勧めできるものではありません。

2.SQLDBで管理 → 設定の保存なので1レコードしか作られないだろうから無駄?

SQLiteのようなファイルベースのDBMSを使った設定の保存は割と一般的だと思います。1レコードだけなら無駄かもしれませんが、その辺はDBの設計にもよるでしょう。DBなら配列やバイナリデータの保存も容易ですし、設定項目が多い場合はDBによる管理は有用だと思います。暗号(パスワード)機能付きのDBMSを使えば、セキュリティ対策も同時に施せます。

3.iniまたはXMLで管理 → 遅くない?

現在はXMLで保存するのが主流ですね。Visual Studioは各種設定をXMLで保存していますし、C#のプロジェクトを新規作成すると自動で組み込まれるSettingsクラスも、所定の場所にXMLで保存します。XMLは規格化されているので異種プラットフォーム間でのやりとりも容易です。
ini形式の使用はXMLの登場により廃れてきていますが、ファイルの記述が単純で直感的なので自作する分には簡単で都合がいいかもしれません。フリーウェアなどではよく見かけます。
速度を気にしているようですが、ini/XMLだから遅いということはありません。設定値のような複数レコードの検索を伴わない単発の読み書きなら、トータルで考えればDBMSと変わりないか、むしろ速いかもしれません。

4.別のナウい方法がある

復活の呪文とか?

投稿2016/09/05 11:54

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nyahonyaho

2016/09/06 01:30

1つ1つ検討していただきありがとうございます、XMLでいこうと思います。 4.の回答についてですが、現在は不揮発性領域に保存する技術が確立されているようです。
guest

0

使用するデータソースが何かにより、利用するライブラリ(特にライブラリサイズ)に依存するので、
そこで軽量なものかそうでないものを使うのか、決めの問題と思います。

テキストファイル例(Windows iniファイル形式)

[common] vol=15 zipcode=000-0000 ...

データベース例

create table config_tbl ( name varchar(32), val varchar(255) ); insert into config_tbl values('vol', '15'); insert into config_tbl values('zipcode', '000-0000'); ...

XML例

... <property> <name>vol</name> <value>15</value> </property> <property> <name>zipcode</name> <value>000-0000</value> </property> ...

投稿2016/09/05 06:14

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プラットフォームにもよりますけど、
C#でクライアントにはXMLに直列化し、暗号化して保存。
サーバーに保存するならデータベースですかね。

投稿2016/09/05 06:06

jm1156

総合スコア866

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問