1

カスタムクラスの1000インスタンスのリストをセッション変数に保存するのは良いアプローチですか?私のasp.netWebアプリには多言語サポートが必要であり、ラベルをテーブルに格納しています。独自の言語設定とテキスト(ラベルコンテンツ)設定を持つ複数のユーザーがいます。

ラベルを読み込んでセッション変数に保存し、ページで使用するためにアクセスすることを考えています。アプリケーション変数に保存することは、各顧客がラベル用の独自のテキストを持っているため機能しません。したがって、セッションを保存するのは良い方法です。これ ?私は今のところほぼ1000のラベルを持っていると思います、そしてそれはアプリケーションが成長するにつれて増加するかもしれません。

私のカスタムクラスには2つのプロパティがあります。LanguageCodeとLanguageName

何らかの理由で、asp.netリソースファイルを使用できません:(

これについてどう思いますか?

4

5 に答える 5

2

言語ごとに1セットのラベルを保存してから、セッションで言語名を保存し、それを使用して正しいラベルセットを検索する必要があります。

于 2010-10-04T18:22:34.327 に答える
2

注意すべきいくつかの考え:

マネージャーがresxに対して特に何かを持っている場合は、それらすべてのラベルを他の形式(プレーンテキストファイルなど)またはDBに保存できます。

ユーザーの数が少なく、読み込み時間が非常に重要な場合は、マネージャーがポイントを持っている可能性があります。それ以外は間違っているので、説明してみようと思います。

実行時にラベルを「計算」することを検討してください(たとえば、プレフィックスやサフィックスの追加などが含まれている場合は、「ステム」のみを保存し、オンデマンドでのみ関連するラベルを提供できます。これにより、サーバースペースを節約できます)。

于 2010-10-04T19:02:36.740 に答える
1

アプリケーション変数を使用して、使用している言語と同じ数のアプリケーション変数を作成してみませんか。各アプリケーション変数は、その言語のすべてのラベルのスーパーセットになります。
または、テーブル全体をアプリケーション変数に格納することもできます。複数のセッション変数を格納するのではなく、それらが互いに交差していると思います。

于 2010-10-04T18:49:57.753 に答える
1

私があなただったら、最初にリソースファイルが機能しない理由を理解しようと時間を費やしました... Thread.CurrentThread.CurrentCulture(またはCurrentUICultureですか?)の値を特定のカルチャに設定している限り、リソースファイルが正しい場所にあるので、それが機能しない理由については考えられません。

于 2010-10-04T18:27:56.527 に答える
1

良い考えではありません。2つの問題があります。

  • サーバー上のメモリを使い果たし、システムを使用できるユーザーの数を減らします
  • 各リクエストの時間は増加します

これを行う標準的な方法は、RESX(リソース)ファイルを使用することです。あなたはそれを修正しようとするべきです。

于 2010-10-04T18:33:29.017 に答える