Azure中的容错Web角色初始化

时间:2015-04-01 00:39:27

标签: c# wcf azure

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

假设配置文件可以在运行时更改,我希望能够重新初始化这些设置。假设我在启动时有我的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)。

1 个答案:

答案 0 :(得分:0)

我强烈建议您将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服务,通过这种方式,您可以测试您的服务并随意伪造它。

干杯。