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

     
     
    分类: 架构实战
    我学习设计模式的一些所想所得
    摘要: 设计模式一直饱受争议,很多人对设计模式推崇备至,但也有很多人认为设计模式误导了编程者,见(《解密“设计模式”》)。我也只是一个普通的编程人员,这里只能谈一谈我在学习设计模式中的一些想法,不一定正确,欢迎大家谈论。我对设计模式的理解是分阶段的:一、这是些什么乱七八糟的东西?那时候听到了设计模式的概念,到图书馆借了一本大概名字叫《设计模式初学者入门》之类的书。书里就把23个设计模式挨个讲了一遍,引用一下每个设计模式的定义,给个类图,配点代码……然后我硬着头皮读完之后,就一个感觉,“脱了裤子放屁”。一个功能,明明很简单、很直接的就能实现,为什么要添那么多的类,绕那么多的弯?记得当时也就懂了“单例模式阅读全文
    posted @ 2013-03-07 15:45 自由飞 阅读(683) | 评论 (2) 编辑
     
    ()面向对象的目标
    摘要: 先问一个问题:有两个程序(Application),一个是面向对象的,一个是面向数据库的。你说哪一个更好?当我郑重其事的问这样一个问题的时候,你可能会更小心一些。通过思考,你的答案很可能是:it depends(看情况)。但很多时候,我发现很多同学已经将“面向对象”作为一种程序开发设计的标准。你有没有经常听到这些说法:“你这种设计不符合面向对象的要求呀!”“根据面向对象的设计要求,我们应该……”面向对象并不是评判标准。不能说我的设计是面向对象的,就证明我的设计是更好的。做软件开发有两个步骤:1、把东西做出来。或者说实现功能。这个目标是比较容易达到而且也是比较容易评价的,就两个答案:做出来或者做阅读全文
    posted @ 2013-01-29 10:47 自由飞 阅读(27) | 评论 (0) 编辑
     
    架构之路--实战项目记录(二) 忘记数据库 开始抽象
    摘要: 对我而言,认识BLL层的作用,或者领域模型驱动的含义,最大的干扰来自数据库。我们很清楚的知道UI层的含义,也知道数据层是做什么的。但对于一个简单的(甚至是相当复杂的)系统而言,实在不知道除了对数据库进行增删改查以外,还能做些什么?发布一篇博客,不就是在数据库里插入一条记录么?点击一下推荐,不就是在数据库里做一个update么?为了避免数据库的干扰,这里,我们设定:不使用关系数据库做存储!请大家牢记,为了更清晰,更深刻的认识到这一点,我们再次明确,我们将使用最流行的NoSQL技术。牛叉吧!兴奋吧?打满了鸡血吧!好的,设计的任务交给你了,小李同学。接下来,你怎么办?哎呀,我对NoSQL还不熟呀(不阅读全文
    posted @ 2012-04-02 21:46 自由飞 阅读(1279) | 评论 (2) 编辑
     
    架构之路--实战项目记录(一) 概述
    摘要: 我正在开发的系统是一个简单的“博客+论坛+SNS”系统。应该比较好理解吧,就“博客园+csdn+开心网”模式。具体的功能在需要用到的时候详细讲解即可。(一)架构选择Asp.net: WebForm vs MVC我最后选择的还是MVC。只能说是个人偏好,感觉WebForm:1、对最终生成的Html不好控制2、框架略显笨重(页面生命周期,Ajax封装等)另外,asp.net MVC是新生事物,也有一个学习的机会。本来还一直觉得MVC中<%= %>难看(受asp影响),但后来razor出来以后,就彻底放心了。分层:两层 vs 三层在这个项目开始之前,我对三层都有看法,和很多同学一样,不知阅读全文
    posted @ 2012-04-01 13:43 自由飞 阅读(2119) | 评论 (7) 编辑
     
    架构之路--实战项目记录
    摘要: 用一个真实的项目自由飞·创业者的心灵家园来展示我关于架构的一些想法阅读全文
    posted @ 2012-04-01 13:07 自由飞 阅读(203) | 评论 (1) 编辑
  • 相关阅读:
    mysql常用技巧
    java中集成CKEditor和CKFinder
    Linux_C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
    Linux_内存分配中的堆和栈
    mysql中的text,mediumtext,longtext在Hibernate中的类型映射
    循环神经网络LSTM RNN回归:sin曲线预测
    什么?语音合成开源代码不会跑,follow me!
    华为云GaussDB:发挥生态优势,培养应用型DBA
    对话华为云专家,摆脱无意义“内卷”
    带你读AI论文丨用于细粒度分类的Transformer结构—TransFG
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2948984.html
Copyright © 2011-2022 走看看