0

我正在从 web 表单迁移到 MVC,我有点迷路了。MVC Vs n 层架构几乎回答了我的问题,但并不完全正确。

在 Web 表单中,我通常会在我的解决方案下使用 3 个项目来构建我的网站;UI、BLL 和 DAL,也许还有一个用于测试(我相信这是常见的做法)。

现在我正在启动 MVC3,看来我不需要根据 Visual Studio 为我布置的方式将 3 分开。

MVC 是设计用于运行多个项目还是应该只运行一个项目?Web 表单似乎适合 N-Tier 应用程序,尽管我可以通过删除我的 Models 文件夹并将其移动到我的 DAL 并删除我的 Controller 文件夹并将其移动到我的 BLL 来制作我的 MVC N-Tier 似乎我是与 MVC 想要我做的事情作斗争(或者可能只是 Visual Studio 的设置方式)?或者可能保持模型和控制器原样,但在模型文件夹中创建一个“视图模型”,并且控制器与 BLL 进行大部分逻辑对话?任何指针都会很棒。

4

2 回答 2

3

MVC 只是一种表示模式,因此它只说明了您应该如何构建表示逻辑。它没有说明数据访问模式或您如何构建业务域。

我倾向于在 Web 项目 (MVC)、模型(域)项目以及数据访问和/或服务项目中构建我的 Web 应用程序,具体取决于应用程序。我总是在 web 项目中删除我的 Models 文件夹,因为我不想在那里。我所有的域模型和视图模型都存在于模型项目中。

关于控制器,控制器应该只是用户想要做什么(请求)的翻译器,因此模型和视图可以相应地响应(响应)。即控制器应该很薄,以至于您几乎没有注意到它。控制器应该包含用于选择模型和显示什么视图的逻辑。所有其他逻辑都属于模型。

此外,视图应该只包含非常简单的表示逻辑,如 ifs 和 foreaches,但条件应该在视图模型中准备好。

于 2013-02-15T11:50:02.620 回答
1

MVC 模型仅适用于 UI。您可以继续使用与以前相同的关注点分离。

在我们的项目中,我们将网站层和视图模型保留在 Web 项目中。我们使用 WCF 服务进行数据访问(这将对应于您的 DAL)。弥合差距是一个逻辑项目(这将对应于您的业务逻辑),其中包含对服务的客户端访问以及从服务结果到视图模型需要发生的任何转换。

我们的控制器和视图模型都很薄。逻辑位于逻辑层和保持分离的域模型中。我们通常会在服务合同(在您的情况下为 DAL)和视图模型之间共享域模型,但视图模型从不直接公开域模型。

我希望这有帮助。

于 2013-02-19T15:20:02.073 回答