Должен ли я хранить контент локализации в состоянии приложения
-
19-09-2019 - |
Вопрос
Я разрабатываю свой первый многоязычный сайт C#, и все идет нормально, за исключением одного важного аспекта. Я не на 100% уверен, какой лучший вариант для хранения строк (обычно отдельных слов), который будет переведен кодом из моего кода за страницами.
На передней части сайта я собираюсь использовать файлы ресурсов ASP.NET для формулировки на страницах. Эта часть в порядке. Тем не менее, этот сайт будет делать вызовы XML, а ответы XML - только когда -либо на английском языке. Мне дали лист Excel со всеми словами, которые будут возвращены XML, разбитым на разные языки, но я не уверен, как лучше всего хранить/получить доступ к этой информации. Есть примерно 80 слов x 7 языков.
Я думаю о создании словарного объекта для каждого языка, который создается моим файлом Global.asax во время выполнения приложения, и просто сохранить его в памяти. Плюс сторона для этого заключается в том, что объект словаря должен быть создан только один раз (до перезапуска IIS) и может получить доступ к любому пользователю без необходимости восстановления, но недостатком является то, что у меня 7 словарных объектов, постоянно хранящихся в памяти. Сервер - это 64 -битная победа в 2008 году с 4 ГБ оперативной памяти, поэтому я должен быть вообще беспокоиться о памяти, используемой с помощью этого метода?
Как вы думаете, что, ребята, будет лучшим способом хранения/извлечения разных языковых слов, которые будут использоваться всеми пользователями?
Спасибо за ваш вклад.
Богатый
Решение
Из того, что вы говорите, вы смотрите на 560 слов, которые должны отличаться в зависимости от локали. Это капля в океане. Метод файла ресурсов, который вы предполагали, подходит для цели, и я бы порекомендовал использовать их. Они интегрируются с элементами управления, поэтому вы будете максимально использовать их.
Если бы вам было неприятно, вы могли бы иметь их в скользящем кеше, например, кеш скольжения 20 минут, но я не вижу ничего плохого в вашем выборе в этом решении.
Омо
Ваше здоровье,
Эндрю
PS имеет прочитание через это, чтобы увидеть, как вы можете найти и привязывать значения в разных файлах ресурсов с элементами управления и литералов и программно использовать.
Другие советы
Пока вы знаете о влиянии этого, то да, хранение этих данных в памяти было бы хорошо (если у вас достаточно, чтобы сделать это). Как только вы узнаете, что подходит для текущего пользователя, то бросить его в память будет хорошо. Вы можете взглянуть на что -то вроде Memcached Win32 или скорость, чтобы разгрузить хранилище на другой сервер приложений. Используйте это даже в своем локальном приложении в течение времени, когда пришло время подтолкнуть это к другому серверу или увеличить ваше приложение, у вас есть четкое разделение проблем, определенных на вашем уровне кэширования. И имейте в виду, что чем больше языков вы поддерживаете, тем больше вещей, которые вы храните в памяти. Следите за объемом данных, хранящиеся в памяти на вашем одиночном сервере приложений, так как это может быть ошеломляющим во времени. Кроме того, убедитесь, что используемые вами ключи специфичны для языка. В противном случае вы можете обнаружить, что храните меню на немецком языке для английского пользователя.