有哪些优秀的开源c#领域模型的例子

有哪些优秀的开源c#领域模型的例子,c#,open-source,concurrency,business-objects,C#,Open Source,Concurrency,Business Objects,我是一名相当年轻的开发人员,仍处于职业生涯的模拟阶段。我已经读了很多关于并发和使用工作单元来允许业务层控制持久性事务等主题的书。我甚至实现了一些实现这些主题的痛苦但功能性的代码。但我从未真正见过真正优雅的实现的真实示例。我身边没有很多优秀的TDD、注重模式的榜样,因此我不得不从外部世界寻求指导 所以,我正在寻找一些开源企业应用程序领域模型的优秀例子。最好用c#编写,但其他语言也可以,只要它们是干净优雅的领域模型解决方案的好例子 我真正希望看到的是并发、业务规则和对象验证、事务/工作单元以及半透明

我是一名相当年轻的开发人员,仍处于职业生涯的模拟阶段。我已经读了很多关于并发和使用工作单元来允许业务层控制持久性事务等主题的书。我甚至实现了一些实现这些主题的痛苦但功能性的代码。但我从未真正见过真正优雅的实现的真实示例。我身边没有很多优秀的TDD、注重模式的榜样,因此我不得不从外部世界寻求指导

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

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

我知道我可以开始随意地研究一些开源项目,并尝试从中分辨出好的方面,但我希望这里的专家社区会有一些好的项目想法,以使工作顺利进行

谢谢你抽出时间

编辑 我对使设计和构造更容易的框架并不感兴趣。我对框架的选择,或者是否使用框架是一个必要的考虑,但与我在这里的问题完全不同。除非这些框架本身是开源的,而且是很好的例子


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

虽然这不是你想要的,iDesign的朱瓦尔·洛伊(Juval Lowy)编写了一些精彩的代码,可以解决您上面提到的许多情况

Tim McCarthy(Wrox出版社)的书“.NET域驱动的C#设计”可能也很有意思。

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


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

我非常喜欢oxite cms的体系结构。我从那个项目中学到了很多。我使用nhibernate进行数据访问,而不是使用linq2sql,这对我来说很好。当然,这不是一个大规模的项目,但它是一个完美的开端。CSLA不遵循DDD范式

Tim McCarthy(Wrox出版社)的《带C#的.NET域驱动设计》这本书非常好

理解DDD的最好的书是Eric Evans写的。这本书是好的DDD设计的“圣经”


除此之外,您还可以在上找到许多资源。在那里,您可以找到DDD专家(包括Eric Evans)的更多视频和文章,还有一个良好DDD设计的示例应用程序,但不幸的是,它是用java编写的:(

您是否考虑过修改该应用程序


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

你可以检查一下,我用它来尝试它的工作非常好,它有一个很好的DDD和BO实现,非常通用和快速,安装模式是olso的经典,所以如果你瞄准一个web应用,你也可以检查一下。

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

Rob Connery(MVC Storefront和Weke Road博客的)最近进入了DDD。MVC Storefront应用程序可能会被修改以反映他的学习,或者我相信是这样。无论如何,他在这个主题上有一些很好的材料

该网站有一个C#示例应用程序

DDD的一个特点是,它往往与编写它的bsuiness紧密耦合(从积极的意义上讲)。因此,最好的示例可能与IP捆绑在一起,不太可能作为操作系统提供


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

我希望我能告诉你我有一个很好的建议,因为我希望看到这个问题的答案是一致的全垒打选择。但是

…最好的例子可能是与IP有关,不太可能作为操作系统提供

然而,有一个领域我们有丰富的开源代码:软件开发工具


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

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

而且它没有C代码,事实上我