2012-11-15 124 views
1

我正在计划为一个项目开发一个使用MVC4,EF5和Web Api的应用程序。请任何人建议我们如何设计不同层次的项目。 Web使用MVC4和数据层使用EF5/Repository模式和Web Api进行JQuery访问。应用程序体系结构mvc4 ef5

+0

为什么你打算使用Web API进行jQuery访问?为什么不只从页面引用jquery文件? – Suhas

回答

5

我会推荐使用下图所示的图层。

Architecture Layers in an MVC App

我添加了处理多个存储库中的交易Unit of Work Design Pattern。我还使用处理所有业务逻辑的应用程序或领域层。当您使用域图层时,您的Web API就变成了一个薄层,用于处理对象到远程客户端(如Web客户端(即Web浏览器))的传输和序列化。 Web客户端使用JQery ajax与Web API进行通信。 MVC控制器用于呈现视图(您的HTML,CSS和JavaScript)。此体系结构中MVC的模型部分是您的应用程序/域层。请注意,此架构也适用于Single Page Applications (SPAs)

+0

非常感谢Kevin,这对任何人都是非常有价值的信息。 – Parwej

0

凯文,非常有趣和有用的答案,很清楚,谢谢。只是一个问题。当使用Web API并试图遵循你的架构流程时,请告诉我,如果我理解得很好:客户端请求(通过AJAX)=> Controller => ASP.NET Web API =>应用层=> UoW => Repository => EF => DB。所以现在,响应:DB => EF => Repo => UoW =>应用层=> ASP.NET Web API =>控制器(填充视图或返回json到客户端)=>客户端上的更改(页面/视图/ jquery等)。谢谢。

+0

将答案看作是另一个答案是不常见的。你可能应该这样做,作为评论,警察本网站的人可能会纠正你。话虽如此,你很接近,但AJAX请求并不直接传递给Controller,而是直接传递给Web API。在SPA中,Controller使用的唯一时间是呈现初始页面。在初始页面呈现后,Web客户端向Web API发出AJAX请求,返回用于更新视图的JSON,最好是使用类似KnockoutJS的东西来处理客户端上的MVVM引擎。 –

+0

凯文,我对我的答案出现在哪里感到非常抱歉,其他时间我评论说我可以选择“添加评论”(如现在!),但在它看来只是添加答案的可能性。还有一个问题,那就是第一次使用控制器来渲染初始页面,它是向Web API发送数据请求还是直接向应用层发送数据请求?谢谢你,再次抱歉。 – Scheveningen

+0

你可以采取任何方式,设计决定可能应该考虑页面布局和用户体验。我倾向于只将初始页面作为布局的骨架,并在初始加载后使用Web API填充细节。通过这种方式,用户可以看到初始页面布局的快速渲染,并可以通过某些指示器异步地查看细节,让用户知道这些细节区域仍在渲染。 –