asp.net-mvc-3 - 什么是 ASP.NET MVC 中服务层的好例子?

标签 asp.net-mvc-3

我很想知道 ASP.NET MVC 中服务层的一个很好的例子(提供一些代码)是什么?

  • 它究竟应该包含什么?
  • 它应该与什么解耦?

  • 谢谢。

    最佳答案

    服务层应该包含业务操作,并且应该与数据访问层(存储库)分离。服务层暴露了可能由多个 CRUD 操作组成的业务操作。这些 CRUD 操作由存储库执行。因此,例如,您可能有一项业务操作,将一些金额从一个帐户转移到另一个帐户,为了执行此业务操作,您首先需要确保发件人帐户有足够的准备金,从发件人帐户借记并贷记收款人帐户。服务操作还可以表示 SQL 事务的边界,这意味着在业务操作中执行的所有基本 CRUD 操作都应该在一个事务中,并且它们要么全部成功,要么在发生错误时回滚。

    为了将服务层与底层数据访问层分离,您可以使用接口(interface):

    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);
        }
    }
    

    关于asp.net-mvc-3 - 什么是 ASP.NET MVC 中服务层的好例子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4816692/

    相关文章:

    asp.net-mvc - '[ValidateAntiForgeryToken]' 的真正含义是什么?

    asp.net-mvc - 如何从静态下拉列表中获取数据以在 mvc4 中建模

    asp.net-mvc-3 - 如何在 Asp.Net MVC 中显示 DisplayFormat 属性的自定义错误消息?

    c# - 字段列表中的 EF4 未知列

    asp.net-mvc - 如何在 Razor 中强制执行代码块

    asp.net - web.config <add key ="webpages:Enabled"value ="true"/> 使自定义成员资格提供程序不起作用?

    javascript - 如何在 razor 中创建一个 javascript 字符串

    asp.net-mvc - MVC3 Actionlink 重定向到错误的 Controller

    asp.net - 生成静态 HTML 页面以替换动态页面

    asp.net-mvc-3 - 用于大文本区域的 MVC3 HTML Helper