【问题标题】:Asp.net MVC layered ArchitectureAsp.net MVC 分层架构
【发布时间】:2012-05-17 09:24:23
【问题描述】:

我是 Asp.net MVC 的新手。我使用数据源创建了 mvc 应用程序,但我希望使用 n 层架构的 mvc 应用程序..与 asp.net 应用程序一样,它们通常具有表示层业务层和数据层。

我想使用 n 层架构创建 mvc 应用程序...任何遵循 mvc n 层架构的帮助或演示链接..

【问题讨论】:

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


【解决方案1】:

您的 ASP.NET MVC 控制器可以与您的 n 层应用程序中的任何类进行通信。

例如,您的ProductsController 将调用您的ProductsBusiness 层,该层将调用您的ProductRepository,进而查询数据库。

你的控制器应该是这样的,所以里面不应该有太多的逻辑。一种看待它的方法是想象你必须替换整个 ASP.NET MVC UI 层 - 所以你想要重用的任何东西都应该降低。另一种可视化的方法是想象编写第二个 UI,它需要重用业务层来完成所有相同的事情。

因此,您的 MVC 应用程序中的控制器位于其他 n 层层之上。

【讨论】:

    【解决方案2】:

    https://templatestack.azurewebsites.net/Templates/GetAll提供了很多不同模板的N层应用示例

    大部分模板都具有相似的结构:

    数据 - 数据层

    1. 数据库表的项目包含 Db 上下文和迁移配置

    2. 数据库抽象级别项目 - 包含数据库上不同抽象级别的实现,例如工作单元和存储库模式

    3. 数据库模型项目 - 包含所有 db 模型,包括从 Web 项目移动的 ASP.NET 标识中的这些模型

    服务-逻辑层

    • 包含应用程序的业务逻辑

    测试

    工具

    • 可能会在此处创建不同的控制台应用程序,例如 Crawlers、Importers 等

    网络工具 - 网络应用层

    1. Web 应用程序项目 - 这是经典的 MVC 项目,它去除了 Db 上下文依赖以及 db 模型依赖。包含依赖注入、Automapper 和其他外部库的配置。该架构应该使您的所有控制器操作非常小,并在服务中执行您的所有业务逻辑,这些服务由您的 IoC(控制反转)容器注入。在我们的例子中,这是 Autofac

    2. Web 应用程序基础设施项目 - 该项目包含与 Web 应用程序相关的源代码,但可能是可重用的,这就是它被 Web 应用程序分开的原因。 例如在这里我们可以放置我们的视图模型、自定义过滤器和注释、html 扩展方法和帮助器等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 2014-11-22
      • 2019-08-30
      • 1970-01-01
      相关资源
      最近更新 更多