我要问的是WCF的依赖注入?

时间:2011-02-24 01:40:52

标签: c# wcf

我正在与我们产品的Web服务层上的同事一起工作。他已经整理了一些服务方法,但它们都需要相同的对象。这是一个例子:

public interface IQueueService
    {
        [OperationContract]
        UserBase LoginUser(MessageBase message, string userName, string password);

        [OperationContract]
        bool LogoutUser(MessageBase message, string userName);
}

正如您所看到的,每个方法都需要MethodBase对象。在调用任何其他方法之前,使用“kind / sorta WCF构造函数”要求该对象的最佳方法是什么。这是依赖注入的吗?我一直在读这个,但不确定这是我们需要的。

我想我们可以有一个创建MethodBase实例的方法,如果它在任何其他方法中都不存在,我们会抛出异常吗?

任何想法都表示赞赏。感谢

1 个答案:

答案 0 :(得分:1)

WCF是基于接口的 - 并且您没有接口的构造函数,因此依赖注入不会对您有所帮助。

取决于您期望客户与服务进行何种交互,并且根据您的MessageBase类的语义,您可能希望采用面向连接的设计:

public interface IQueueService
{
    [OperationContract(IsOneWay = false, IsInitiating = true)]
    void Connect(MessageBase message);

    [OperationContract]
    UserBase LoginUser(string userName, string password);

    [OperationContract]
    bool LogoutUser(string userName);

    [OperationContract(IsOneWay = false, IsTerminating = true)]
    void Disconnect();
}

您的客户需要先Connect(),提供MessageBase,然后拨打电话(例如LoginUser()),然后拨打Disconnect()

当然,这完全取决于你没有提供的语义。