所以我是MVC的新手,并在SO和一些博客上阅读了几十个类似的问题。我无法理解如何构建我的应用程序。我要么没有得到它,要么人们似乎对如何做到这一点有不同的看法。所以这是我特定的简单示例:登录屏幕和帐户创建屏幕。
根据我的理解,我应该有以下内容:
查看 在这种情况下简单的两个视图
模型 两种视图模型。登录有用户名和密码。注册有用户名,密码,电子邮件等。只有属性没有方法。
控制器 通过调用CreateUser()
等服务层来构建视图模型商家/服务 单独的项目。有方法与数据库交互并应用业务逻辑。由控制器调用,将输出按压到视图模型格式。该项目有自己的模型/类,不依赖于特定视图。此层中的CreateUser()将调用db
上的存储过程这是正确的流量吗?而且,当从业务层返回数据时,我不应该使用视图模型。那么我在业务方面创建另一组模型,类似于db中的逻辑实体吗?
答案 0 :(得分:2)
这听起来很合理。关于单独的模型和视图模型的观点是一般建议,以避免服务层和UI之间的紧密耦合。 这意味着即使UI屏幕不同,多个应用程序也可以使用这些服务。但我认为在某些情况下跳过视图模型是有意义的,如果它们成为模型的镜像。我只倾向于创建视图模型,如果它们在为视图准备数据(格式化等)时添加某种值。
但是,有些人可能会声称您应该始终创建视图模型 - 甚至是镜像模型的视图模型。我也可以理解这个论点,因为它与避免UI和服务之间的耦合有关,这使得您可以在不改变链接到UI的情况下发展服务。你必须对你的重要程度做出判断,因为这是以在相同对象之间“传递”价值的层为代价的。