ASP.NET MVC 小项目架构

本文关键字:小项目 MVC NET ASP | 更新日期: 2023-09-27 18:30:21

我到处读了很多书,但我找不到MVC项目分离 ASP.NET 最佳实践问题的明确答案。我有一个很小的单人展示项目,我想使用实体框架拥有对象关系映射数据库,但我想避免将数据库层分离到另一个项目。据我所知,将数据模型放入MVC项目的隐式模型文件夹不是好主意,但是放在哪里呢?视图模型(在模型文件夹 I gues)、edmx 文件、接口、存储库的正确命名和情况是什么,放置整个业务逻辑的最佳位置是什么?

编辑

我对将 DAL 分离到另一个项目表示自己是错误的,在单独的项目中拥有或不具有 DAL 对我来说并不重要,我只是在这种规模的项目中看不到这种方法的任何优势。

ASP.NET MVC 小项目架构

如果你的单人秀项目随着时间的推移变成了一个大项目怎么办?如果不分离关注点,您将立即失去可扩展性。

我不会在 MVC 项目中放置任何与在客户端上呈现或编辑数据没有直接关系的内容。

考虑一个负责通信数据库的服务层。考虑描述实体的域层。然后,您可以从域实体构建视图模型,这些实体通过服务层进行检索。

这是一个非常基本的架构。如果数据库中有 4 个表,则有 4 个域实体(模型或要调用它们的任何内容)、4 个 EF 配置文件和 4 个视图模型,用于在页面上显示数据。如果您随后决定在数据库中再添加几个表,您的 MVC 项目将开始变得非常大,这还没有提到任何可以处理 CRUD 操作的接口或服务。

好吧,默认情况下 ASP.NET MVC 只有 2 种命名约定(无论如何,可以更改):

    控制器放置在"控制器"
  1. 文件夹中,其名称应以"控制器"字结尾,如"ShoppingChartController"。
  2. 视图放置在 Views 文件夹的子文件夹(其名称与控制器名称相同)中,默认情况下,它们的名称与控制器的操作名称相同。
原因是

默认情况下,MVC 框架在这些文件夹中查找控制器和视图(实际上有一个更复杂的逻辑来查找它们,但其余的您可以从我上面提到的网站和 MSDN 获得)。

至于模型 - 这完全无关紧要。至于我,如果我需要一个非常简单的网站,那么我将ViewModels放入ViewModels文件夹中,并将它们命名为"ShoppingChartViewModel",并将映射到数据库中相应表的数据模型放入Models文件夹中。如果您有服务或其他未封装业务逻辑的内容,则可以将它们放入"服务"文件夹中。