# 单体架构阶段概述与项目演示

任何强大架构都是从单体架构逐步演进的,这里从单体架构电商开始,逐步增加分布式技术,进行架构演变。

本阶段的几个小阶段:

  • 基于 Spring boot 2.x 实现单体架构设计与准备工作
  • 实现单体电商项目核心功能开发(后端)
  • 实现单体电商项目个人中心功能
  • 项目部署与上下

# 实现单体架构设计与准备工作

  • 项目演示:项目开发完成之后的演示效果
  • 前后端主要技术选型
  • 前后端分离开发模式
  • 后端分层架构模式
  • 数据库表设计:需求分析后,针对功能模块进行表设计
  • Spring boot Spring MyBatis 框架整合

# 项目演示

项目效果在线地址:http://shop.t.mukewang.com/

  • 轮播图

  • 分类,不同的分类里面又分不同的子类

  • 页面总的懒加载技术,往下滚动的时候才会加载出来

  • 购物车加购

  • 商品搜索、分页、销量排序、价格优先排序

  • 商品详情

  • 购物车结算

  • 登录、注册

  • 确认收货地址

    可以新增、编辑、删除地址

  • 微信支付(二维码扫描支持)、支付宝支

  • 查看订单

  • 用户个人中心-订单管理:待发货、待付款、待收货、已完成

  • 个人中心 - 我的评价

  • 个人中心 - 个人资料

  • 个人中心 - 收货地址

本阶段完成所有的后端功能。

# 技术选项 Spring Boot VS MVC

  • SpringMVC 是框架,SpringBoot 是工具

    • SpringMVC 是一个框架
    • SPringBoot 是一个工具,MVC 只是他里面的一个模块
  • 从配置繁琐的 xml 到零配置 yml

    boot 强调零配置,将所有的配置精简到 yml 中

  • SpringBoot 集成了多样化中间件 *-stater

  • 从外置 tomcat 变为内置 tomcat

    可以通过配置文件去配置 tomcat 相关的配置

# 聊一聊 Struts

  • 安全漏洞

    Struts 现在基本上没有人在用了,是一个很古老的 MVC 框架,它本身有一些严重的 BUG。

  • 请求变量共享

    当用户量增多,请求增多的时候,在 action 中的一些请求变量可能会造成共享问题,虽然可以通过一些手段来处理,相对来说还是比较麻烦。

  • Filter 拦截

    过滤是类拦截,Spring 的 AOP 拦截是方法级拦截

  • 非 Spring 官方自产自销

    Struts 不是 Spring 官方的,整合起来相对麻烦

# 前端技术选型

作为架构师或则技术总监,不一定要会写过多的前端代码,但是要有一定的了解

  • MVVM 开发模式

    是前端领域的一种开发模式,通过数据绑定来操作 dom

  • Jquery、vue.js

    前端框架中的模板部分组件使用的是 Jquery

    vue 是渐进式框架,可以逐步的去替换掉老的东西,比如使用了 jquery,可以通过迭代去掉 jquery

  • html + css

# 技术选型所要考虑的

  • 切合业务

    能否实现现有功能,能够预判的后续的功能和现有选型技术是否能够完全的匹配。

  • 社区活跃度

    一个技术出来的时候,都有一个社区,当一个社区活跃度比较高的话,我们可以考虑使用,如果社区活跃度不高,可能这个技术并没有多少人去使用和关注他

  • 团队技术水平

    如果团队经验不够的话,是需要对他们进行培训。在开发周期短等综合因素下,我们是否需要考虑使用团队比较熟悉的一些技术或则比较陌生的技术来完成开发,作为架构师、领导者是需要进行权衡的

  • 版本更新迭代周期

    当一个开源技术迭代快,周期短,也是可以考虑选择该技术的。

    比如 dubbo 版本停更一段时间,在这段时间中,一些公司使用 dubbo 出现了一些问题,得不到解决,在这种情况下,你就需要考虑后续要不要继续使用该技术。

  • 试错精神

    并不是在实际项目开发中试错,主要是在平时接触各种技术的时候需要去多尝试、多体验,无论对错,为自己积累经验,以后就会有很多备选方案和技术

  • 安全性

    比如 Struts 的安全漏洞,当一个框架层级发生过较大的安全漏洞时间时,就需要去仔细斟酌要不要使用

  • 成功案例

    如果是在行业类有成功过的,口碑不错的,无论是小公司还是大公司,都可以考虑去采纳

  • 开源精神

    我们目前开发中使用到的技术几乎上是开源的,当你遇到一个技术在未来可能要闭源,就需要去斟酌是否需要选择

    一般在使用框架的前期很难知道该框架的未来走向,所以当你听到这一消息时,就需要去考虑这个问题了