• 架构之路实战项目记录(一) 概述


    我正在开发的系统是一个简单的“博客+论坛+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,我很想听听大家的意见,尤其是经过实践检验过的经验。先谢了,呵呵。

  • 相关阅读:
    paramiko模块
    linux 文件权限管理
    itext 生成pdf文件添加页眉页脚
    Python3 断言
    net core WebApi——文件分片上传与跨域请求处理
    Linux配置部署_新手向(二)——Nginx安装与配置
    Linux配置部署_新手向(一)——CentOS系统安装
    net core Webapi基础工程搭建(七)——小试AOP及常规测试_Part 2
    net core Webapi基础工程搭建(六)——数据库操作_Part 2
    net core Webapi基础工程搭建(七)——小试AOP及常规测试_Part 1
  • 原文地址:https://www.cnblogs.com/freeflying/p/2428567.html
Copyright © 2020-2023  润新知