層次式體系結構概述

?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.pswp.cn/diannao/13158.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13158.shtml
英文地址,請注明出處:http://en.pswp.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…

【Flutter 面試題】 如何讓圖片重復堆疊容器?

【Flutter 面試題】 如何讓圖片重復堆疊容器? 文章目錄 寫在前面口述回答補充說明寫在前面 ?? 關于我 ,小雨青年 ?? CSDN博客專家,GitChat專欄作者,阿里云社區專家博主,51CTO專家博主。2023博客之星TOP153。 ???? 正在學 Flutter 的同學,你好! ?? Flutter …

根據web訪問日志,封禁請求量異常的IP,如IP在半小 時后恢復正常則解除封禁

在網絡安全日益受到重視的今天,如何有效防范惡意流量和攻擊成為了每個網站管理員必須面對的問題。惡意流量不僅會影響網站的正常運行,還可能導致服務器崩潰,給網站帶來不可估量的損失。為了應對這一問題,我們特別推出了一款實用的…

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…

SQL注入之數據庫基礎

數據庫基礎 創建數據庫 create 數據庫名稱;創建表 create table if not exists mobile(ID int(10) primary key auto_increment comment 手機編號 主鍵自增,Brand varchar(50) not null comment 手機品牌 非空約束,Model varchar(50) not null comment 手機型號 非空約束,Pr…

Keil手動安裝編譯器V5版本

V5編譯器下載:免積分下載 新版的keil不會自動幫你安裝V5版本的編譯器,但是很多教程很多比賽所用單片機都是V5的編譯器,所以用來開以前的或者開源的很多東西編譯直接一大堆報錯。 吐槽說完了接下來教你怎么解決 打開installer(在…

vue使用postcss-pxtorem實現自適應

安裝: npm install postcss-pxtorem -Dvue.config.js文件設置: css: {loaderOptions: {scss: {additionalData: import "~element-ui/packages/theme-chalk/src/common/var.scss";import"/styles/variables.scss";},postcss: {po…

OpenGL ES 面試高頻知識點(二)

說說紋理常用的采樣方式? 最鄰近點采樣(GL_NEAREST)和雙線性采樣(GL_LINEAR)。 GL_NEAREST 采樣是 OpenGL 默認的紋理采樣方式,OpenGL 會選擇中心點最接近紋理坐標的那個像素,紋理放大的時候會有鋸齒感或者顆粒感。 **GL_LINEAR 采樣會基于紋理坐標附近的紋理像素,計…

搞大事!法國邀請芬蘭公司建量子工廠

法國當地時間5月13日,法國總統馬克龍宣布啟動2024年度“選擇法國”(Choose France)商業峰會。今年峰會召開前,法國贏得了創紀錄的150億歐元外國投資承諾,覆蓋從人工智能到制藥和能源等領域。 而涉及到量子領域最重磅的…

python數據處理與分析入門-pandas使用(4)

往期文章: pandas使用1pandas使用2pandas使用3 pandas使用技巧 創建一個DF對象 # 首先創建一個時間序列 dates pd.date_range(20180101, periods6) print(dates)# 創建DataFrame對象,指定index和columns標簽 df pd.DataFrame(np.random.randn(6,4), …

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

el-select下拉框 添加 el-checkbox 多選框,支持全選、取消全選 前言一、實現思路二、實現代碼1.模板代碼2. css 樣式3.js 代碼 DEMO 演示總結 前言 實現效果預覽 提示:本內容基于element-ui 組件實現,如果使用其他組件庫、可參考下面實現方…

「AIGC算法」線性回歸模型

線性回歸是統計學和機器學習中一種常用的監督學習算法,用于預測連續數值型的輸出。線性回歸模型試圖找到特征變量(或稱自變量)與目標變量(因變量)之間的線性關系。 線性回歸的兩種主要類型: 簡單線性回歸&a…

學習Nginx(三):命令與信號

命令及選項 1. 顯示幫助信息: [rootRockyLinux9 ~]# nginx -h nginx version: nginx/1.26.0 Usage: nginx [-?hvVtTq] [-s signal] [-p prefix][-e filename] [-c filename] [-g directives]選項:-?,-h : 顯示幫助信息-v : 顯示版本信息-V …

Error in debuggerConnector: connect ECONNREFUSED問題解決

最近重新開始electron開發,兩三年前寫的代碼幾乎看不懂了。。然后debug一下,直接報錯了: Debugger listening on ws://127.0.0.1:20793/d146ffdb-c3b8-4480-a8d8-d04bb643c7c1 For help, see: https://nodejs.org/en/docs/inspector Error i…

關于GitHub倉庫建立及提交問題

文章目錄 前言GitHub倉庫創建token令牌的獲取GitHub克隆到本地GitHub上傳文件 前言 為了整一個GitHub倉庫然后上傳文件,筆者看了不下100篇博客,20段教程,最后在兩位大佬的幫助下,才整明白了😭 先提前說一嘴從 2021年8月…

網絡爬蟲安全:90后小伙,用軟件非法搬運他人原創視頻被判刑

目錄 違法視頻搬運軟件是網絡爬蟲 如何發現偷盜視頻的爬蟲? 攔截違法網絡爬蟲 央視《今日說法》欄目近日報道了一名程序員開發非法視頻搬運軟件獲利超700多萬,最終獲刑的案例。 國內某知名短視頻平臺報警稱,有人在網絡上售賣一款視頻搬運…

劉邦的創業團隊是沛縣人,朱元璋的則是鳳陽;要創業,一個縣人才就夠了

當人們回顧劉邦和朱元璋的創業經歷時,總是會感慨他們起于微末,都創下了偌大王朝,成就無上榮譽。 尤其是我們查閱史書時,發現這二人的崛起班底都是各自的家鄉人,例如劉邦的班底就是沛縣人,朱元璋的班底是鳳…