在我的公司,我们的服务实现基本上只是将调用传递回业务层,业务层执行实际处理。因此,例如,如果我们有一个如下所示的服务合同:
public interface IService
{
void ServiceMethod1(string a, object b);
int ServiceMethod2(int a, int b);
}
我们的服务可能看起来像这样:
public class Service : IService
{
private ServiceBL _serviceBL;
public Service()
{
_serviceBL = new ServiceBL();
}
public void ServiceMethod1(string a, object b)
{
_serviceBL.ServiceMethod1(a, b);
}
public int ServiceMethod2(int a, int b)
{
return _serviceBL.ServiceMethod2(a, b);
}
}
因为这相当重复,我想知道是否有一些我可以根据合同自行发出服务方法的基类。我希望代码可能看起来像这样:
public abstract class MagicServiceBase<T>
{
protected dynamic InterfaceImplementor { get; }
public MagicServiceBase()
{
// Magic that makes the methods defined in T real.
}
}
public class Service : MagicServiceBase<IService>, IService
{
protected override dynamic InterfaceImplementor
{
get
{
return new ServiceBL();
}
}
}
有没有办法创造这个,或者我只是想懒得合理?
答案 0 :(得分:0)
你应该看看阿加莎(http://davybrion.github.io/Agatha/) 这是一个框架,可以消除对您的服务进行此类设置的要求。
您必须注册消息请求和响应,并且它是相应的处理程序 您可以使用此框架来封装所需的所有服务行为,并获得清晰的处理逻辑分离。
实现干净的wcf服务的一个很好的框架。而不是调用yourService.Methods,您实际上将发送您的请求并收到您的回复。