在我的公司,我们的服务实现基本上只是将调用传递回业务层,业务层进行实际的处理。例如,如果我们有一个服务契约,看起来像这样:
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();
}
}
}
是否有一种方法来创建这个,或者我只是试图太懒的合理性?
你应该看看Agatha (http://davybrion.github.io/Agatha/)这是一个框架,它为您的服务删除了这种设置的要求。
你必须注册消息请求和响应,这是根据处理程序。
你可以使用这个框架来封装你需要的所有服务行为,并获得一个干净的处理逻辑分离。
一个实现干净wcf服务的伟大框架。而不是调用你的服务。方法。