1.
什么是SSH?
SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架。区别于 Secure Shell 。
集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。
2.
什么是SSM?
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
3.
前端开发技术的技术体系
整个前端技术体系可以分为四个层次:
线下层的重点在于提高开发效率,
基础设施层重点关注稳定性,
保障层重点关注质量与可用性,
业务层重点关注服务的全面性和可复用性。
业务系统
业务系统是核心系统(浏览器或者App中的前端应用本身),其它系统是对它的支持或者控制。
业务系统可以分为业务组件、公共库和第三方库三个层次:
公共样式库:
有利于各业务线之间保持用户体验的一致性。
各业务线在公共样式库的基础之上做可复用的UI组件,促进效率提升。
公共功能库:
包括常用的功能模块,比如登陆、支付、数据统计等等,
可以用自动化测试的覆盖度来保障质量。
第三方库的组织构成:
样式框架:Bootstrap Material design
UI框架:React VUE
第三方功能库:Fetch Modernizr Sentry GA
第三方基础库:jQuery Zetpo Underscore Lodash
业务系统辅助
配置系统 – 集中管理各种配置项:
比如功能开关,链接地址,AB测试控制等等。
使用配置系统的好处是不用改代码并发布即可实现实时控制。
集中配置项也更便于展示他们之间的关系。
消息系统 – 通知发布:
信息推送 客服等即时通讯场景
鉴权系统:
集中处理登陆、支付等需要风险控制较高的公共业务
监控系统
如何从用户的角度判断系统的可用性。监控关注的是实时数据
监控系统的功能分类:
可用性监控 – 页面访问成功率 接口成功率
错误监控 – 收集并汇总应用系统抛出的错误信息
业务指标监控 – 实时订单量 事件触发量
统计系统
统计系统和监控系统的区别在于:
监控关注的是实时数据,统计关注的是全量数据,
监控是为了提高团队的故障响应能力,统计是为产品与业务分析提供基础。
统计系统的功能分类:
性能统计
访问量统计
用户行为统计
测试系统
自动化测试是是一个塔型体系。静态检查是必须的,作为团队规范存在,覆盖全部代码。UT是局部覆盖的,关注基础功能。E2E是可选的,关注主流程和回归测试。
静态检查 – Eslint JSCS
Unit Test – Karma Jasmine Mocha
End to End Test – Protracker Nightwatch Selenium
持续集成 – TravisCI CircleCI
基础设施层
资源管理系统 – CDN 图片管理 发布工具 离线包管理
数据持久化系统 – 存储上层系统的非核心业务数据,比如错误数据或者用户行为数据
运维系统 – 版本控制 发布脚本
工具集
代码管理 – Git Stash
包管理 – NPM Bower Yarn
构建工具 – Webpack
任务管理工具 – Gulp Grunt
脚手架 – Yeoman
组件系统
组件系统的作用:
集中管理可复用的开发资源:
不止包括UI组件,也包括功能组件。
各业务线优先从系统中选取可复用的部分,同时向系统中沉淀组件。
组件系统要点:
组件的质量标准
组件的测试用例
组件的复用机制
Demo与Gallery
前后端的分离是系统级的分离,一整套完整的技术体系以更好地支持产品在终端形态上的快速演进,同时实现技术资源的横向复用。
技术体系:
线下层重点关注开发效率,
基础设施层重点关注稳定性,
保障层重点关注质量与可用性,
业务层重点关注服务的全面性和可复用性。