Должен ли я хранить контент локализации в состоянии приложения - PullRequest
0 голосов
/ 24 августа 2009

Я занимаюсь разработкой своего первого многоязычного сайта на C #, и все идет хорошо, за исключением одного важного аспекта. Я не уверен на 100%, что лучше всего подходит для хранения строк (обычно отдельных слов), которые будут переведены кодом из моего кода позади страниц.

В начале сайта я собираюсь использовать файлы ресурсов asp.net для формулировки на страницах. Эта часть в порядке. Тем не менее, этот сайт будет выполнять вызовы XML, а ответы XML будут только на английском языке. Мне дали лист Excel со всеми словами, которые будут возвращены XML, разбитыми на разные языки, но я не уверен, как лучше всего хранить / получать доступ к этой информации. Есть примерно 80 слов х 7 языков.

Я думаю о создании объекта словаря для каждого языка, который создается моим файлом global.asax во время выполнения приложения, и просто сохранении его в памяти. Плюсом для этого является то, что объект словаря нужно будет создать только один раз (до перезапуска IIS), и любой пользователь может получить к нему доступ без необходимости перестраивать, но недостатком является то, что у меня 7 объектов словаря, постоянно хранящихся в памяти. Сервер является 64-разрядным Win 2008 с 4 ГБ ОЗУ, так что мне стоит задуматься об использовании памяти этим методом?

Как вы думаете, что, по вашему мнению, будет лучшим способом хранить / извлекать слова на разных языках, которые будут использоваться всеми пользователями?

Спасибо за ваш вклад.

Rich

Ответы [ 2 ]

1 голос
/ 24 августа 2009

Из того, что вы говорите, вы смотрите на 560 слов, которые должны различаться в зависимости от локали. Это капля в море. Метод файла ресурсов, который вы рассмотрели, подходит для цели, и я бы рекомендовал использовать их. Они интегрируются с элементами управления, поэтому вы сможете извлечь из них максимальную пользу.

Если вас это беспокоит, вы можете разместить их в скользящем кеше, например, в скользящем кеше 20 минут, но я не вижу ничего плохого в вашем выборе в этом решении.

ОМО

Приветствия

Andrew

P.s. Прочтите это, чтобы увидеть, как вы можете находить и привязывать значения в разных файлах ресурсов к элементам управления и литералам и использовать их программно.

http://msdn.microsoft.com/en-us/magazine/cc163566.aspx

0 голосов
/ 24 августа 2009

Пока вы знаете о последствиях этого, тогда да, сохранение этих данных в памяти было бы хорошо (если у вас достаточно для этого). Как только вы узнаете, что подходит текущему пользователю, все будет в порядке. Вы можете посмотреть что-то вроде MemCached Win32 или Velocity, чтобы разгрузить хранилище на другой сервер приложений. Используйте это даже в своем локальном приложении, и в то время, когда пришло время отправить это на другой сервер или расширить свое приложение, у вас есть четкое разделение проблем, определенных на вашем уровне кэширования. И имейте в виду, что чем больше языков вы поддерживаете, тем больше вещей хранится в памяти. Следите за объемом данных, хранящихся в памяти на вашем одиночном сервере приложений, так как это может стать чрезмерным со временем. Также убедитесь, что используемые вами ключи относятся к конкретному языку. В противном случае вы можете обнаружить, что храните меню на немецком для английского пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...