2010-11-25 65 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