架构之路--实战项目记录(一) 概述
2012-04-01 13:43
176 查看
我正在开发的系统是一个简单的“博客+论坛+SNS”系统。应该比较好理解吧,就“博客园+csdn+开心网”模式。具体的功能在需要用到的时候详细讲解即可。
1、对最终生成的Html不好控制
2、框架略显笨重(页面生命周期,Ajax封装等)
另外,asp.net MVC是新生事物,也有一个学习的机会。本来还一直觉得MVC中<%= %>难看(受asp影响),但后来razor出来以后,就彻底放心了。
1、我不准备开发一个支持多数据库的通用系统
2、想不到有什么复杂的业务逻辑,最复杂的逻辑可能就是分页和多条件查询了,这不是数据库的事?
但是,我终于说服自己:不懂嘛,只有去做了,才能把他搞懂!“绝知此事要躬行”。后来,慢慢的,我有了一些收获,转机,就从我开始学习ORM开始。
ORM:NHibernate vs Framework Entity
我记得当时犹豫了很久,最终选择了NHibernate,理由:
1、NHibernate开源,可以深入研究
2、摆脱微软依赖,向更广阔的天地前进(这个想法也影响了我选择MVC,毕竟,不只有asp.net才有MVC,php和java都有)。这里多说一句,直到现在,我都还很庆幸我的这个决定。此后,一路走来,风光无限。
TDD(测试驱动)
关于测试驱动(即使按最狭义的理解:unit test drive),我想了很久,最后都还是放弃了。理由:
1、我是一个人开发,所以无论写unit test还是写代码,思路都是一致的,我自己写的unit test,自己写的代码,不可能不通过;
2、而且以后,代码发生了变动,测试代码也得跟着改(这和三层的弊端类似);
3、单元测试对于重构的帮助,我觉得不能抵消由此带来的“麻烦”。
4、懒!呵呵,这可能是最大的原因了。
但是,我认为,如果是团队开发,TDD能发挥很大的作用:
1、方便沟通交流,澄清客户需求。IF...ELSE...ELSE...是最清晰、最精准的描述需求的逻辑和语言了。
2、便于封装。比如BLL层的开发人员不必等UI层完成,即可利用单元测试开始编码、调试、验收等。
概述,我想说的就这些,因为我想把重点放在具体问题的分析和解决上,概念上的东西,点到为止即可。欢迎各位同学留言!尤其是对TDD,我很想听听大家的意见,尤其是经过实践检验过的经验。先谢了,呵呵。
(一)架构选择
Asp.net: WebForm vs MVC
我最后选择的还是MVC。只能说是个人偏好,感觉WebForm:1、对最终生成的Html不好控制
2、框架略显笨重(页面生命周期,Ajax封装等)
另外,asp.net MVC是新生事物,也有一个学习的机会。本来还一直觉得MVC中<%= %>难看(受asp影响),但后来razor出来以后,就彻底放心了。
分层:两层 vs 三层
在这个项目开始之前,我对三层都有看法,和很多同学一样,不知道BLL层干嘛用。而且当时:1、我不准备开发一个支持多数据库的通用系统
2、想不到有什么复杂的业务逻辑,最复杂的逻辑可能就是分页和多条件查询了,这不是数据库的事?
但是,我终于说服自己:不懂嘛,只有去做了,才能把他搞懂!“绝知此事要躬行”。后来,慢慢的,我有了一些收获,转机,就从我开始学习ORM开始。
ORM:NHibernate vs Framework Entity
我记得当时犹豫了很久,最终选择了NHibernate,理由:1、NHibernate开源,可以深入研究
2、摆脱微软依赖,向更广阔的天地前进(这个想法也影响了我选择MVC,毕竟,不只有asp.net才有MVC,php和java都有)。这里多说一句,直到现在,我都还很庆幸我的这个决定。此后,一路走来,风光无限。
(二)方法论
DDD(领域模型驱动)
首先,领域模型,就是以面向对象的方式,通过各种各样的对象,构建领域层(或者业务层)。而DDD,我简单的把他理解为,而且,将构建领域模型作为设计工作的第一步!不管之后UI层怎么呈现,也不管以后数据怎么存储到数据库(持久化)。如果这就是DDD,那我就采用了DDD了,呵呵。TDD(测试驱动)
关于测试驱动(即使按最狭义的理解:unit test drive),我想了很久,最后都还是放弃了。理由:1、我是一个人开发,所以无论写unit test还是写代码,思路都是一致的,我自己写的unit test,自己写的代码,不可能不通过;
2、而且以后,代码发生了变动,测试代码也得跟着改(这和三层的弊端类似);
3、单元测试对于重构的帮助,我觉得不能抵消由此带来的“麻烦”。
4、懒!呵呵,这可能是最大的原因了。
但是,我认为,如果是团队开发,TDD能发挥很大的作用:
1、方便沟通交流,澄清客户需求。IF...ELSE...ELSE...是最清晰、最精准的描述需求的逻辑和语言了。
2、便于封装。比如BLL层的开发人员不必等UI层完成,即可利用单元测试开始编码、调试、验收等。
概述,我想说的就这些,因为我想把重点放在具体问题的分析和解决上,概念上的东西,点到为止即可。欢迎各位同学留言!尤其是对TDD,我很想听听大家的意见,尤其是经过实践检验过的经验。先谢了,呵呵。
相关文章推荐
- 架构之路--实战项目记录
- 架构之路--实战项目记录
- 架构之路--实战项目记录(二) 忘记数据库 开始抽象
- java架构师,高并发,分布式,缓存架构,主从复制,高可用集群,负载均衡,大型电商项目实战教程
- 架构实战项目心得(二):服务器统一规划配置安装
- 项目实战7—Mysql实现企业级数据库主从复制架构实战
- MVVM项目实战之路-搭建一个登录界面
- 项目视频讲解_基于SpringMVC、MyBatis、FreeMarker架构实战CMS大型门户网站(自定义模板)
- Dubbo的分布式系统架构-第三方支付项目的系统架构实战
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第1节:为什么Spark是大数据必然的现在和未来?(2)
- FastDFS分布式文件系统点滴记录2 -- 架构概述
- 高并发,分布式,高可用,性能调优,系统架构,大型电商项目实战
- Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节:Spark架构设计(2)
- Android项目重构之路:架构篇
- 项目实战2—实现基于LVS负载均衡集群的电商网站架构
- QX项目实战-10.基础架构实验一:传递消息、序列化对象和数据库封装
- node vue项目开发之前后端分离实战记录
- MVVM项目实战之路-搭建一个登录界面
- Kafka项目实战-用户日志上报实时统计之应用概述