Asp.net mvc 4 WebApi体系结构查询

Asp.net mvc 4 WebApi体系结构查询,asp.net-mvc-4,architecture,asp.net-web-api,restful-architecture,Asp.net Mvc 4,Architecture,Asp.net Web Api,Restful Architecture,我正在设计我的项目的架构,这将 Web应用程序(客户端) Windows应用程序(客户端) 移动应用程序(客户端) 服务层(将使用Web Api完成) 业务逻辑层 数据访问层 数据对象层 我的问题是我是否需要为Web应用程序和服务层(WebAPI)创建两个不同的MVC项目。因为他们的两个都将被托管。我已经看到WebApi模板还支持ActionMethods(当类由控制器类继承时)。所以,WebAPI模板既可以用作WebApp,也可以用作服务层 遵循的最佳实践是什么 我知道在这些地点也有类似的问题

我正在设计我的项目的架构,这将

  • Web应用程序(客户端)
  • Windows应用程序(客户端)
  • 移动应用程序(客户端)

  • 服务层(将使用Web Api完成)

  • 业务逻辑层
  • 数据访问层
  • 数据对象层
  • 我的问题是我是否需要为Web应用程序和服务层(WebAPI)创建两个不同的MVC项目。因为他们的两个都将被托管。我已经看到WebApi模板还支持ActionMethods(当类由控制器类继承时)。所以,WebAPI模板既可以用作WebApp,也可以用作服务层

    遵循的最佳实践是什么

    我知道在这些地点也有类似的问题

    但我想明确我的要求


    提前感谢。

    我能看到的唯一实际区别是,如果你把它们放在同一个项目中,你的API突然与你的web应用紧密耦合,没有它就无法生存,这是不必要的


    在同一解决方案中创建单独的项目,并将它们作为两个单独的站点托管。

    定义体系结构需要确定每个组件的职责。 ASP.NETWebAPI通常必须是一个轻量级的层,它关注纯HTTP语义中的状态表示——有点类似于SOAP在传统Web服务中的作用

    因此,在ASP.NET Web API应用程序中,您应该很少有业务逻辑。因此,我不会简单地增加额外的物理层的开销,包括网络延迟、序列化和反序列化等

    这是我的首选方法:


    为什么不创建两个独立的应用程序?web应用程序和API有两个完全不同的用途。您仍然可以将它们托管在一起。简单的方法是,您可以在独立程序集中分离Web APi,并将其引用到您的Web项目中。但是考虑在客户端使用MVC,而不是在服务端使用MVC,这样您就不再需要使用ASP.NET MVC了。您可以使用Angularjs或Durandal.js在客户端进行管理,只需服务器端的Web APi就足够了you@AntP,创建两个单独的项目(WebApi和WebApp)的问题出现在我面前,因为MVC WebApi模板也支持MVC Internet应用程序模板支持的功能。因此,如果这两个应用都将被托管,那么我需要创建两个不同的项目,并在IIS中作为两个不同的网站托管。制作两个不同项目的目的是什么?如果不制作(只有一个项目是为WebApi和WebApp制作的),它会产生什么问题。你能帮我一下吗。谢谢大家。如果IIS中的webapp关闭,则我的服务也将关闭(如果我使用单个项目)。因此,将两个项目分开是一个很好的方法。即使webapp停止维护,那么webapi服务也将运行并服务于我的其他客户。嗨,对不起,我不了解你的架构。你是说MVC WebApp会调用MVC WebAPI,而MVC WebAPI会调用BLL和DAL吗。是这样吗。MVC Web App->MVC WebAPI->BLL->DAL DAL->BLL->MVC WebAPI->MVC Web App->返回视图。@shakti我的意思是ASP.NET MVC调用BL。应该没有什么理由转到Web API。我有多个客户端将调用服务器来实现该功能。服务器上的功能应该是一个公共API,并且应该为我的所有客户端(web、mobile、windows)提供结果。因此,来自MVC Web App的调用应该转到Web Api,来自移动设备的调用应该转到Web Api,来自windows的调用应该转到Web Api。从WebAPI调用将转到BLL和DAL。如果我对我的架构有错误,请告诉我。@shakti哦,这是我的建议。正如我所解释的,WebAPI是围绕内部API的薄壳,应该作为库实现,这就是MVC将要使用的。我想我解释得再清楚不过了。但如果你想采取另一种方法,欢迎你。