MVC5项目结构:不确定它应该如何流动

时间:2014-12-31 22:50:57

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

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

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

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

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

我已经尝试了几周,想出了一个很好的MVC5 EF6 DBFirst Ninject(用于IoC)项目结构,包括数据层,业务逻辑层和UI层。那里有没有好的例子,或者有人可以解释一下应该怎么做?

1 个答案:

答案 0 :(得分:1)

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

  1. Web MVC项目

    视图作为普通MVC项目工作 每个Controller都有一个构造函数,其中使用Ninject传入了Business Provider Parameters。

  2. BusinessProviders项目

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

  3. 数据层(DAL)

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

  4. <强>公用

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

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

    查看 - &gt;控制器 - &gt; BusinessProvider - &gt;数据访问类 - &gt;实体(数据库)

    查看&lt; - Controller&lt; - BusinessProvider&lt; - 数据访问类&lt; - 实体(数据库)

    我使用这种方法的原因是我发现编写代码并重用它会更加干净。它也有助于IoC(在我的案例中为Ninject)。

    我在这里写了一篇简短的博客文章(我将在接下来的几天内写一篇关于Ninject整合的博客文章):http://myseesharp.blogspot.co.uk/

    编辑: Ninject与N-Tier的链接:

    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