1

我有一个基于 MVC 云的项目,目前支持瑞典和法国两种文化

现在取决于我的客户,我希望根据他的文化创建资源文件

现在的问题是我不想重新部署到 Azure 云,仍然想动态添加我的资源文件

如果我使用远程桌面将特定文化的 Dll 直接复制到 Azure,是否有可能

我试过这是我的本地机器,但它失败了,但是当我编译我的解决方案时,添加到 Bin 文件夹的新 Dll 适用于新文化

什么是基于云的本地化的最佳方法,其中数据库命中是一个主要问题,因为它代价高昂

4

3 回答 3

3

As an alternative to MikeWo's solution you could look at creating a custom ResourceProviderFactory. There is an example on MSDN that shows you how to create a sample ExternalResourceProviderFactory that can load external assemblies.

You could modify this class and have it download the assemblies from blob storage. After creating the custom ResourceProviderFactory you can simply add it to your web.config, no need to use startup tasks:

<globalization uiCulture="auto" culture="auto"
     resourceProviderFactoryType="CustomResourceProviders.ExternalResourceProviderFactory, CustomResourceProviders, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f201d8942d9dbbb1" />
于 2012-08-08T10:45:55.740 回答
0

不要使用 RDP 更改您的解决方案。从长远来看,它不会起作用。(如果内部出现任何问题,Azure 可以使用它拥有的 cspkg 来恢复应用程序,在这种情况下,您通过 RDP 所做的更改将不会反映)您可以尝试将资源文件放入 Azure blobs 并在需要时选择它。

于 2012-08-08T10:38:51.287 回答
0

我建议将附属程序集存储在 BLOB 存储中,并让您的应用程序使用后台任务定期从特定 BLOB 容器中获取所有程序集。您可以唤醒 Web 角色的后台进程并查看 BLOB 容器,以及查看它的 bin 文件夹中有哪些附属程序集。如果它在 BLOB 容器中找到新的程序集(或更新的程序集),它可以将其拉下。

我已经很长时间没有使用卫星程序集了,所以我不确定您是否可以更新正在使用的程序集,或者如果它们立即开始工作,您是否可以将新程序集放入垃圾箱中。如果这种“热插拔”方法不起作用,那么您至少可以在启动任务中使用类似的逻辑从 BLOB 存储中获取程序集,然后只需对服务配置执行更新(处理 RoleEnvrionmentChanging 事件) . 请注意,这不会是一个完全重新部署。

于 2012-08-08T10:35:30.787 回答