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

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

 

相关文章
|
22天前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
52 2
|
24天前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
72 2
|
22天前
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
57 0
|
2天前
|
存储 监控 Linux
Docker技术架构概述
【10月更文挑战第22天】Docker采用CS架构,Client与Daemon交互,Compose管理多容器应用。
|
5天前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
本系列教程详细讲解 Kotlin 语法,适合需要深入了解 Kotlin 的开发者。快速学习 Kotlin 语法的小伙伴可以查看“简洁”系列教程。此外,教程还对比了多种适合中大型项目的架构模式,如 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux,帮助开发者根据项目需求选择合适的架构。
15 3
|
6天前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
17 2
|
27天前
|
存储 前端开发 API
DDD领域驱动设计实战-分层架构
DDD分层架构通过明确各层职责及交互规则,有效降低了层间依赖。其基本原则是每层仅与下方层耦合,分为严格和松散两种形式。架构演进包括传统四层架构与改良版四层架构,后者采用依赖反转设计原则优化基础设施层位置。各层职责分明:用户接口层处理显示与请求;应用层负责服务编排与组合;领域层实现业务逻辑;基础层提供技术基础服务。通过合理设计聚合与依赖关系,DDD支持微服务架构灵活演进,提升系统适应性和可维护性。
|
23天前
|
存储 分布式计算 Hadoop
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
38 2
|
8天前
|
缓存 前端开发 JavaScript
前端架构思考:代码复用带来的隐形耦合,可能让大模型造轮子是更好的选择-从 CDN 依赖包被删导致个站打不开到数年前因11 行代码导致上千项目崩溃谈谈npm黑洞 - 统计下你的项目有多少个依赖吧!
最近,我的个人网站因免费CDN上的Vue.js包路径变更导致无法访问,引发了我对前端依赖管理的深刻反思。文章探讨了NPM依赖陷阱、开源库所有权与维护压力、NPM生态问题,并提出减少不必要的依赖、重视模块设计等建议,以提升前端项目的稳定性和可控性。通过“left_pad”事件及个人经历,强调了依赖管理的重要性和让大模型代替人造轮子的潜在收益
|
12天前
|
前端开发 Unix Linux
KVM 架构概述
【10月更文挑战第12天】KVM是基于硬件辅助虚拟化技术的虚拟机监控器,核心依赖于CPU的虚拟化支持如Intel VT和AMD-V。

热门文章

最新文章