从业务层中的DDD模式开始

时间:2012-09-09 06:48:35

标签: asp.net domain-driven-design petapoco

我已经在我的解决方案资源管理器中分离了各个层(类库项目),如下所示:

我想使用PetaPoco micro-ORM和someone suggested me在Repository层添加PetaPoco。正如所建议的那样,我将PetaPoco添加到Repository项目并从数据库生成模型。现在,自动生成的POCO驻留在存储库中。

我不想遵循的是当我想要实现DDD时,我想要模型中的所有POCO,即业务层。

我添加了一个WebForm,用于在WebUI层中登录用户。现在,当使用DDD时,我是否需要模型中的接口?在哪里编写Validate Login方法?

1 个答案:

答案 0 :(得分:2)

我强烈建议您(重新)阅读Eric Evans关于域驱动设计的书。你也应该先看看先生。埃文斯的书后的视频。 DDD不是关于存储库,数据库,程序集或用户登录。

也有可能DDD实际上并不是你想要的。看起来你正在寻找一种分层方法,在数据库顶部的一些存储库之上的某些实体/ app-services上使用ui。根据您正在构建的内容,这可能实际上就是您所需要的一切。

如果你想使用PetaPoco,如果你的“orm”从数据库生成“模型”,那么在不同的项目中分离它们没有多大意义。模型由orm生成的事实(以及它们可能需要在将来重新生成的事实)使得它们与orm完全耦合,因此在单独的程序集中移动它们无需购买任何东西。

要回答您的ValidateLogin问题,我建议将所有与auth相关的代码移动到与其他层正交(垂直)的基础架构层。应用用户不一定需要是“实体”。您也可以在处理身份验证的模型层中使用app-service,但我通常认为auth是基础架构问题而不是业务问题。

最后,我建议您熟悉这种架构的缺陷和优点,然后确定它是否适合您正在构建的内容。另一方面,你需要意识到DDD的构建并不便宜(正如Evand先生所说),你可能不会在前几次做到正确。