什么是一些很好的开源c#质量领域模型的例子
我是一个非常年轻的开发者,仍然处于我职业生涯的模拟阶段。 我已经阅读了很多关于并发性等主题,并使用工作单元来允许业务层控制持久性事务。 我甚至实现了一些实现这些主题的痛苦但function性的代码。 但是我从来没有见过真正优雅实现的真实世界的例子。 我没有太多好的TDD,模式聚焦于我身边,所以我不得不去看外面的世界寻求指导。
所以,我正在寻找一些开源企业应用领域模型的一些很好的例子。 最好用c#编写,但其他语言也可以,只要它们是干净优雅的领域模型解决scheme的好例子。
我真正希望看到的一些事情是针对并发性,业务规则和对象validation,事务/工作单元以及半透明日志logging机制的优雅解决scheme。 我也很好奇在领域模型代码中看到一些真实世界的最佳实践是用于exception处理的。
我知道我可以随便开始扯入一些开源项目,并试图从坏的方面破译好,但是我希望这里的专家们能够看到一些项目的好点子,来看看这些努力。
谢谢你的时间。
编辑
我对devise和构build更简单的框架并不感兴趣。 我select框架,还是使用框架是一个必要的考虑,但是这里完全与我的问题分开。 除非这些框架本身是开源的,并且是很好的例子。
我正在寻找的是一个“做得对”的项目,用一个灵活的,易于维护的代码来解决现实世界的问题,以便我能够亲眼看到并理解应该如何完成的一个例子这不是一个微不足道的50行教程的例子。
我很喜欢http://www.codeplex.com/oxite上oxite cms的架构。 我从这个项目中学到了很多。 我使用nhibernate进行数据访问,而不是使用linq2sql,它适用于我。 当然这不是一个大规模的项目,但它是一个完美的开始。 CSLA不遵循DDD范例。
上面这本由Tim McCarthy(Wrox Press)出版的“使用C#进行.NET领域驱动的devise”是非常好的一本书。
理解DDD最好的书是领域驱动的devise:解决埃里克·埃文斯在软件核心的复杂性 。 这本书是好的DDDdevise的“圣经”。
除此之外,还可以在http://dddcommunity.org/上find许多资源。; 在那里你可以find更多的video和文章从DDD专家,包括埃里克埃文斯,有一个很好的DDDdevise的示例应用程序,但不幸的是它在Java 🙁
你可以看看nopCommerce我用它来试试它的工作非常好,它有一个很好的DDD和BO的实现,相当通用和快速,安装模式也是一个经典,所以如果你瞄准一个Web应用程序,你也可以检查。
看一下Martin Fowler的书“分析模式”。 这是一本旧书,所以类图不是UML,而是古老的东西(幸运的是,封面和封底都包含了图表符号的描述)。
它没有C#代码。 事实上,它根本没有任何代码,因为它不是一本关于代码的书,而是一本关于领域模型的书。 但它确实有域模型死!
虽然这不是你所要求的,但是iDesign的Juval Lowy编写了一些精彩的WCF示例 ,解决了上面提到的许多情况。
Tim McCarthy(Wrox出版社)出版的“.NET C#领域驱动的devise”一书也许会引起人们的兴趣。
我会看看CSLA及其示例应用程序ProjectTracker。 在这里,我已经使用CSLA完成了一些项目,它确实帮助你的BO更加强大和有用。
虽然ProjectTracker不是一个真实世界的领域模型,它确实涵盖了真实领域模型所需要的很多情况。 所以如果你看看使用CSLA的BO层提供的function,你会很好地了解什么是好的域模型。
Rob Connery(MVC店面和Weke路博客) http://blog.wekeroad.com/最近已经进入了DDD。; MVC店面应用程序可能会被修改以反映他的学习,或者我相信。 无论如何,他在这个话题上有一些很好的材料。
网站http://www.domaindrivendesign.org有一个C#示例应用程序。;
有关DDD的一件事 它倾向于与正在写的文本紧密耦合(在积极的意义上)。 因此,最好的例子可能与IP绑定,不太可能作为操作系统。
我倾向于看到的那种devise通常是贫血域模型。
我希望我可以告诉你,我有一个很好的build议,因为我很乐意看到这个问题的答案是一致的家庭select。 但是,如同客观观察到的那样 ,
…最好的例子可能被绑在IP上,不太可能作为操作系统。
但是,有一个我们拥有丰富的开源代码的领域:软件开发工具。
这是一个警察(我还没有做腿脚),但如果这个问题没有产生一个坚实的select,你想自己去追求,我build议从一些更成熟的工具,我们许多人开始已经使用: NUnit , DotNetNuke , ScrewTurnWiki , NAnt等。他们有几个明显的优势,其中最重要的是他们的领域模型已经(相对)可以访问你。
我最近遇到了有关使用MVC,nHibernate,AutoMapper构build论坛应用程序的教程,并且我发现源代码的写作和结构非常好,在Web应用程序,域模型和存储库/服务中使用NH / FluentNH的例子很好: http:// mattias-jakobsson.net/Item/45/Building%20a%20forum%20application,%20Part%209
你有没有考虑复兴城堡项目 ?
来自Castle项目“Castle是.net的开源项目,旨在简化企业和Web应用程序的开发。提供一套工具(共同或独立)和与其他开源项目集成,Castle帮助您获得更多用更less的代码和更less的时间完成。“
我会看看dofactory GoF网站。 他们有一堆例子,你可以购买一个相当小的价格,包括:
* MVC – ASP.NET Web应用程序
* MVP – Windows窗体应用程序
* MVVM – WPF Appication
它还包括两本很好的书籍:“企业devise模式”和“头一个devise模式”
我目前正在使用StuctureMap , Fluent NHibernate , Asp.net MVC , AutoMapper , Castle和xVal框架来开发一个项目。 我从示例项目Nerd Dinner和Code Camp Server获得了帮助。 如果您对这些框架有任何疑问,请告诉我们。
看一下我在GitHub上完整的Visual Studio解决scheme,你可以用它作为跳转的开始,因为它包含了一个非常简单但是分层的架构。
我已经在http://thomasjaeger.wordpress.com上的博客上发布了关于对象持久性的详细video,其中我探讨了解决scheme中为什么以及如何使用集中式域模型的原因。;