2010-11-25 66 views
2

在ASP.Net中,您可以为您希望在应用程序中支持的每种文化创建资源文件。ASP.Net本地化性能

例如(在资源设计器中)HelloWorld =“Hello World”

然后,您可以在代码中引用此资源文件。

Label1.Text = Resources.General.HelloWorld 

注意:General是我一般资源文件的名称。

这意味着Visual Studio已经编译了资源,因此您可以对其进行类型安全访问(+ intellisense,这很有用)。

但是,这个效率如何?

  • 是否.NET创建含有以某种方式动态地运行前编译链接常量一类 - 让他们都有点“内置”的大会?

  • 或者当请求资源以获取本地化值时,它是否扫描文件(某处)?

这似乎是第一个效率更高,如果这是发生了什么事情。本地化是否会增加应用程序的性能开销。如果本地化为网站增加了有用的可用性,那么我认为“合理”的性能可能会好起来。

谢谢。

回答

2

查看Resource.Designer.cs文件。

基本上,VS.NET创建一个具有静态属性的类,它使用ResourceManager类通过常量键访问本地化资源。所有字符串和其他资源都作为资源存储在单独的(区域性)卫星组件中。

根据Thread.Current.CurrentUICulture,CLR加载相应的卫星资源组件。

至于性能,由于ResourceManager在HashTable中缓存资源,所以它应该相对较快。

+0

感谢您的回答。为了澄清,请求进入,文化被设置为例如es-ES,线程被设置为这种文化,ASP.Net然后加载相关的卫星程序集并将其链接到主web.dll。任何对这些资源的请求都来自卫星组装? – Remotec 2010-11-26 09:28:48