1

将我的自定义类的 1000 个实例的列表存储到会话变量中是一种好方法吗?我的 asp.net 网络应用程序需要多语言支持,我将标签存储在一个表格中。我将有多个用户,他们有自己的语言偏好和文本(标签内容)偏好。

我正在考虑加载标签并将其存储在会话变量中并访问它以在页面中使用。将其存储在应用程序变量中不起作用,因为每个客户都有自己的标签文本。所以存储会话是一种好方法这个 ?我想到目前为止我将拥有近 1000 个标签,并且可能会随着应用程序的增长而增加。

我的自定义类有 2 个属性。语言代码和语言名称

出于某种原因,我不能使用 asp.net 资源文件 :(

您对此有何看法?

4

5 回答 5

2

需要注意的一些想法:

如果您的经理特别反对 resx,您可以以任何其他格式(例如纯文本文件)或数据库中存储所有这些标签。

如果您的用户数量很少,并且加载时间非常关键,那么您的经理可能会说得通。除此之外,他们错了,我会考虑尝试向他们解释这一点。

尝试考虑在运行时“计算”标签(例如,如果其中一些包括添加前缀、后缀等。您可以只保存“词干”并仅按需提供相关标签。这将为您节省一些服务器空间)。

于 2010-10-04T19:02:36.740 回答
2

您应该为每种语言存储一组标签,然后将语言名称存储在会话中并使用它来查找正确的标签集。

于 2010-10-04T18:22:34.327 回答
1

为什么不使用应用程序变量并创建与您拥有的语言一样多的应用程序变量。每个应用程序变量都是该语言所有标签的超集。
或者可能将整个表存储在应用程序变量中,而不是存储多个会话变量,我假设它们彼此相交。

于 2010-10-04T18:49:57.753 回答
1

这不是一个好主意,它有两个问题:

  • 会耗尽服务器的内存,减少可以使用系统的用户数
  • 每个请求的时间都会增加

执行此操作的标准方法是使用 RESX(资源)文件。你应该尝试解决这个问题。

于 2010-10-04T18:33:29.017 回答
1

如果我是你,我首先会花一些时间试图弄清楚为什么你的资源文件不起作用......只要你将 Thread.CurrentThread.CurrentCulture(或者它是 CurrentUICulture?)值设置为特定的文化,并将资源文件放在正确的位置,我想不出它为什么不起作用的任何原因。

于 2010-10-04T18:27:56.527 回答