2011-01-27 91 views

回答

14

服务层应该包含业务操作,它应该与数据访问层(存储库)分离。服务层提供可由多个CRUD操作组成的业务操作。这些CRUD操作由存储库执行。因此,举例来说,您可以进行业务操作,将一定数量的资金从一个账户转移到另一个账户,并且为了执行此业务操作,您需要首先确保发件人账户有足够的准备金,借记发件人账户并贷记收款人帐户。服务操作还可以表示SQL事务的边界,这意味着在业务操作内部执行的所有基本CRUD操作都应该在事务内部,并且如果出现错误,它们都应该成功或者回滚。

为了从底层数据访问层,你可以使用接口分离的服务层:

public class BankService 
{ 
    private readonly IAccountsRepository _accountsRepository; 
    public OrdersService(IAccountsRepository accountsRepository) 
    { 
     _accountsRepository = accountsRepository; 
    } 

    public void Transfer(Account from, Account to, decimal amount) 
    { 
     _accountsRepository.Debit(from, amount); 
     _accountsRepository.Credit(to, amount); 
    } 
} 
+0

非常好的例子:) – frennky 2011-01-27 15:19:56

相关问题