服务层中依赖关系的建议

时间:2014-03-20 07:38:45

标签: c# architecture domain-driven-design

在服务类中定义依赖关系的建议架构方法是什么?

这是好的,当另一个班级,例如。 OrderService依赖于存储库类ex。 CartRepository代替CartService?我应该总是为每个域对象创建一个存储库和一个服务吗?

public class CartService : ICartService
{
    private IBuyerRepository _buyerRepository;
    private ICartRepository _cartRepository;
    private IConfigService _configService;  
    private ISimpleDataService _simpleDataService;

    public CartService(IBuyerRepository buyerRepository,
                       ICartRepository cartRepository,
                       IConfigService configService)
    {
        _buyerRepository = buyerRepository;
        _cartRepository = cartRepository;
        _configService = configService;
    }

    public void Save(Cart cart)
    {
        _cartRepository.Save(cart); 
    }
}

OrderService档案:

public class OrderService : IOrderService
{
    public OrderService(ICartRepository cartRepository)
    {

    }
}

1 个答案:

答案 0 :(得分:0)

您的实施是第一步,在一个简单但不太大的领域。

这样的实现有以下优点: 虽然每个http resquest只有一个服务管理它所需的所有存储库,但管理sql事务以保持完整性没有任何困难。

它有太多缺点: 您可以写两次或更多相同的业务规则......我们都很懒,所以这是一个问题。但是,当一个人或者你在6个月之后第三次在服务实现中调用存储库并忘记业务规则时,将会出现重大失败......再见可爱的域名......

我的建议是,服务只需调用其存储库,并在需要时调用封装自己逻辑的其他服务。 要记住的唯一技巧是传播事务以避免发生奇怪的事情。

希望它有所帮助, 于连