【引言】
最近在看一本书《未来架构 从服务化到云原生》,关于技术架构这部分,结合书中内容,有一些认知和感悟。
互联网的技术架构正在经历由集中式—>分布式—>云平台的发展历程中。这三种技术架构是一个迭代发展过程,技术和优势也是一个逐渐演进过程;从业务需求和架构成熟度来说,是一个愈加递增、健壮的发展。
目前,集中式架构主要集中在传统IT行业,分布式和云平台技术架构集中在需求演变快速的互联网行业;但这并不能表明满足低并发、扩展性差的集中式架构就落后了,对于传统行业来说,在业务压力不大的、并发要求和扩展性不高、公司技术人员能力迭代更新延迟的前提下,集中式三层架构依旧有其优势和价值。
今天就来聊一聊集中式三层架构模型。
很多同学可能都知道传统的三层模型:web层、服务层、数据访问层。
这里再行赘述下:
![](/qrcode.jpg)
数据访问层用于定义数据访问接口,实现对真实数据库的访问服务;
服务层用于对应用业务逻辑处理;
Web层用于处理异常、逻辑跳转控制、页面渲染模型等,又被称为mvc层(Model View Controller)。
在传统三层架构中,NoSQL还未兴起,故数据访问层主要对关系型数据进行访问。
JAVA开发中,访问关系型数据库需要通过统一接口层JDBC,通过JDBC可以很方便的访问各种关系型数据库(Oracle、MySQL、DB2、SQL SERVER)。
然而存储在关系数据库中的二位关系表格面向集合设计的数据与面向对象的模型思维并不容易映射、对应。于是有了很多ORM(Object-Relationship-Mapping)框架,目的是为了使用面向对象的理念去操控数据库。其中MyBatis(前身是IBATIS)、JPA及其默认实现Hibernate,是ORM框架领域的开源产品;其中JPA是Java官方的持久化设计规范,但在实际使用中略显笨重,故业界采用更为灵活、可控性更高的MyBatis作为ORM框架首选。
服务层实现业务应用的逻辑处理,承接数据层和web层,故需要一个能便捷访问数据层和web层的框架。
Java官方推荐EJB2.X,但因其大量的XML配置和繁琐的部署方式,不为开发者中意;即使后续推出的简化很多的EJB3.X,依旧没能成为Java开发标准。
业界大神 Rod Johnson开发了Spring Framework(很多同学看到这个词估计都笑了,很熟悉对不对),极大简化了Java EE开发,提供了IOC(控制反转)和AOP(面向切面编程)特性,因给开发者带来极大开发便捷性,迅速被接受为Java后端实际开发标准。
Spring Framework提供一种容器能力,容器中任何对象都以Bean方式注入,能够很优雅便捷的串联、整合数据访问对象和其他第三方组。
再讲一下Web层,又被称为mvc层(Model View Controller)。
MVC用于分离前端展现和后端服务,最初有Java的Servlet标准实现,但因为Servlet侵入了大量的HttpRequest、HttpResponse、HttpSession等API,导致基于servlet的开发程序并不适用于单元测试,这就很大阻碍了整体研发进度的推进,大大增加了研发周期和成本;且实现配置、跳转、表单封装等操作存在大量重复工作。
因此需要更好的MVC框架来改善开发流程,Strtus 1.X 及基于WebWork封装的Struts 2.X/Spring MVC,初期因Struts使用简单收到开发者喜爱,后Srping对MVC开发力度增大,且由于设计理念清晰和与Spring Hibernate强融合能力,成为MVC框架业界主流标准。
由以上,故当今实现集中式三层架构的主流技术选型为:
Spring Framework +Struts(Spring MVC)+ JPA(Hibernate) 开发ssh套件;
或Spring Framework +Struts(Spring MVC)+ IBATIS(MyBatis)开发ssh套件。
【总结】
1. 本文简述了集中式三层架构,并给出了个人观点:对于传统行业来说,在业务压力不大的、并发要求和扩展性不高、公司技术人员能力迭代更新延迟的前提下,集中式三层架构依旧有其优势和价值;
2. 当今实现集中式三层架构的主流技术选型为:Spring Framework +Struts(Spring MVC)+ JPA(Hibernate) 开发ssh套件;或Spring Framework +Struts(Spring MVC)+ IBATIS(MyBatis)开发ssh套件。
3. 还是那句话:适合自己才是最好的;既要仰望星空,也要脚踏实地。
欢迎关注个人微信公众号“一森咖记”
近期热文
你可能也会对以下话题感兴趣。点击链接便可查看。