我正在与我们产品的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实例的方法,如果它在任何其他方法中都不存在,我们会抛出异常吗?
任何想法都表示赞赏。感谢
答案 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()
。
当然,这完全取决于你没有提供的语义。