我有一个MVC应用程序,它具有以下架构......
UI项目(MVC) 控制器(C) - 实例化视图模型 ViewModels(M) - 用于向视图提供数据的主要工具 观点
业务层
从Repository层返回数据并返回实体/模型对象
实体/模型层(域实体层)
存储库层(数据层) 数据访问并将实体/模型对象返回到业务层
那么,使用上述架构什么与业务层交互?(viewmodels或controller)。
答案 0 :(得分:0)
不试图对术语进行排序,我会在java中说(我认为你会看到这通常是如何应用的)通常使用以下结构:
控制器映射到url,并验证参数。他们将业务逻辑委托给服务类。服务类返回模型,控制器将模型传递给视图进行渲染。
服务类依赖于dao / repository层,它执行某种数据库查找以获取模型对象并将一些业务逻辑应用于它。
回到您的示例,它是与业务层交互的控制器。我们的想法是将业务逻辑从控制器中移出并远离dao层。
答案 1 :(得分:0)
您的控制器负责获取数据,使用该数据构造视图模型并将该Viewmodel传递给视图。为此,您可以将所需的服务注入您的控制器,如果您没有服务层,它将与您的服务层或业务层进行通信。
实际上,要获取数据,您不需要业务层或域对象。您可以创建一个查询服务,根据您的视图的需要返回数据,这样可以轻松获取数据而无需域模型的开销,而查询不需要(命令查询分离)。