2

ASP.NET アプリケーションがあり、いくつかの設定を保存する必要があります。

設定は、とりわけ、私のアプリケーションに表示されるページのタイトルです。タイトルは定期的に (毎週かそこらで) 変更されます。

  1. 設定を保存しますweb.config(読み取り時間が遅く、変更を検出するにはアプリケーションを再起動する必要があります)。

  2. 設定をデータベースに保存します。

  3. 自分の XML ファイル (独自の XML ファイル内のカスタム構成セクションなど)。

私はより良い方向に私を向けることができる何かを探しています.

あなたならどうしますか?

4

5 に答える 5

1

ここには 2 つの問題があります。

  1. 設定を保存します。

  2. 各ページに表示される動的な値を保存します。

アプリケーション設定を保存する場合は、Custom Configuration Sectionを使用します。key/valueペアアプローチではなく、設定に意味のある名前を作成できますweb.config。このカスタム構成セクションを独自の XML ファイルに貼り付けて、.xml ファイルで参照できますweb.config

動的データ (アプリケーション設定ではなく) を保存する場合は、データベースが既にある場合はそれを使用します。

その理由は、web.config が設定を保持するためのものだからです。キー/値ページのペアを保持するために使用できますが、それは面倒です。真に動的なデータは、他のデータベース データと共にデータベース ストアに保持する必要があります。あなたはそれを述べたので、それがあなたが保存しようとしているデータのタイプである場合、データベースを使用することは最も理にかなっています. ページ タイトルはアプリケーション設定ではなく、動的データです。それがローカライズされたデータである場合、それは別の話ですが、そうであるという兆候はありません。

于 2010-01-02T18:18:29.757 に答える
1

web.config、アプリケーションに関連する情報、つまりアプリケーションがなくてはならない構成を格納する場所です。したがって、database server name大丈夫ですが、大丈夫でpage name of the default.aspxはありません。

私の意見では、他の 2 つのオプションは同じですが、タイトルが管理者によって変更された場合にのみ、SQL サーバーのデータベース テーブルではなく、メモ帳で XML ファイルを更新する方が簡単です (更新用の優れた GUI がない限り)。

編集: 読み取り時間が遅くなることを恐れる必要はありません。web.configファイルは、「タッチ」した場合、つまりファイルの「変更された」属性が変更された場合にのみリロードされます。

于 2010-01-02T18:20:49.797 に答える
0

すべてのサイト コンテンツ/設定のコンテンツ管理システムとして umbraco を使用してみませんか?

Umbraco は、特定の要素を統合することを決定するまで、asp .net サイトのバックグラウンドに座っています。

コンテンツ要素のように聞こえるため、コードや設定の変更なしでページへの変更をスケジュールすることもできます。

于 2010-01-02T18:18:37.197 に答える
0

それらが毎週かそこらで変更されるという事実に純粋に基づいて、それらをデータベースに保存し、値を管理するページを作成します。

ただし、ここには多くの要因があります。考慮すべきことの 1 つは、構成設定を変更すると、アプリケーションが再起動されるということです。これは、ASP.NET は起動時に構成設定のみを読み取り、その間それらをキャッシュするためです。構成ファイルを常に変更すると、孤立したセッションなどの問題が発生する可能性があります。これはあまりありそうにありませんが、可能です。

.NET の構成設定の一部ではないサーバー上の xml ファイルを使用すると、これを回避できますが、編集するとエラーが発生しやすくなり、リクエストごとに読み取るコストがかかります。

値を管理するためのページを作成することは、より初期の作業ですが、長い目で見れば報われると思います。

于 2010-01-02T18:26:55.090 に答える
0

データベースを使用します。

他の人が言ったように、web.config実際にはアプリケーションレベルの設定のみを対象としています。

XML ファイルに関する 1 つの問題は、負荷分散シナリオに移行することを決定した場合に、あるサーバーから別のサーバーにそのファイルをレプリケートする方法について心配する必要があることです。スケーラビリティとセキュリティの観点から、Web 層のファイルシステムにアプリケーションの動的データを持たないことがベスト プラクティスと見なされます (ファイルを更新できるようにしたい場合は、Web アプリに書き込みを許可する必要があることを意味します)。ローカル ファイル システムへのアクセスを制限しますが、これはセキュリティ リスクです)。

DB に配置すると、アプリの最初の起動時に一度だけ読み取ることができます。次に、SqlDependency または SqlCacheDependency を使用してそのすべてまたは一部をメモリにキャッシュし、DB テーブルが変更された場合にコードが通知を受け取るようにします (必要に応じて、XML ファイルで同様のことを行うことができます)。

DB の情報を使用すると、必要に応じて後で負荷分散サーバーをより簡単に追加でき、Web アプリは読み取り専用のままにすることができます。

于 2010-01-03T04:03:44.367 に答える