web工程分层

为什么要分层

我们的应用系统开发人员,不管是移动端,还是前端,还是后端开发人员对软件分层并不陌生,像iOS
MVC模式,前端的vue或者react的 mvvm模式,微软客户端wpf的mvvm模式(这也是mvvm最开始的提出方,非常伟大,微软造就了很多语法糖,和宇宙最强IDE VS),后端Java 开发的Web层、Service层、Dao层、DB层。这样分层第一个有利于人员分工,第二个每层职责清晰,利于代码编写,避免职责过重不利于开发和维护。软件工程的根本哲学就在于”分配“,降低软件开发成本,像汽车流水线上,把任务分配给团队不同的人;把代码逻辑分配到不同的文件或者类,职责单一,便于维护。 分层也是架构师必备的技能之一,也是普通初级程序员向高级进发的必由之路,代码功能谁都会写,但是逻辑写的像面条一样,逻辑全部杂糅在一起(如下图所示,面条好吃,但是对于程序员逻辑到处穿插的是的,维护简直是噩梦,最终的武器就是重构),只是一次性用品,但是能保证代码质量,职责清晰,保证系统的可维护性、可扩展性,这才是合格开发工程师具备的素质。
在这里插入图片描述

如何分层

web后端应用或者前端应用、客户端应用(APP 、desktopClient),本质上是一个进程,是操作系统层之上的一个应用程序Application。而分布式(SOA、 微服务)、集群则是一堆进程,也可以说是进程的集合。集群和分布式的区别在于,集群是功能相同的进程,而分布式是功能不同进程之间的协作。进程这个概念和技术的发明,是一个重要里程碑,历史上不是一蹴而就,还有线程、协程,都是操作系统一些核心概念和知识,对于IO密集型应用和UI操作,解决人机矛盾,资源利用率(CPU和IO速度差异太大)有着非常重要的作用。本文就不重点展开。

信息化项目,本质上是信息在进程之间,进程内部层与层之间的流动,数据为信息在载体,在不同层数据以不同形式存在,在db层,数据以row的行数存在,在Dao层,Service层、web层,数据以Java pojo形式存在,在网络传输中一般以json形式存在;在Cache层,一般以 Key-Value形式存在。
一般web项目开发按照以下分层:

  • 0 层 client层 客户端,前端、移动端或者桌面端,在这一层
  • 1层 gateway层,多进程,集群,微服务API网关在此层,反向代理,负载均衡
  • 2层 web层 参数解析,参数校验,模型绑定,异常兜底,Restful风格遵守
  • 3层 service层;Service层,CRUD方法规定,获取单个对象用get、多个对象用list,分页用page,插入用save,删除用remove,修改用update,统计用count开头。
  • 4层 manager层: 处理redis 缓存,处理RabbitMQ,处理HTTPClient,多个Dao层复用
  • 5层 Dao层: 使用ORM 框架,Mybaitts Mybaits-plus CRUD Dao层方法以 select update delete insert四个单词开头;ORM框架,是row映射类,字段field映射成为属性,SQL 映射为Java方法。Orm框架还有三点需要注意第一点自动分页,第二点ID生成方式,第三点就是字段自动填充
  • 5层 mysql/oracle层;在数据库这一层,需要掌握DDL, 以及数据库三范式,容灾备份,数据库读写分离、数据库分库分表等。
  • 6层 linux/docker层,docker 是一个非常优秀的工具。
  • 其他:utils ,config ,aop /auth /log等等

总结

对于一个可维护性高的web程序,分层清晰,逻辑放在合理层次,逻辑较复杂时封装到不同文件是十分必要的。避免我们写出像面条一样逻辑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值