0

最近、非常に大きなアプリケーションの作業を開始しましたが、多くの設定が web.config ではなく静的クラス/プロパティに保存されていることに気付きました。

public static class FormSettings
{
    public const string HttpPostContentType = "application/x-www-form-urlencoded";
    public const string HttpPostMethodValue = "POST";
}

これを行う唯一の理由は、多数の設定があり、それらを 1 つのファイルに保存するのが扱いにくいためです。

コードを再コンパイルしないとこれらの設定を変更できないという事実以外に、このアプローチには他に欠点がありますか?

編集:

上記の例は最適ではありませんでした:

public static class ThirdPartyApiSettings
{
    public const string EmployeeXmlNodeName = "Employee";
    public const string FirstNameXmlNodeName = "FirstName";
}
4

2 に答える 2

2

設定の保存は、アプリケーションとシナリオに大きく依存します。あなたのアプローチの最大の問題は、すべてがハードコーディングされていることです。上記の誰かが述べたように、次のことを考える必要があります。

  • 「変数」が使用される頻度
  • 変更される可能性はどれくらいですか
  • この変数にアクセスする必要があるアプリケーションの部分
  • どのような情報 (設定) を保存するか

設定を保存する方法はいくつかあります:

  • Web.config (appsettings) - 膨大な数の設定リストを保存するこの方法はお勧めしません (ただし、名前と値のコレクションにすぎません)。また、そこに複雑な型を実際に保存することはできません(まあ...できますが、オブジェクトをシリアル化してweb.configに保存する人を見たことがありません)。この方法は、文字列値を格納するのに適しています。このアプローチの最大の問題 (少なくとも私にとって) は、web.config で何かを追加/変更するたびにアプリを再コンパイルすることです。
  • リソース ファイル - これは、特にコンテンツをローカライズする場合に最適です。そこに設定を保存することもできます。それに関する問題-コンパイルされており、簡単に更新できません。
  • カスタム クラス - コストと列挙型 (あまり頻繁に変更されない) の保存には適していますが、変更される可能性のあるコンテンツを保存する場合は最適な方法ではありません。
  • カスタム XML ファイル - アプリを再コンパイルせずに変更できるので、このアプローチが本当に気に入っています - 問題は、独自のパーサーを作成し、非常に注意する必要があることです - xml ファイルのフォーマットを間違えるのは非常に簡単です :)
  • データベース - ローカライズ可能、リモート、さまざまなアプリケーションからアクセス可能、変更が容易

また、バージョン管理、監査などが必要かどうかを検討することもできます。

それが役に立てば幸い。

于 2012-04-13T10:11:00.957 に答える
0

コンパイルする必要があり、依存関係があり、アプリケーション全体を再構築しない限りそれらを変更することはできません。

また、それはプログラミング部分ではなく、分離する必要があります。コントローラー、ビュー、アクション、および dao を 1 つのファイル (Web アプリケーション内) に配置することもできますが、それは機能しますが、そうしないでください:)

于 2012-04-13T08:42:17.717 に答える