36

我是一个非常年轻的开发人员,并且仍处于我职业生涯的仿真阶段。我已经阅读了很多有关并发性和使用工作单元允许您的业务层控制持久性事务等主题的内容。我什至实现了一些痛苦但功能性的代码来实现这些主题。但我还没有真正见过真正优雅实现的真实示例。我周围没有很多优秀的 TDD、以模式为中心的榜样,所以我不得不向外部世界寻求指导。

因此,我正在寻找一些开源企业应用程序域模型的出色示例。最好用 c# 编写,但其他语言也可以,只要它们是干净优雅的域模型解决方案的好例子。

我真正希望看到的一些东西是针对并发、业务规则和对象验证、事务/工作单元和半透明日志机制的优雅解决方案。我也很想知道在域模型代码中处理异常的一些现实世界的最佳实践是什么。

我知道我可以随意开始研究一些开源项目,并尝试区分好坏,但我希望这里的专家社区能够对项目有一些好的想法来简化工作。

谢谢你的时间。

编辑

我对使设计和构建更容易的框架并不真正感兴趣。我对框架的选择,或者是否使用框架是必要的考虑因素,但与我的问题完全不同。除非这些框架本身是开源的,并且是非常好的示例。

我正在寻找的是一个“做对了”的项目,用灵活且易于维护的代码解决现实世界的问题,这样我就可以亲眼看到,并了解应该如何完成的示例这不是一个简单的 50 行教程示例。

4

12 回答 12

11

我很喜欢http://www.codeplex.com/oxite上的 oxite cms 架构。我从那个项目中学到了很多。我使用 nhibernate 而不是 linq2sql 进行数据访问,它对我很有用。当然,这不是一个大规模的项目,但它是一个完美的开始。CSLA 不遵循 DDD 范式。

Tim McCarthy (Wrox Press) 所著的“.NET Domain-Driven Design with C#”一书非常好。

理解 DDD 的最佳书籍是Eric Evans的领域驱动设计:解决软件核心的复杂性。这本书是优秀 DDD 设计的“圣经”。

除此之外,还可以在http://dddcommunity.org/上找到许多资源。在那里你可以找到更多来自包括 Eric Evans 在内的 DDD 专家的视频和文章,还有一个很好的 DDD 设计的示例应用程序,但不幸的是它在 java 中:(

于 2009-08-19T18:54:34.397 回答
4

你可以看看nopCommerce我用它来尝试它真的很好用,它很好地实现了 DDD 和 BO,非常通用和快速,安装模式也是经典的,所以如果你瞄准一个网络应用程序,你也可以检查一下.

于 2009-08-20T14:26:28.427 回答
4

看看 Martin Fowler 的书,分析模式。这是一本旧书,所以类图不是 UML,而是一些古老的东西(幸运的是,封面和封底包含对图表符号的描述)。

而且它没有 C# 代码。事实上,它根本没有任何代码,因为它不是一本关于代码的书,而是一本关于领域模型的书。但它确实有领域模型可供选择!

于 2009-08-25T06:23:19.083 回答
2

虽然这并不完全符合您的要求,但 iDesign 的 Juval Lowy 编写了一些出色的WCF 示例,可以解决您上面提到的许多情况。

Tim McCarthy (Wrox Press) 所著的“.NET Domain-Driven Design with C#”一书可能也很有趣。

于 2009-06-30T16:13:57.970 回答
1

我会看一下CSLA及其示例应用程序 ProjectTracker。在工作中,我使用 CSLA 完成了一些项目,它确实帮助您的 BO 变得更加强大和有用。

虽然 ProjectTracker 不是真实世界的领域模型,但它确实涵盖了真实领域模型需要的许多情况。因此,如果您查看使用 CSLA 的 BO 层提供的功能,您将很好地了解好的领域模型应该是什么样子。

于 2009-08-19T15:19:23.013 回答
1

Rob Connery(来自 MVC Storefront 和 Weke Road 博客)http://blog.wekeroad.com/最近进入了 DDD。MVC Storefront 应用程序可能会被修改以反映他的学习,或者我相信。无论如何,他有一些关于这个话题的好材料。

网站http://www.domaindrivendesign.org有一个 C# 示例应用程序。

关于 DDD 的一件事;它往往与编写它的业务紧密耦合(在积极的意义上)。因此,最好的示例可能与 IP 相关联,不太可能作为操作系统提供。

我倾向于看到的那种设计通常是贫血的领域模型。

于 2009-08-24T05:29:10.323 回答
1

我希望我能告诉你我有一个很好的建议,因为我很想看到这个问题得到一个一致的本垒打选择的回答。但正如客观观察到的那样,

...最好的例子可能与 IP 相关,不太可能作为操作系统提供。

但是,有一个领域我们拥有丰富的开源代码:软件开发工具。

这是一种逃避(我也没有做任何跑腿工作),但是如果这个问题不能产生一个可靠的选择并且你想自己去追求这个,我建议从我们许多人的一些更成熟的工具开始已经在使用:NUnitDotNetNukeScrewTurnWikiNAnt等。它们有几个明显的优势,其中最重要的是它们的域模型已经(相对)可供您访问。

于 2009-08-24T20:00:55.943 回答
1

我最近遇到了关于使用 MVC、nHibernate、AutoMapper 构建论坛应用程序的教程,我发现源代码的编写和结构都非常好,并提供了在 Web 应用程序、域模型和存储库/服务中使用 NH/FluentNH 的很好的示例: http:// mattias-jakobsson.net/Item/45/Building%20a%20forum%20application,%20Part%209

于 2009-08-26T11:29:33.973 回答
0

您是否考虑过重新审视城堡计划

来自 Castle 项目“Castle 是一个面向 .net 的开源项目,旨在简化企业和 Web 应用程序的开发。提供一组工具(协同工作或独立工作)并与其他开源项目集成,Castle 帮助您获得更多用更少的代码和更少的时间完成。”

于 2009-08-20T09:42:44.580 回答
0

我会看看dofactory GoF网站。他们有一堆示例,您可以以很小的价格购买,包括:
* MVC - ASP.NET Web 应用程序
* MVP - Windows 窗体应用程序
* MVVM - WPF 应用程序
它还包括两本非常好的书籍:“企业设计模式”和“Head First Design Patterns”

于 2009-08-20T17:31:02.633 回答
0

我目前正在使用StuctureMapFluent NHibernateAsp.net MVCAutoMapperCastlexVal框架进行项目。我一直在从示例项目 Nerd Dinner 和 Code Camp Server 中获得帮助。如果您对这些框架有任何疑问,请告诉我。

http://code.google.com/p/codecampserver/

http://nerddinner.codeplex.com/

于 2009-08-26T14:05:38.247 回答
0

看看我在GitHub 上的完整 Visual Studio 解决方案,您可以将其用作快速入门,因为它包含一个非常简单但分层的体系结构。

我在我的博客http://thomasjaeger.wordpress.com上发布了有关对象持久性的详细视频,我在其中探讨了解决方案中集中域模型的原因和方式。

于 2015-01-04T01:31:09.663 回答