【问题标题】:MVC5 project structure: Not sure how it should flowMVC5 项目结构:不确定它应该如何流动
【发布时间】:2015-02-27 21:24:31
【问题描述】:

我即将使用带有 Telerik Kendo UI 的 MVC5 创建一个新的 ASP.NET Web 应用程序,我希望它的结构正确。我在 GitHub 上找到了这个 Telerik sample project,但结构让我感到困惑。
有 3 层:
客户层
核心层
数据层

我不明白为什么在 Data 层有一个 repositories 文件夹,然后在 Core 层有另一个包含所有相关接口的 repositories 文件夹。任何与存储库相关的东西都不应该在数据层中吗?与业务逻辑相关的任何内容都在核心层中吗?

我还在我的数据层中使用带有 .edmx 文件的 EF6 DBFirst,所以我是否仍希望我的存储库文件夹与示例项目的结构方式相同?

我的总体目标是使用 EF6 Db First 做一些类似于他们在这里所做的事情。我仍然想要类似的层,我想最终使用 ViewModels 和依赖注入将数据传递给我的视图。

我已经尝试了数周来提出一个不错的 MVC5 EF6 DBFirst Ninject(用于 IoC)项目结构,其中包含数据层、业务逻辑层和 UI 层。有什么好的例子吗,或者有人可以解释一下应该怎么做吗?

【问题讨论】:

标签: asp.net asp.net-mvc-5 n-tier-architecture


【解决方案1】:

我所做的是为 N 层架构创建三个项目,另外一个称为 Common:

  1. Web MVC 项目

    视图作为普通 MVC 项目工作 每个控制器都有一个构造函数,其中包含使用 Ninject 传入的业务提供程序参数。

  2. BusinessProviders 项目

    这个项目包含处理我所有业务规则的多个类,例如如果我有一个有工作和用户的网站,我将有两个提供者 UsersProvider、JobsProvider 等。

  3. 数据层 (DAL)

    此项目包含 edmx 文件本身。以及与实体交互的类。

  4. 常见

    这包含整个解决方案中使用的所有其他类、枚举、助手

所以基本上我通过应用程序的数据流是:

视图 --> 控制器 --> BusinessProvider --> 数据访问类 --> 实体(数据库)

视图

我使用这种方法的原因是我发现编写代码和重用它更干净。它还有助于 IoC(在我的例子中是 Ninject)。

我在这里写了一篇简单的博文(我将在接下来的几天内写另一篇关于 Ninject 集成的博文):http://myseesharp.blogspot.co.uk/

编辑: N-Tier 的 Ninject 链接:

http://myseesharp.blogspot.co.uk/2015/01/ninject-with-n-tier-mvc-application.html

http://myseesharp.blogspot.co.uk/2015/01/ninject-with-n-tier-mvc-application_1.html

【讨论】:

  • 难以置信的反应。我已经等了几个月了。虽然我有几个问题。在您的博客文章中,您创建了 3 个以 Dal 为后缀的类。这些是否与存储库做同样的事情?大多数人不是先创建一个 ICarsRepository,然后再创建一个具有通用数据库功能的 CarsRepository 类吗?您是否基本上在这些 DAL 类中放置了访问数据库所需的任何功能?最后,我们是否需要使用接口?我假设你会在 IoC 版本中。
  • 在 IoC 中你必须使用接口,你是对的。是的,在我的 View 存储库中,DAL 是一回事。它们是读取和写入数据库的常用函数。所以例如在PassengersDAL中你可以写:GetPassengersByName(string name)
  • 或者在你的情况下你可以在存储库中创建这个函数
  • 所以我会在我的 DAL 中添加一个 edmx 文件,然后创建一个文件夹来保存我的类,并且基本上将所有数据访问函数放在每个类中。今晚我将尝试使用 IoC 进行设置。如果你真的制作了一个很棒的 IoC 版本。
  • @user2272527 查看我的编辑,希望它能让您了解如何操作。
猜你喜欢
  • 2019-02-28
  • 2021-08-01
  • 2019-04-23
  • 1970-01-01
  • 2017-12-28
  • 2011-02-12
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多