关于架构设计的一点感悟

近期,对项目进行了重构,关于重构和架构设计,有了进一步的认识。特此记录。

MVC模式是web应用最常用的架构模式。V和C都很好理解,那最重要的M呢?很多人会认为专指Model。但我认为,除了V和C,M应该指的整个后端的业务逻辑架构,其中最重要的一层就是Model了。

Martin Flower 在《企业应用架构模式》中总结了三种组织方式
1.事务脚本
2.领域模型
3. 表模块
其中,最常用的是前两种方式。

事务脚本

可以理解为针对每个请求,有一个或多个函数提供服务。每个请求都是独立的,多个请求的共同复用代码也是通过函数实现。以php语言来说明下。

针对每个请求,通过路由会由特定的一个php脚本,接受请求,调用一系列函数处理数据,最后调用View显示。这是最简单的使用事务脚本方式。
再复杂的方式是通过分层架构来处理请求。一般分为两层(Service和DAO)或者三层(Service, Entity,DAO)。具体的逻辑实现都是放在Service中某个具体函数中实现。

Entity层中并不是真正意义上的Model,因为,在此实现中,Entity是只具备属性的,并没有行为。

领域模型

这是最麻烦的实现业务逻辑的方式,也更强大。核心的思想就是抽象,把业务领域抽象出稳定的模型关系。

实现Model层的核心是行为,以及多个Model之间的关系。在这一实现中,也可以进行分层(Service,Model, DAO等)。但这里的Service实现的是类似接口的行为,组装各个Model的逻辑实现,提供给上层数据使用。

实践

架构设计很难通过简洁的方式去说明。通过一个简单的逻辑点,来分别说明下。比如对于登录操作来看下两种方式的具体实现。

事务脚本

领域模型

 

此条目发表在架构设计分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。