【问题标题】:Fault Tolarent Web Role Initialization in AzureAzure 中的容错 Web 角色初始化
【发布时间】:2015-04-01 00:39:27
【问题描述】:

我有一个运行 WCF 服务的 WebRole。此角色访问存储、队列和表。因此,我在配置文件中保存了连接字符串和其他一些设置(名称、生存时间等)。

假设配置文件可以在运行时更改,我希望能够重新初始化这些设置。假设我让我的 WebRole 在启动时读取配置值:

public class WebRole : RoleEntryPoint
{
  public override bool OnStart()
  {
    string connString = CloudConfigurationManager.GetSetting("StorageConnectionString");
  }
}

我有一个名为 MyService 的 WCF 服务:

public MyService()
{
  CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connString);
  CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
}

我在默认构造函数中初始化存储客户端。如何将角色读取的设置传递给服务?通过这种方式,我可以让任何人使用特定设置启动我的服务,并具有良好的测试覆盖率。

注意:将设置作为参数传递听起来不像是一种选择(请参阅this)。

【问题讨论】:

    标签: c# wcf azure


    【解决方案1】:

    我强烈建议您将 Azure 代码移动到另一个类并通过类似这样的接口引用它

    public interface IStorageCreator{
            CloudQueueClient GetQueueClient();
    
        }
    
    
        public class AzureStorageCreator:IAzureStorageCreator{
           public CloudQueueClient GetQueueClient(){
                string connString = CloudConfigurationManager.GetSetting("StorageConnectionString");
                CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connString);
                CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
    
               return queueClient;
           }
        }
    

    然后通过注入将你的依赖添加到 WCF 服务,这样你就可以测试你的服务并根据需要伪造它。

    干杯。

    【讨论】:

      猜你喜欢
      • 2012-05-05
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      相关资源
      最近更新 更多