什么是质量域模型的一些好的开源 c# 示例[关闭]

Posted

技术标签:

【中文标题】什么是质量域模型的一些好的开源 c# 示例[关闭]【英文标题】:What are some good open source c# examples of quality domain models [closed] 【发布时间】:2010-11-07 01:08:23 【问题描述】:

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

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

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

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

感谢您的宝贵时间。

编辑

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

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

【问题讨论】:

我刚坐下来问同样的问题,可惜没有人回答。你自己发现了什么吗? 我确实还没有尽职尽责,但是那里有这么多,恐怕我要找很长时间才能找到我要找的东西。 【参考方案1】:

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

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

了解 DDD 的最佳书籍是 Eric Evans 的 Domain-Driven Design: Tackling Complexity in the Heart of Software。这本书是优秀 DDD 设计的“圣经”。

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

【讨论】:

忘记在infoq.com/minibooks/domain-driven-design-quickly 提及免费书籍。这是 Eric Evans 书的短版。 翻阅Oxite后,我觉得我同意这篇文章notsotrivial.net/blog/post/2009/01/07/Oxite-A-Deeper-Look.aspx【参考方案2】:

您可以查看nopCommerce 我用它来尝试它工作得非常好,它很好地实现了 DDD 和 BO,非常通用且快速,安装模式也是经典的,所以如果您针对网络应用程序,您也可以看看这个。

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

虽然这并不完全符合您的要求,但 iDesign 的 Juval Lowy 编写了一些很棒的 WCF Samples 来解决您上面提到的许多情况。

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

【讨论】:

谢谢,我已经阅读了 Martin Fowler 的企业应用程序开发模式,它确实让我走上了正确的道路。我得去看看麦卡锡先生的提议。【参考方案5】:

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

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

【讨论】:

我们在我们的一个主要项目中使用了 CSLA,我们仍然称它为撒旦的产物。它,或者至少我们的实现,打破了开闭原则。实施也存在大量问题。幸运的是这不是我的选择,我再也不会使用它了。 我同意。它是撒旦的产物。更准确地说,这是 Rocky 用来为 OO 初学者写一本好书的优秀教学工具。由于它是教学性的,它在重构方面做得还不够,还需要进一步的设计改进(如果它做得那么远,它将失去对初学者的教学价值)。然后,它被认为是一个完全完整的、为企业做好准备的框架(这很荒谬),许多企业被骗相信了这个说法。由于其背后的宗教***和大师地位,甚至开发人员也被欺骗了。【参考方案6】:

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

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

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

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

【讨论】:

【参考方案7】:

我希望我能告诉你我有一个很好的建议,因为我很想看到这个问题得到一个一致的本垒打选择的回答。但是作为objektivs observed,

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

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

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

【讨论】:

【参考方案8】:

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

【讨论】:

【参考方案9】:

您是否考虑过重新审核Castle Project?

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

【讨论】:

【参考方案10】:

我会看看dofactory GoF 网站。他们有很多示例,您可以以很小的价格购买,包括: * MVC -- ASP.NET Web 应用程序 * MVP -- Windows 窗体应用程序 * MVVM -- WPF 应用程序 它还包括两本非常好的书:《企业设计模式》和《头脑优先设计模式》

【讨论】:

这两本书我都拥有并读过,并且很珍惜这两本书。包裹真的值钱吗?您从中获得了哪些从捆绑的文献及其配套资源中无法获得的具体好处? 毫无疑问这是值得的。您可以获得 aspt.net、windows 窗体应用程序和项目每个部分的 UML 模型的完整源代码。它们是您想通过出色地使用设计模式构建的任何东西的绝佳构建块。【参考方案11】:

我目前正在使用 StuctureMap、Fluent NHibernate、Asp.net MVC、AutoMapper、Castle 和 xVal 框架进行项目。我一直在从示例项目 Nerd Dinner 和 Code Camp Server 中获得帮助。如果您对这些框架有任何疑问,请告诉我。

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

http://nerddinner.codeplex.com/

【讨论】:

【参考方案12】:

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

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

【讨论】:

以上是关于什么是质量域模型的一些好的开源 c# 示例[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

我在哪里可以找到一些 DDD 的好例子? [关闭]

使用 c# 的 AppFabric 缓存示例 [关闭]

WPF(C#)的优秀开源报告工具/框架[关闭]

高质量图像缩放库[关闭]

有哪些好的C#开源项目推荐?

使用 DeviceIoControl 都有哪些好的策略?