层次式体系结构概述

 1.软件体系结构

        软件体系结构可定义为:软件体系结构为软件系统提供了结构、行为和属性的高级抽象,由构成系统的元素描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理,是构建于软件系统之上的系统级复用

        软件体系结构贯穿于软件研发的整个生命周期内,具有重要的影响。这主要以下三个方面来进行考察。

        (1)利益相关人员之间的交流。软件体系结构是一种常见的系统抽象,代码级别的系统抽象仅仅可以成为程序员的交流工具,而包括程序员在内的绝大多数系统的利益相关人都借助软件体系结构来作为相互沟通的基础。

        (2)系统设计的前期决策。软件体系结构是我们所开发的软件系统最早期设计决策的体现,而这些早期决策对软件系统的后续开发、部署和维护具有相当重要的影响。这也是能够对系统进行分析的最早时间点。

        (3)可传递的系统级抽象。软件体系结构是关于系统构造以及系统各个元素工作机制的相对较小、却又能够突出反映问题的模型。由于软件系统具有的一些共通特性,这种模型可以在多个系统之间传递,特别是可以应用到具有质量属性和功能需求的系统中,并能够促进大规模软件的系统级复用。

2.分层式体系结构 

        分层式体系结构是一种最常见的架构设计方法,能有效地使设计简化,使设计的系统结构清晰,便于提高复用能力和产品维护能力。 

        层次式体系结构设计是将系统组成一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层接口只对相邻的层可见。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持。

        软件层次式体系结构是最通用的架构,也被叫作N层架构模式(n-tier architecture pattern)

这也是Java EE(也称为J2EE)应用经常采用的标准模式。这种架构模式非常适合传统的IT通信和组织结构,很自然地成为大部分与应用的第一架构选择。在分层次体系结构中组件被划分成几个层,每个层代表应用的一个功能,都有自己特定的角色和职能。分层架构本身没有规定要分层多少层,大部分的应用会分成表现层(或称为展示层)、中间层(或称为业务层)、数据访问层(或称为持久层)和数据层。其结构见图1所示。      

         图1 常用的层次式架构

        分层架构的一个特性就是关注分离(seperation of concerns)。该层中的组件只负责本层的逻辑,组件的划分很容易明确组件的角色和职责,也比较容易开发、测试、管理和维护。

3.层次式体系结构的注意点 

         层次式体系结构是一个可靠的通用的架构,对很多应用来说,如果不确定哪种架构适合,可以用它作为一个初始架构。但是,设计时要注意以下两点:

        (1)要注意的是污水池反模式。

        所谓污水池反模式(architecture sinkhole anti-pattern),就是请求流简单地穿过几个层,每层里面基本没有做任何业务逻辑,或者做了很少的业务流程。比如一些JavaEE例子,业务逻辑层只是简单地调用了持久层的接口,本身没有什么业务逻辑。

        每一层或多或少都有可能遇到这样的场景,关键是分析这样的请求百分比是多少。二八原则可以帮助你决定是否正在遇到污水池反模式。如果请求超过20%,则应该考虑让一些层变成开放的。

        (2)需要考虑的是分层架构可能会让你的应用变得庞大。

        即使你的表现层和中间层可以独立发布,但它的确会带来一些潜在的问题,比如:分布式复杂、健壮性下降、可靠性和性能的不足,以及代码规模的膨胀等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/704485.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Wiley数据库文献哪里比较全?去哪里下载比较高效

Wiley出版社1807年创建于美国,是一家具有超过200年历史的全球知名的出版机构,面向专业人士、科研人员、教育工作者、学生、终身学习者提供必需的知识和服务。 Wiley及旗下的子品牌出版了超过500位诺贝尔奖得主的作品。Wiley Online Library为全学科期刊全…

Jenkins 忘记登录密码怎么办

在安装Jenkins中遇到忘记登录密码该怎么呢?下面是一个解决办法 1. 先停止jenkins服务 我是用tomcat启动的jenkis 2. 找到config.yaml文件 find / -name config.xml命令执行后找到如下结果: /root/.jenkins/config.xml /root/.jenkins/users/admin_839…

Java后端实现对象与文件接收数据(minio测试)

实现思路: 1. 两个接口实现,一个接对象数据(file),一个接文件数据(json)。 2. json对象(base64String) 实体类信息 ,请求体统一接收 3. file, String name ,String password ,String name , Controller层接收 统一…

2023年国赛高教杯数学建模B题多波束测线问题解题全过程文档及程序

2023年国赛高教杯数学建模 B题 多波束测线问题 原题再现 单波束测深是利用声波在水中的传播特性来测量水体深度的技术。声波在均匀介质中作匀速直线传播,在不同界面上产生反射,利用这一原理,从测量船换能器垂直向海底发射声波信号&#xff…

羊大师解读,成长路上羊大师与健康同在

羊大师解读,成长路上羊大师与健康同在 在成长的道路上,健康无疑是最宝贵的财富。让我们一同探讨如何在成长的道路上,与羊大师和健康并肩前行。 合理饮食:饮食是健康的基础。我们应该保持均衡的饮食,摄入足够的营养&am…

二叉树遍历的实现

递归实现 先序遍历 代码实现 存储状态 中序遍历 后序遍历 算法分析 实质 复杂度 非递归算法实现 中序遍历 层次遍历 原理 实现

fastjson_1.2.24和Shiro(CVE-2016-4437)漏洞复现

文章目录 一、fastjson 1.2.24远程命令执行漏洞复现二、shiro反序列化漏洞(CVE-2016-4437)1、Shiro漏洞原理2、手工验证漏洞3、使用ShiroAttack2 一、fastjson 1.2.24远程命令执行漏洞复现 配置环境:本机java 8环境 kali操作系统(java8) c…

STM32-09-IWDG

文章目录 STM32 IWDG1. IWDG2. IWDG框图3. IWDG寄存器4. IWDG寄存器操作步骤5. IWDG溢出时间计算6. IWDG配置步骤7. 代码实现 STM32 IWDG 1. IWDG IWDG Independent watchdog,即独立看门狗,本质上是一个定时器,这个定时器有一个输出端&#…

shiro_attack工具-shiro反序列化漏洞的快速检测和利用

shiro反序列化漏洞的快速检测和利用 前言 今天分享一个好用的渗透测试工具,主要是针对shiro框架漏洞的,它可以自动的爆破shiro密钥,同时可以写入大马,本人实战中觉得很好用!!! 工具名称 shi…

DDoS防护的市场需求将不断增长,DDoS高防IP显得各位重要

分布式拒绝服务(DDoS)攻击是一种恶意攻击,它借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的为例。DDoS攻击通过大量合法的请求占用大…

[HNCTF 2024] crypto/pwn

周日的比赛,赛后拿别人的WP又作了俩,最后一个题也是没弄懂,先记一下吧。 Crypto EZmath 一个简单的函数题。在sagemath里有个two_squares函数,可以从平方和恢复两个规模相近的数。这种比较适合于RSA里的p,q。另外未知的e用来猜…

【神经网络与深度学习】Transformer原理

transformer ENCODER 输入部分 对拆分后的语句x [batch_size, seq_len]进行以下操作 Embedding 将离散的输入(如单词索引或其他类别特征)转换为稠密的实数向量,以便可以在神经网络中使用。位置编码 与RNN相比,RNN是一个字一个字…