For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了软件开发程序员都会用到的一些架构方法等内容,而本文我们就继续来学习一下,分层架构实践思路分享。
工程框架
新系统往往从搭建项目的工程基础框架开始,包括目录结构、配置文件、代码模板等工程约束,主要用来规范项目结构、职责边界和代码风格,从而提高代码质量和可维护性。具体包括以下几个方面:
1.约定了各个模块的依赖关系和交互方式;
2.规范接口交互协议;
3.统一异常编码、捕获和处理;
4.规范日志打印格式;
5.其它公共规范约束;
下面就常用的分层架构和DDD架构给出一些实践思路。
分层架构
分层架构有多种形式,例如MVC、六边形架构等,它们是随着业务和技术的发展逐步演化而来的。
在互联网初期,由于计算机硬件性能差、网络速度慢、存储成本高等因素的限制,互联网产品的形态相对单一,只能实现简单的门户网站、BBS论坛等相对简单的产品。当时的技术架构没有分层的概念,主要使用ASP、JSP、PHP等脚本语言,在这些脚本文件中混合着编写HTML、JavaScript、CSS和SQL是很常见的。随着互联网技术的发展以及更多复杂业务的线上化诉求,动态脚本语言的劣势也逐渐显现,以JSP脚本语言为例:
1.复杂性:JSP脚本语言的开发和维护比较复杂,因为需要处理Java代码和HTML代码的混合;
2.安全性:JSP脚本语言容易受到SQL注入攻击等安全漏洞的影响,从而导致系统不稳定或被攻击;
3.扩展性:脚本语言的可扩展性比较有限,因为需要在HTML页面中直接编写Java代码,从而导致系统结构不够清晰;
为了解决上述问题,出现了各种框架,如Spring、Struts等。这些框架逐渐替代了JSP脚本语言,同时也提出了分层架构的概念。其中的就是MVC(模型、视图和控制器)架构模式,其主要目的是解耦应用程序的不同部分,使其更易于维护和扩展。具体实现方式如下:
1.分离关注点:将应用程序分为三个主要部分,使得每个部分都可以独立开发和测试,从而更好地分离关注点;
2.提高可维护性:因为做了三个层面的关注点分离,更容易维护和修改应用程序的不同部分;
3.提高可扩展性:展示逻辑和业务逻辑控制分离,更容易扩展应用程序的不同部分;
在多层架构中,视图层通常会使用基于模板的框架(如Thymeleaf、Freemarker、Velocity)或前后端分离的技术栈(如Vue.js、React)。这些技术的演进能够解决更加复杂的问题,如金融保险和电子商务等场景,但同时也会带来一些新的痛点:
1.学习曲线较陡峭:由于MVC架构模式需要开发人员了解和掌握多个概念和技术,学习曲线较陡峭;
2.提高了复杂性:由于MVC架构模式需要将应用程序分为多个部分,增加了应用程序的复杂性;
3.增加了开发时间:需要进行更多的测试和集成工作,增加了开发时间;
为了提高产品交付效率并降低技术门槛,现代研发工作通常会拆分为多个岗位,包括前端开发、后端开发、质量测试、运维保障等。这些岗位需要协同工作,共同完成产品的研发任务。为了保证多业务线和多岗位之间的有序协作,有效个管控过程风险,通常还会设有项目管理岗位。
MVC架构是对整个业务实现进行了关注点分离,但在更为复杂的大型项目中,特别是多人协作,多业务并行的场景下,MVC架构往往显得力不从心。此时需要对其进行更细粒度的拆分,以达到多业务线并行,而不会存在大的任务资源冲突问题。
通过横向的分层架构我们实现了研发分工协作,所有的经验约束在这里得以体现。上图中,将控制层进行了二次细分。也可以按照实际应用场景进行重新调整。比如web模块能否依赖RPC模块就可以在POM文件中进行限定,如此以来,大家按照既有的工程约定,实施开发工作就可以了。
简单描述一下各个模块分层的作用:
1.数据访问层:将业务逻辑层和数据存储层进行解耦,属于模型层的范畴。它与底层数据源(MySQL、Hbase,EleasicSearch)进行数据交互,常见框架有:MyIbatis,Hibernate等;
2.远程调用层:即RPC层,与DAO层平行的数据访问层,区别是它是通过三方接口或平台服务提供访问能力。和DAO层的区别在于数据归属权和领域事务控制权;
3.事务管理层:也叫通用业务处理层,它有如下特征:
◦对上层业务,进行业务和技术共用能力下沉,比如:多个业态的统一订单生产能力,通用的分布式事务一致性的解决方案等;
◦对下层依赖,组合DAO层和RPC层的能力,实现单一业务的事务管理;
◦对于简单的业务系统,Manager层的职责可以由Service层替代;
4.业务逻辑层:相对具体的业务逻辑服务层,主要负责业务流程的组装和编排,真正的灵活性和扩展性主要体现在这里;
5.请求处理层:主要是对访问控制进行转发,入参整形,出参定制等,其职责是直接面向的是各个终端或三方服务方;
6.开放服务层:定义对外提供的RPC服务,功能职责和Web层类似,同样需要考虑网关安全控制、流量控制等因素;
7.终端显示层:各个端的模板渲染并执行显示,velocity,React,IOS移动端等;
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。