Asp.net mvc 4 理解新的webapi方法
我知道,在开发MVC应用程序时,并不是每个人都使用完整的体系结构,但假设我有以下体系结构:Asp.net mvc 4 理解新的webapi方法,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,我知道,在开发MVC应用程序时,并不是每个人都使用完整的体系结构,但假设我有以下体系结构: App.Core --> Class Library (POCO or Domain objects) App.Data --> Class Library (Repository and Entity Framework) App.Service --> Class Library (Service layer with all business logic) App.Web --&g
App.Core --> Class Library (POCO or Domain objects)
App.Data --> Class Library (Repository and Entity Framework)
App.Service --> Class Library (Service layer with all business logic)
App.Web --> asp.net MVC 3.0 project
在我们的MVC应用程序中,我们尝试采用以下方法:
- 在控制器内部(在方法中),我们实例化了一个ViewModel
- 我们从App.Service层填充ViewModel调用方法
- 填充ViewModel后,我们将其返回到视图(因此视图 现在是强类型)
谢谢有几个案例需要考虑: 您想让这个Web API作为MVC应用程序的服务层和数据访问吗?如果是,那么您应该从ASP.NET MVC项目中完全删除App.Service的所有引用,并让它查询Web API以获取数据。在这种情况下,Web API位于ASP.NET MVC应用程序和数据访问之间。是Web API与服务层对话并通过HTTP协议将其公开
或者,您是否希望为您的网站提供可供其他客户端(web浏览器除外)使用的附加API?在本例中,ASP.NET MVC应用程序和Web API位于同一层上。都可以查询服务层以填充视图模型,只是在MVC应用程序中,您将这些视图模型传递给视图,这些视图将它们转换为HTML,而在Web API层中,您可能使用稍有不同的视图模型,但它们仍然是从服务层填充的,并通过相应的序列化机制传递给客户机(JSON,XML,…)我知道这已经晚了,但我实际上在寻找同样的建议,我找到了这篇文章 难道MVC和Web API不在同一层中吗意味着要对代码进行更多的维护工作,或者可能是重复代码?mvc web不被视为浏览器客户端吗?对我来说,让WebAPI成为其他人的唯一层是有意义的,反过来它会调用您的服务层进行处理
让Web API和MVC直接与服务层对话有什么好处?Web API难道不能成为服务层的包装器吗?我相信您的第二种方法就是我们正在寻找的。考虑到我们可能有其他客户端(iPad、iPhone等)因此,我们的结论是让MVC和Web API位于同一层。让它们都与服务层(包含业务逻辑)交互反过来,根据谁调用了什么来填充不同的视图模型。正确吗?@Vlince,没错。你已经很好地总结了它。就什么是最佳方法而言,我也处于相同的情况@DarinDimitrov或Vlince。你能不能创建一个空模板来查看正在运行的服务?你什么时候会想使用web api作为服务层对于你们的mvc应用程序,若它们在同一个解决方案上(你们提到的第一种方法)??我认为,在第二种选择中,Web API将只用于向网络公开服务层的某些部分,所以它的操作将完全并没有逻辑(只调用服务层)。它是一个非常薄的代理,因此易于维护,并且不存在重复代码的可能性。概念性示例:您有一个功能完整的MCV网站,希望具有上述架构或类似的架构。现在,您的经理说您需要移动应用程序。您需要另一层。假设您的网站具有登录。此日志in通过用户名/密码进行服务调用,成功后返回完整网站上的配置文件或错误页面。API位于移动应用程序和服务层之间,与网站位于同一层,但返回一些JSON,而不是{success:true,UID:some number},允许手机以自己的呈现方法绘制配置文件页面。
App.Data --> Has a reference to App.Core
App.Service --> Has a reference to App.Core and App.Data
App.Web --> Has a reference to App.Core and App.Service