zoukankan      html  css  js  c++  java
  • 架构之路实战项目记录(一) 概述

    我正在开发的系统是一个简单的“博客+论坛+SNS”系统。应该比较好理解吧,就“博客园+csdn+开心网”模式。具体的功能在需要用到的时候详细讲解即可。

    (一)架构选择

    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,我很想听听大家的意见,尤其是经过实践检验过的经验。先谢了,呵呵。

  • 相关阅读:
    [转发]深入理解git,从研究git目录开始
    iOS系统网络抓包方法
    charles抓包工具
    iOS多线程中performSelector: 和dispatch_time的不同
    IOS Core Animation Advanced Techniques的学习笔记(五)
    IOS Core Animation Advanced Techniques的学习笔记(四)
    IOS Core Animation Advanced Techniques的学习笔记(三)
    IOS Core Animation Advanced Techniques的学习笔记(二)
    IOS Core Animation Advanced Techniques的学习笔记(一)
    VirtualBox复制CentOS后提示Device eth0 does not seem to be present的解决方法
  • 原文地址:https://www.cnblogs.com/freeflying/p/2428567.html
Copyright © 2011-2022 走看看