asp.net-mvc - Web API 在典型的 n 层架构中处于什么位置?

标签 asp.net-mvc asp.net-web-api n-tier-architecture

通常,当我为项目布局 n 层架构时,我有以下几层:

  • 域名 (域模型,存储库契约(Contract))
  • 数据 (在域模型之上工作的存储库)
  • 服务 (聚合存储库、缓存、验证)
  • 介绍 (mvc 应用程序)

  • 考虑到 ASP.NET MVC 4 Web API 将被实际应用程序和外部客户端使用,它在哪里适合?是的一部分吗?服务层还是使用 服务层并与 MVC 应用程序处于同一级别?

    最佳答案

    可能有2种方法:

  • 您决定通过 HTTP 调用使用来自 MVC 应用程序的 Web API。在这种情况下,调用代码 ( HttpClient ) 位于您的数据层中。无论您是从数据库中获取数据还是从远程 Web 服务调用中获取数据,这都无关紧要。在这种情况下,由于 Web API 可能已经封装了大部分业务逻辑,您的服务层将非常薄,只是数据访问层的包装器,如果不带来任何附加值(value),甚至不存在。
  • 由于 Web API 是用 .NET 编写的,因此您可以决定在 MVC 应用程序中直接引用包含此 API 服务层的程序集。在这种情况下,Web API 应用程序的服务层将成为 MVC 应用程序的服务层。
  • 关于asp.net-mvc - Web API 在典型的 n 层架构中处于什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11444690/

    相关文章:

    asp.net-mvc - 如何验证来自 MVC 客户端的 web api 调用

    wcf - 对于多平台客户端,我需要 WCF 还是可以使用 MVC 3?

    security - 我应该在n层架构中哪里实现安全/授权?

    c# - 如何使用 LINQ SQL 连接根据 ID 连接 3 个表? C# MVC(.NET Core 2.0)

    c# - base64 编码 HttpPostedFileBase

    asp.net-web-api - 尝试从 asp.net web api 自主机中的请求获取用户代理

    asp.net-web-api - 在 Breezejs 启用的 webapi Controller 中抛出 HttpResponseException

    c# - 查询多个数据库的存储库模式

    asp.net - MVC2 和 MVC Futures 导致 RedirectToAction 问题

    c# - 无法编辑 SelectListItem 的项目