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

简介: 我正在开发的系统是一个简单的“博客+论坛+SNS”系统。应该比较好理解吧,就“博客园+csdn+开心网”模式。具体的功能在需要用到的时候详细讲解即可。(一)架构选择Asp.net: WebForm vs MVC我最后选择的还是MVC。
我正在开发的系统是一个简单的“博客+论坛+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,我很想听听大家的意见,尤其是经过实践检验过的经验。先谢了,呵呵。

 

相关文章
|
28天前
|
设计模式 前端开发 测试技术
Flutter 项目架构技术指南
探讨Flutter项目代码组织架构的关键方面和建议。了解设计原则SOLID、Clean Architecture,以及架构模式MVC、MVP、MVVM,如何有机结合使用,打造优秀的应用架构。
Flutter 项目架构技术指南
|
29天前
|
存储 SQL 关系型数据库
ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
ClickHouse的核心架构包括执行过程和数据存储两部分。执行过程涉及Parser与Interpreter解析SQL,通过Column、DataType、Block、Functions和Storage模块处理数据。Column是内存中列的表示,Field处理单个值,DataType负责序列化和反序列化,Block是内存中表的子集,Block Streams处理数据流。Storage代表表,使用不同的引擎如StorageMergeTree。数据存储基于分片和副本,1个分片由多个副本组成,每个节点只能拥有1个分片。
70 0
ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
|
2月前
|
存储 安全 网络安全
「读书笔记」《大规模分布式存储系统:原理解析与架构实战》:八
「读书笔记」《大规模分布式存储系统:原理解析与架构实战》:八
|
2月前
|
分布式计算 关系型数据库 大数据
「读书笔记」《大规模分布式存储系统:原理解析与架构实战》:九
「读书笔记」《大规模分布式存储系统:原理解析与架构实战》:九
|
2月前
|
存储 负载均衡 算法
「读书笔记」《大规模分布式存储系统:原理解析与架构实战》:一
「读书笔记」《大规模分布式存储系统:原理解析与架构实战》:一
|
2月前
|
存储 机器学习/深度学习 固态存储
「读书笔记」《大规模分布式存储系统:原理解析与架构实战》:二
「读书笔记」《大规模分布式存储系统:原理解析与架构实战》:二
「读书笔记」《大规模分布式存储系统:原理解析与架构实战》:二
|
1月前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
131 0
|
29天前
|
运维 Linux Apache
LAMP架构调优(九)——Apache Rewrite功能实战
LAMP架构调优(九)——Apache Rewrite功能实战
12 1
|
1月前
|
消息中间件 并行计算 网络协议
探秘高效Linux C/C++项目架构:让进程、线程和通信方式助力你的代码飞跃
探秘高效Linux C/C++项目架构:让进程、线程和通信方式助力你的代码飞跃
33 0
|
1月前
|
存储 缓存 安全
【ARM架构】ARMv8-A 系统中的安全架构概述
【ARM架构】ARMv8-A 系统中的安全架构概述
31 0