web工程分层

web工程分层,第1张

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程序,分层清晰,逻辑放在合理层次,逻辑较复杂时封装到不同文件是十分必要的。避免我们写出像面条一样逻辑。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4997945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存