У меня есть требование, чтобы конечный пользователь мог изменять локализованные ресурсы, и изменения должны быть видны в приложении без необходимости перезапуска приложения.
Обновление для уточнения сценария: Я говорю об изменении локализованных ресурсов во время выполнения.Допустим, у меня есть опечатка в немецком переводе страницы.Тогда какой-то администратор должен иметь возможность изменить эту опечатку во время выполнения.Не должно быть необходимости в повторном развертывании или перезапуске, чтобы это изменение было отражено в пользовательском интерфейсе.
Я использую ASP.NET MVC3.
Какие варианты у меня есть?
Я пытался написать пользовательский ResourceProvider , который загружает ресурсы из базы данных.Это кажется не слишком большим усилием, однако до сих пор я указал на два недостатка:
- Он не работает с DataAnnotations, которые используются для удобной проверки в MVC3 (DataAnnotations работают с параметром ErrorMessageResourceType, который толькоработает с скомпилированными ресурсами)
- Мы, в основном, должны предоставить собственный инструментарий для управления ресурсами (например, перевод и т. д.), что очень жаль, поскольку для этого есть много инструментов, которые работают с resx-файлами.1018 *
Какие есть другие варианты?Будет ли возможной манипуляция развернутыми resx-файлами во время выполнения?Но я подозреваю, что приложение автоматически перезапускается, когда обнаруживает эти изменения: я подозреваю, что ASP.NET понимает, что изменились resx-файлы, затем перезапускает пул приложений и компилирует новые resx-файлы на лету.Это правильно?Есть ли способ обойти это?
Я еще не рассматривал вопрос о компиляции ресурсов в спутниковые сборки до развертывания.Это даже рекомендуемый сценарий для веб-приложений?Но даже скомпилированные сателлитные сборки подозреваю, что ASP.NET перезапускает приложение, когда эти сборки меняются на лету.Это правильно?
Мне было бы интересно узнать, как можно удовлетворить первоначальные требования?И мне будут интересны любые комментарии по поводу вариантов, которые я упомянул выше.