2

当我开始开发一个新的 Web 应用程序时,我倾向于使用经过试验和测试的 ASP.NET MVC、BLL(由一组包含所有业务逻辑的服务组成)和一个 DAL(由一组存储库组成)的相同架构这促进了工作单元模式而不是像EF /*Linq to SQL*) 这样的东西。

控制器仅与服务对话,服务仅与存储库和其他服务对话。在服务层是定义模型的地方,这些模型用作控制器的输入/输出。

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

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

4

2 回答 2

1

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

于 2010-10-12T20:25:36.113 回答
1

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

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

于 2010-10-12T15:38:18.653 回答