【问题标题】:ASP.NET MVC Three Tier - what's everyone else doing?ASP.NET MVC 三层 - 其他人都在做什么?
【发布时间】:2010-10-12 15:21:54
【问题描述】:

当我开始开发一个新的 Web 应用程序时,我倾向于使用经过验证的 ASP.NET MVC 架构 BLL(由一组包含所有业务逻辑的服务组成)和一个 DAL(由一组 repositories 组成,它们通过 EF/*Linq to SQL* 之类的方式促进工作单元模式。

controllers 只与 services 对话,services 只与 repositories 和其他 services。服务层是定义模型的地方,这些模型用作控制器的输入/输出。

我的问题是:其他人在做什么?我很想知道人们是否在 ASP.NET MVC Web 应用程序的上下文中做任何不同的事情。例如,有 CQRSDomain Events 等概念。有人用这些来解决我上面描述的方法的问题吗?

这个问题主要是试图发现我不知道我不知道的东西。我希望不要太含糊,但我认为重要的是要看看别人在做什么来评估你自己的方法。

【问题讨论】:

  • 这应该是一个社区维基吗?
  • 有趣的问题,但这是为了讨论。至少让它成为维基,或者更好的是考虑转移到programmers.stackexchange.com
  • 干杯,伙计们,把它变成了社区维基。

标签: asp.net-mvc architecture cqrs three-tier


【解决方案1】:

我们基本上在做您正在做的事情,除了我们将存储库接口视为服务(它们在业务层中定义),因此我们的控制器经常直接访问它们。 IoC 容器负责通过构造函数注入注入正确的存储库实现。所以数据层依赖于业务层,负责实现仓库,而业务层只是假设它定义的所有仓库在运行时都是可用的。

我们将产品进一步划分为不同的功能模块。一些模块相互依赖(例如,一切都依赖于我们的核心功能,而其他大部分模块都依赖于门户网站模块),但将它们保存在单独的 dll 中有助于我们避免使这些模块过于紧密耦合.因此,系统只能加载给定客户端已付费的模块的 DLL。我们计划使用在核心模块中定义事件的事件总线,以允许模块通过发布/订阅模型进行通信。

【讨论】:

    【解决方案2】:

    我将 CQRS 与 MVC 一起使用。这真好。您仍然使用 MVC 模式,但在控制器中,我使用命令模式进行写入,仅使用纯 NHibernate Linq 进行读取......还有一些 SolrNet 用于读取。 :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-17
      • 2020-05-13
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      • 2020-04-23
      • 2020-04-11
      • 2015-06-12
      相关资源
      最近更新 更多