使用MVC并对域实体和mvc组件的角色有疑问

时间:2011-09-06 19:26:20

标签: model-view-controller architecture

我有一个MVC应用程序,它具有以下架构......

UI项目(MVC)    控制器(C) - 实例化视图模型    ViewModels(M) - 用于向视图提供数据的主要工具    观点

业务层
   从Repository层返回数据并返回实体/模型对象

实体/模型层(域实体层)

存储库层(数据层)    数据访问并将实体/模型对象返回到业务层

那么,使用上述架构什么与业务层交互?(viewmodels或controller)。

2 个答案:

答案 0 :(得分:0)

不试图对术语进行排序,我会在java中说(我认为你会看到这通常是如何应用的)通常使用以下结构:

控制器映射到url,并验证参数。他们将业务逻辑委托给服务类。服务类返回模型,控制器将模型传递给视图进行渲染。

服务类依赖于dao / repository层,它执行某种数据库查找以获取模型对象并将一些业务逻辑应用于它。

回到您的示例,它是与业务层交互的控制器。我们的想法是将业务逻辑从控制器中移出并远离dao层。

答案 1 :(得分:0)

您的控制器负责获取数据,使用该数据构造视图模型并将该Viewmodel传递给视图。为此,您可以将所需的服务注入您的控制器,如果您没有服务层,它将与您的服务层或业务层进行通信。

实际上,要获取数据,您不需要业务层或域对象。您可以创建一个查询服务,根据您的视图的需要返回数据,这样可以轻松获取数据而无需域模型的开销,而查询不需要(命令查询分离)。