将MS的PetShop3.2进行了比较大的重构
1、重构原因:
微软的PetShop作为标准企业应用示例中的一个已经推出了很多个版本,目前的3.2版本和以前的版本相比较,平心而论确实有了很大的提高(1.0版本无论是体系结构还是代码编写都足可以作为一个很好的反面示例,呵呵)。但是还是非常的不理想,很多.net程序员居然把它视为以面向对象方式开发的.net应用的经典。为了纠正目前这种落后的实现方式(意识),做了这次重构,希望可以给大家做一个参考,实现的很仓促,肯定还有很多的不足,大家多提意见继续完善这个例子。(不过目前我觉得由于这个例子太过简单,不能真正做到示例OOD、OOP的目的。)
2、重构内容:
1、数据访问层由于改用nhibernate实现比重构前减少了1000多行代码。重构前支持oracle和MsSql,重构后可以支持任意的数据库。
2、业务逻辑层由领域模型,取代了重构前的“贫血的实体类” + “控制类”模式。
3、业务逻辑层不再直接依赖于COM+,更易于测试。(这个DEMO没有加入单元测试)
注:为了增强说明性和更好的进行对比,保持了原有的表示层和关系模型。实际上,我觉得最应该重构的就是它的关系模型,不过一个比较“烂”的关系模型可能会更好的示例nhibernate吧,呵呵。重构后的代码总量比重构前减少了三分之一。
3、系统环境:
1、.net1.1
2、nant0.85 + nantcontrib-0.85-rc1(这个我没放到包里,自己下载吧)
3、log4net1.2.0.30714
4、nhibernate-beta-0.6
5、sping.net0.6(不是目前官方release的那个,是通过目前cvs下载编译的。API和配置文件和以前都有些变化)
4、项目目录:
BLL: Domain Model
DAO: DAO
Web: 表示层
TransHelper:提供分布式事务支持能力(实现方式请参考 http://www.gotdotnet.com/team/dbox/default.aspx?key=2004-07-12T08:40:44Z)
注:其余目录有些是遗留的,我觉得还有用的就没删。
其他:
1、这个项目是用SVN管理的,如果想看到重构的“脚印”,可以给我发email(agilecoder@sina.com)
2、向大家推荐一款 NHibernate Query Analyzer,这个项目还处于发展中不是很成熟,但是想法很好。先加载好各种配置文件,然后你就可以随便写HQL语句了,它会自动即时生成SQL语句,即时提供错误信息。执行时会给出SQl Result(记录集)和HQL Result(对象图)。降低了编写和优化HQL的门槛和难度。( http://developer.berlios.de/projects/nqa/ )这个项目还是用SVN管理的,我很喜欢。
下载地址:http://forum.javaeye.com/viewtopic.php?p=59528