层次式体系结构概述

 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.mzph.cn/diannao/13158.shtml

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

相关文章

小程序框架是智能融媒体平台构建的最佳线路

过去5年,媒体行业一直都在进行着信息化建设向融媒体平台建设的转变。一些融媒体的建设演变总结如下: 新闻终端的端侧内容矩阵建设,如App新闻端,社交平台上的官方媒体等新闻本地生活双旗舰客户端,兼顾主流媒体核心宣传…

TopOn 正式聚合Kwai 旗下程序化广告平台——Kwai Network

**我们非常高兴的宣布,TopOn SDK 近日已正式聚合Kwai Network。**作为Kwai 旗下的程序化广告平台,Kwai Network 通过优质的变现能力及产品能力,为广大开发者提供高效及时的服务。 TopOn 聚合平台与Kwai Network 正式完成接入后,开…

实战+代码!Selenium + Phantom JS爬取天天基金数据

功能: 通过程序实现从基金列表页,获取指定页数内所有基金的近一周收益率以及每支基金的详情页链接。再进入每支基金的详情页获取其余的基金信息,将所有获取到的基金详细信息按近6月收益率倒序排列写入一个Excel表格。 思路: 1.…

vm 虚拟机 Debian12 开启 root、ssh 登录功能

前言,安装的时候语言就选中文就好了。选择中文,在安装的时候就可以选择国内 163 的源。 开启 ssh 功能 先提权,用 root 账户 su安装 ssh 安装 ssh-server apt install openssh-server启动 ssh systemctl start ssh查看 ssh 状态 systemctl st…

u3d的ab文件注意事项

//----------------LoadAllAB.cs--------------------- using System.Collections;using UnityEngine;namespace System.IO{public class LoadAllAB : MonoBehaviour{ //读取本地string path "Assets/Actors/lznh/ab/animation/t_bl/";// Use this for initiali…

Keil手动安装编译器V5版本

V5编译器下载:免积分下载 新版的keil不会自动帮你安装V5版本的编译器,但是很多教程很多比赛所用单片机都是V5的编译器,所以用来开以前的或者开源的很多东西编译直接一大堆报错。 吐槽说完了接下来教你怎么解决 打开installer(在…

搞大事!法国邀请芬兰公司建量子工厂

法国当地时间5月13日,法国总统马克龙宣布启动2024年度“选择法国”(Choose France)商业峰会。今年峰会召开前,法国赢得了创纪录的150亿欧元外国投资承诺,覆盖从人工智能到制药和能源等领域。 而涉及到量子领域最重磅的…

el-select下拉框 添加 el-checkbox 多选框,支持全选、取消全选

el-select下拉框 添加 el-checkbox 多选框,支持全选、取消全选 前言一、实现思路二、实现代码1.模板代码2. css 样式3.js 代码 DEMO 演示总结 前言 实现效果预览 提示:本内容基于element-ui 组件实现,如果使用其他组件库、可参考下面实现方…

关于GitHub仓库建立及提交问题

文章目录 前言GitHub仓库创建token令牌的获取GitHub克隆到本地GitHub上传文件 前言 为了整一个GitHub仓库然后上传文件,笔者看了不下100篇博客,20段教程,最后在两位大佬的帮助下,才整明白了😭 先提前说一嘴从 2021年8月…

网络爬虫安全:90后小伙,用软件非法搬运他人原创视频被判刑

目录 违法视频搬运软件是网络爬虫 如何发现偷盗视频的爬虫? 拦截违法网络爬虫 央视《今日说法》栏目近日报道了一名程序员开发非法视频搬运软件获利超700多万,最终获刑的案例。 国内某知名短视频平台报警称,有人在网络上售卖一款视频搬运…

刘邦的创业团队是沛县人,朱元璋的则是凤阳;要创业,一个县人才就够了

当人们回顾刘邦和朱元璋的创业经历时,总是会感慨他们起于微末,都创下了偌大王朝,成就无上荣誉。 尤其是我们查阅史书时,发现这二人的崛起班底都是各自的家乡人,例如刘邦的班底就是沛县人,朱元璋的班底是凤…

分布式搜索-elaticsearch基础 概念

什么是elaticsearch: 倒排索引:就是将要查询的内容分成一个个词条,在将词条文档id存入,词条是唯一的。 文档词条总结: mysql和Elasticsearch概念对比: 架构: 基本概念总结:

一线互联网大数据面试题核心知识库(100万字)

本面试宝典涵盖大数据面试高频的所有技术栈,包括Liunx&Shell基础,Hadoop,Zookpeer,Flume,Kafka,Hive,Datax,Maxwell,DolphinScheduler,Spark Core&SQ…

光伏行业该如何起步?

随着全球对可再生能源的需求日益增长,光伏行业作为其中的佼佼者,正迎来前所未有的发展机遇。然而,对于新进入者或希望在这一领域有所建树的企业来说,如何起步并稳健发展是一个值得深思的问题。以下是一些关于光伏行业起步的建议。…

微服务- protobuf 安装

这里写自定义目录标题 1:下载链接2 :下载对应的包3:解压到目录4:设置环境变量5: 查看版本 1:下载链接 https://github.com/protocolbuffers/protobuf/releases 2 :下载对应的包 3:解压到目录 4&…

从RTTR谈Reflection机制

虽然C11引入了RTTI、Metaprogramming 等技术,但C在Reflection编程方面依旧功能有限。在社区上,RTTR则提供了一套C编写的反射库,补充了C在Reflection方面的缺陷。 零、环境 操作系统Windows 11Visual StudioVisual Studio Community 2022 CMa…

2024.05.14 Diffusion 代码学习笔记

配环境 我个人用的是Geowizard的环境:https://github.com/fuxiao0719/GeoWizard。 出于方便考虑,用的pytorch官方的docker容器,因此python版本(3.10)和原作者(3.9)不同,其余都是一…

一文说通用户故事点数是什么?

一文说通用户故事点数是什么? 第26期:一文说通用户故事点数是什么? 用户故事点数是一种采用相对估算法进行估算的一种工具,一般采用斐波那契数列表征用户故事里说的大小,采用0 1 2 3 5 8 13这样的一些数字来表征用户…

【漏洞复现】Secnet-智能路由系统 actpt_5g.data信息泄露

0x01 产品简介 Secnet安网智能AC管理系统是广州安网通信技术有限公司(简称“安网通信”)的无线AP管理系统 0x02 漏洞描述 Secnet智能路由系统 acipt 5g.data 接口存在信息泄露漏洞,未经身份验证的远程攻击者可以利用此漏洞获取系统账户名密码等重要凭据&#xff…

全流程TOUGH系列软件实践技术应用

TOUGH系列软件是由美国劳伦斯伯克利实验室开发的,旨在解决非饱和带中地下水、热运移的通用模拟软件。和传统地下水模拟软件Feflow和Modflow不同,TOUGH系列软件采用模块化设计和有限积分差网格剖分方法,通过配合不同状态方程(EOS模…