C# asp.net mvc应用程序和Web API是否混合使用

C# asp.net mvc应用程序和Web API是否混合使用,c#,asp.net-mvc,web-services,api,asp.net-mvc-4,C#,Asp.net Mvc,Web Services,Api,Asp.net Mvc 4,我有一个MVC应用程序。我已经构建了两个层BLL和DAL,可以使用了 我想添加一个服务层:我了解了Asp.netwebapi,我想用它来构建这个层 在亚当·弗里曼(Pro Asp.net MVC4)的书中,我读到了这一点 您可以在项目中自由混合使用常规控制器和API控制器。事实上,你通常需要 您希望支持HTML客户端,因为API控制器将只返回对象数据,而不会呈现 景色 因此,我想知道在哪些情况下我必须使用以下解决方案之一: 使用Asp.Net MVC应用程序和web API(作为服务层) 在we

我有一个MVC应用程序。我已经构建了两个层BLLDAL,可以使用了

我想添加一个服务层:我了解了
Asp.netwebapi
,我想用它来构建这个层

在亚当·弗里曼(Pro Asp.net MVC4)的书中,我读到了这一点

您可以在项目中自由混合使用常规控制器和API控制器。事实上,你通常需要 您希望支持HTML客户端,因为API控制器将只返回对象数据,而不会呈现 景色

因此,我想知道在哪些情况下我必须使用以下解决方案之一:

  • 使用Asp.Net MVC应用程序和web API(作为服务层)
  • 在web API应用程序中混合使用这两个应用程序

  • 是的,在同一个项目中或者在不同的项目中使用WebAPI控制器和MVC控制器是可以的,但是WebAPI的作用是完全不同的

    WebAPI控制器不能充当应用程序的“服务层”,因为它只是将部分功能公开为RESTful服务,可以使用HTTP请求(例如来自客户端的AJAX调用)调用


    您应该在MVC和WebAPI控制器中使用服务层(业务层),并且只通过WebAPI公开所需的数据。使用WebAPI方法代替业务层是不可能的。

    是的,可以使用WebAPI控制器和普通控制器,我倾向于使用WebAPI控制器进行客户端的AJAX调用。我想说的是,“服务层”是WebAPI控制器和常规控制器都将用来访问域对象的附加功能。我很确定你的常规控制器不应该调用你的WebAPI控制器…@Coulton如果我理解的话,你使用的是第一种选择(独立服务层(WebAPI)),第一种选择在技术上是不正确的,因为你不会将WebAPI用作“服务层”。您的WebAPI控制器和常规控制器都将以完全不同的方式使用,并且都可以使用通用服务层(通用类/方法)来获取执行其职责所需的数据。如果你在同一个项目中混合了这两种元素,你就不是真正地混合了它们,也就是说,它们是相互独立的。您永远不会从常规控制器调用WebAPI方法-事实上,我甚至不确定这是否可能。谢谢@Coulton,但为什么不制作一个asp.net mvc应用程序和web api:在第一个视图中,我们对WebAPI控制器进行ajax调用。通过这种方式,解决方案的结构将更清晰、更具可维护性。此外,如果我混合使用这两个应用程序,我是否保留了互操作性概念,即如果我添加一个php项目,我是否可以从中访问api控制器的方法(服务)?很高兴听到您已经有了BL和DAL。是的,这听起来正是你应该做的。只需创建WebAPI控制器和方法来获取视图所需的数据,并通过AJAX请求调用它们。祝你好运:)