Azure Queue客户端依赖注入

时间:2014-10-09 03:34:01

标签: c# asp.net-mvc azure dependency-injection ninject

我有一个使用MVC Web API开发的azure应用程序,它使用Ninject作为依赖注入框架,这里有许多队列用于与负责后台处理的其他工作者角色进行通信。

为了能够进行单元测试我决定使用名为QueueClientWrapper的类包装QueueClient并使用名为IQueueClientWrapper的接口

类和接口如下所示,

public interface IQueueClientWrapper
{
    void Send<T>(T message);
}

public class QueueClientWrapper : IQueueClientWrapper
{
    private QueueClient _queueClient;

    public QueueClientWrapper(QueueClient queueClient)
    {
        _queueClient = queueClient;
    }

    public void Send<T>(T message)
    {
        _queueClient.Send(new BrokeredMessage(message));
    }
}

然而,这种方法的局限性是我需要将QueueClient传递给构造函数,这对于Ninject是不可能的。

所以我在想改变界面,

public interface IQueueClientWrapper
{
    void Send<T>(string connectionString,string queueName,T message);
}

这样我就可以使用Ninject注入QueueClientWrapper而无需传递构造函数参数,

我现在遇到的问题是,通常不建议创建多个队列客户端对象,我们必须重新使用相同的实例。那么解决这个问题的最佳方法是什么(我想过使用静态Hashtable并用于存储队列名称,队列客户端对,但我对这种方法也不是很满意)?

0 个答案:

没有答案