軟考高級系統架構設計師之構件與中間件技術篇

一、構件的定義

定義1:軟件構件是一種組裝單元,它具有規范的接口規約和顯式的語境依賴。軟件構件可以被獨立地部署并由第三方任意地組裝。
定義2:構件是某系統中有價值的、幾乎獨立的并可替換的一個部分,它在良好定義的體系結構語境內滿足某清晰的功能。
定義3:構件是一個獨立發布的功能部分,可以通過其接口訪問它的服務。

模塊的特性(結構化開發的產物)=> 對象的特性(1、一個實例單元,具有唯一的標志;2、可能具有狀態,此狀態外部可見;3、封裝了自己的狀態和行為。) => 構件的特性(獨立部署單元;1、2、作為第三方的組裝單元;3、沒有(外部的)可見狀態。)

構件系統架構特性

  • 構件系統體系結構由一組平臺決策、一組構件框架和構件框架之間的互操作設計組成。
  • 構件框架是一種專用的體系結構(通常圍繞一些關鍵的機制),同時,也是一組固定地 作用于構件層次機制的策略。
  • 概念框架的互操作設計包括系統體系結構連接的所有框架間的互操作的規則。構件是一組通常需要同時部署的原子構件。
  • 構件和原子構件之間的區別在于,大多數原子構件永遠都不會被單獨部署,盡管它們可以被單獨部署。
  • 一個原子構件是一個模塊和一組資源。
  • 模塊是一組類和可能的非面向對象的結構體,比如過程或者函數。
  • 資源是一個類型化的項的固定集合。
  • 資源這個概念可以包含代碼資源,進而包含模塊。問題在于除了編譯器編譯一個模塊或包生成的資源外,還可能存在其他的資源。在“純對象”的方法中,資源是外部化的不可改變的對象–不可改變是因為構件沒有持久化的標志,而且復制不能被區分。

二、中間件

中間件是一類構件
中間件是一類系統軟件
簡化結構、屏蔽差異、利于復用

在這里插入圖片描述
ESB 企業服務總線也屬于一種中間件。

采用中間件技術的優點
(1)面向需求。即設計師集中精力于業務邏輯本身。
(2)業務的分隔和包容性。應用開發人員可以按照不同的業務進行功能的劃分,體現為不同的接口或交互模式。
(3)設計與實現隔離。構件對外發生作用或構件間的交互,都是通過接口進行的,構件使用者只需要知道構件的接口,而不必關心其內部實現,這是設計與實現分離的關鍵。
(4)隔離復雜的系統資源。架構很重要的一個功能就是將系統資源與應用構件隔離,這是保證構件可復用甚至“即插即用”的基礎,與中間件的意圖也是一致的。
(5)符合標準的交互模型。中間件則實現了架構的模型,實現了標準的協議。
(6)軟件復用。中間件提供了構件封裝、交互規則、與環境的隔離等機制,這些都為軟件復用提供了方便的解決方案。
(7)提供對應用構件的管理。基于中間件的軟件可以方便地進行管理,因為構件總可以通過標識機制進行劃分。

例如JDBC。

三、構件的復用

流程:
1、檢索與提取構件 (1、基于關鍵守的檢索特點: 樹形或有向無回路圖結構,2、刻面檢索法:特點:利用Facet描述構件執行的功能、被操作的數據、構件應用的語境或任意其他特征
例如:分多個刻面:1、應用領域使用環境、功能; 3、超文本檢索法 特點:按照人類的聯想思維方式任意跳轉到包含相關概念或構件的文檔)
2、理解與評價構件 (1、要復用構件,準確地理解構件至關重要。特別是對構件修改使用時。2、為達到目的,必須要求構件的開發過程遵循公共標準。3、一般構件庫的文檔中全面而準確地說明以下內容:構件的功能與行為、相關的領域知識、可適應性約束條件與例外情形、可以預見的修改部分及修改方法。)
3、修改構件 (1、理想狀態是直接復用構件庫中現成的構件,但大多數情況下,必須對構件進行或多或少的修改,以應對新需求。2、為了減少構件修改的工作量,要求開發人員盡量使構件的功能、行為和接口設計更為抽象化、通用化和參數化。這樣,復用者即可通過對實參的選取來調整構件的功能或行為。如果這種調整仍不足以使構件適用于新系統,復用者就必須借助設計信息和文檔來修改構件。3、構件庫中若無可修改使用的構件,則按新需求開發構件,并存入構件庫。)
4、組裝構件 (組裝的三種方式
1、基于功能的組裝:采用子程序調用和參數傳遞的方式將構件組裝起來。2、基于數據的組裝:仍然是傳統的子程序調用與參數傳遞。但它所依賴的軟件設計方法不再是功能分解,而是面向數據的設計方法,例如,Jackson系統開發方法。3、面向對象的組裝:如果從類庫中檢索出來的基類能夠完全滿足新系統的需求,則可以直接應用否則,必須以基類為父類,生成相應的子類,以滿足新系統的需求。
構件組裝失配問題
1、由構件引起的失配,包括由于系統對構件基礎設施、構件控制模型和構件數據模型的假設存在沖突引起的失配;
2、由連接子引起的失配,包括由于系統對構件交互協議、連接子數據模型的假設存在沖突引起的失配;
3、由于系統成分對全局體系結構的假設存在沖突引起的失配等。要解決失配問題,首先需要檢測出失配問題,并在此基礎上通過適當的手段消除檢測出的失配問題。)

例子:

軟件重用可以分為垂直式重用和水平式重用,()是一種典型的水平式重用。
A 醫學詞匯表
B標準函數庫
C 電子商務標準
D 網銀支付接口

參考答案:B

構件組裝是指將庫中的構件經適當修改后相互連接構成新的目標軟件。()不屬于構件組裝技術。
A 基于功能的構件組裝技術
B 基于數據的構件組裝技術
C基于實現的構件組裝技術
D 面向對象的構件組裝技術

參考答案:C

四、構件的分類

從構件的外部形態來看,構件可分為5類:
(1)獨立而成熟的構件。已在實際運行環境多次檢驗,該類構件隱藏了所有接口,用戶只需用規定好的命令進行使用。例如,數據庫管理系統和操作系統等
(2)有限制的構件。有限制的構件提供了接口,指出了使用的條件和前提,這種構件在裝配時,會產生資源沖突、霍蓋等影響,在使用時需要加以測試。例如,各種面向對象程序設計語言中的基礎類庫等。
(3)適應性構件。適應性構件進行了包裝或使用了接口技術,把不兼容性、資源沖突等進行了處理,可以直接使用。這種構件可以不加修改地使用在各種環境中。例如ActiveX等。
(4)裝配的構件。裝配(assemble)的構件在安裝時,已經裝配在操作系統、數據庫管理系統或信息系統不同層次上,使用膠水代碼(gluecode)就可以進行連接使用。目前一些軟件商提供的大多數軟件產品都屬這一類。
(5)可修改的構件。對原構件修改錯誤、增加新功能,可以利用重新“包裝”或寫接口來實現構件的版本替換。這種構件在應用系統開發中使用得比較多。

五、中間件的分類

中間件分類
通信處理(消息)中間件 (特點:可靠、高效、實時跨平臺通信,eLink,MQSeries)
事務處理(交易)中間件 (事務分發,負載均衡,Tuxedo)
數據存取管理中間件 (為虛擬緩沖存取、格式轉換、解壓等帶來方便)
Web服務器中間件 (有負載均衡、緩存、安全性等功能)
安全中間件 (如:加密,認證等)
跨平臺和架構的中間件 (解決跨平臺問題,如:CORBA)
專用平臺中間件 (為特定應用領域設計領域參考模式,建立相應架構)
網絡中間件 (功能包括網管、接入、網絡測試、虛擬社區和虛擬緩沖等)

六、構件標準

三大構件標準

  • COBRA Common Object Request Broker Architecture,公共對象請求代理體系結構)是由對象管理組織(OMG)制定的一種分布式對象計算標準,旨在實現不同編程語言、操作系統和硬件平臺之間軟件組件的無縫通信與協作
    (伺服對象(Servant):CORBA對象的真正實現,負責完成客戶端請求。對象適配器(0bject Adapter):用于屏蔽ORB內核的實現細節,為服務器對象的實現者提供抽象接口,以便他們使用ORB內部的某些功能。對象請求代理(ObjectRequest Broker):解釋調用并負責查找實現該請求的對象,將參數傳給找到的對象,并調用方法返回結果。客戶方不需要了解服務對象的位置、通信方式、實現、激活或存儲機制。)
  • COM (Component Object Model,組件對象模型)是微軟提出的一套二進制軟件組件標準,用于實現跨語言、跨進程的軟件組件交互。)
  • EJB會話Bean: 實現業務邏輯,負責完成服務端與客戶端的交互
    實體Bean: 實現O/R映射,簡化數據庫開發工作
    消息驅動Bean: 處理并發與異常訪問)

例子:
CORBA服務端構件模型中,()是CORBA對象的真正實現,負責完成客戶端請求。
A伺服對象(Servant)
B對象適配器(Object Adapter)
C對象請求代理(Obiect Request Broker)
D適配器激活器(AdapterActivator)
參考答案:A

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/97996.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/97996.shtml
英文地址,請注明出處:http://en.pswp.cn/web/97996.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Node.js 文件上傳中文文件名亂碼問題,為什么只有Node會有亂碼問題,其他后端框架少見?

問題現象當用戶上傳包含中文字符的文件時,在服務器端獲取到的文件名可能變成類似 ????.txt 這樣的亂碼,而不是預期的中文文件名。為什么只有Node會亂碼?很多后端框架(如 Java Spring Boot、Python Django、PHP Laravel&#x…

學習英語音標 (從漢語角度看英語音標發音差異)

僅供參考, 跟著教學視頻看不懂時再來看以下引導 以下只寫容易出錯的音標 發音視頻: https://www.jiwake.com/yinbiaofayin/ 音標規則單詞??類似漢語e, 餓~urge?類似漢語e, 餓go??類似漢語o, 哦~walk?類似漢語o, 哦wash?/i?/的短語, 不止發聲短,舌頭不用隆起it?類似漢…

論文筆記(九十一)GWM: Towards Scalable Gaussian World Models for Robotic Manipulation

GWM: Towards Scalable Gaussian World Models for Robotic Manipulation文章概括摘要1. 引言2. 相關工作3. 高斯世界模型(Gaussian World Model)3.1. 世界狀態編碼(World State Encoding)3.2. 基于擴散的動態建模(Dif…

apache phoenix sql 命令大全詳解

這是一份非常詳細的 Apache Phoenix SQL 命令大全和詳解。Phoenix 作為 HBase 上的 SQL 層,其語法大部分與標準 SQL 兼容,但也有許多針對 HBase 的特性擴展。核心概念 在開始之前,請記住 Phoenix 的兩個核心概念: 主鍵&#xff08…

【代碼講解】SO-ARM100 雙場景演示:手柄驅動 Mujoco 仿真 + 實機控制

視頻講解: 【代碼講解】SO-ARM100 雙場景演示:手柄驅動 Mujoco 仿真 實機控制今天介紹下使用使用北通手柄通過控制 Mujoco 中的 SO-ARM100 機械臂,然后將關節數據通過 zmq 通信轉發控制實際機械臂。 本期中會涉及如下點,需要注意…

「數據獲取」《中國教育經費統計年鑒》(1997-2024)

01、數據簡介《中國教育經費統計年鑒》作為我國教育經費領域的核心統計典籍,全面系統地呈現了全國各級各類教育經費的來源構成、分配流向與使用成效。其統計范圍覆蓋學前教育、基礎教育、中等職業教育、高等教育及特殊教育等全學段,數據維度涵蓋財政性教…

使用 Logspout 收集所有容器的

1.將所有容器的輸出路由到遠程 rsyslog 服務器1.修改 rsyslog 配置文件/etc/rsyslog.conf, 從中找到 “# Provides UDP sysilog recepion"語句。并將該處的以下兩行配置代碼行首的“#”字符刪除(取消注釋)[roothost1 ~]# vi /etc/rsyslog.conf [roo…

【智能化解決方案】基于多目標優化檢索增強生成的智能行程規劃方案

📝 基于多目標優化的智能行程規劃方案 1 用戶需求分析與矩陣構建 1.1 核心用戶信息提取 根據用戶提供的年齡、出發地、目的地、出行時間等基本信息,我們首先構建一個用戶特征向量: U {Age, Origin, Destination, TravelDate, Duration, Budg…

軟件研發的演變

軟件研發從一門手工作坊式的藝術,逐步演進為一門系統化、工程化、智能化的現代學科。其發展歷程不僅體現了技術的飛躍,更反映了方法論、協作模式和思維方式的深刻變革。一、發展演變歷程軟件研發的演變可以大致劃分為以下幾個階段:1. 軟件作坊…

「日拱一碼」091 機器學習——集成學習

目錄 集成學習介紹 1. 核心思想 2. 為什么有效? 3. 主要流派與方法 A. 并行方法:Bagging (Bootstrap Aggregating) B. 串行方法:Boosting C. 堆疊法:Stacking 代碼示例 Bagging 的代表 —— 隨機森林 (Random Forest) 集成…

vscode實現第三方包的使用,cmake結合vcpkg(跨平臺)

要使用cmake和vcpkg組織一個完整的現代cpp項目,一般來說需要三個文件vcpkg.json描述第三方依賴項//vcpkg.json {"dependencies": ["fmt"] }//安裝,在vcpkg.json目錄執行 vcpkg installCMakePresets.json定義項目的本質屬性(What&…

DevExpress中Word Processing Document API學習記錄

文章目錄1 文檔結構劃分2 文檔操作基礎2.1 Positions and Ranges2.2 Secitions2.3 Paragraphs2.4 Tables2.5 Lists2.6 Hyperlinks and Bookmarks2.7 Comments2.8 Headers and Footers2.9 Shapes and Pictures2.10 Watermarks2.11 Charts2.12 OLE Objects2.13 ActiveX Controls2…

Roo Code 的差異_快速編輯功能

什么是差異編輯? 簡單來說,差異編輯就像是一位細心的裝修師傅:他不會把整個房子拆掉重蓋,而是精準地只修補需要改動的部分。Roo Code 的這項功能默認開啟,它通過比對代碼差異(diff)來實施修改&a…

【Axure高保真原型】標簽樹分類查詢案例

今天和大家分享標簽樹分類查詢案例的原型模版,效果包括: 樹形分類——點擊左側樹形里的箭頭,可以展開或收起子級選項; 查詢表格——點擊標簽樹里的選項,如果是末級選項,可以篩選右側表格用戶標簽&#xf…

容器化部署項目05

一、工作原理 鏡像:容器的模板,包括容器運行時所需的數據 容器:運行中的進程,依賴鏡像運行,鏡像的具現化 鏡像你可以把它看成Python中的類,而容器可以看做是類的實例化對象。 一個類可以有多個對象&#xf…

微信小程序 工作日歷 周計劃日報 修改等提報和狀態展示功能,支持h5,Android ,ios,基于uniapp,適配vue2和vue3

Work-calendar 介紹 (底部附鏈接) 基于uni-calendar做的定制化開發,主要功能為工作日歷展示和提報組件 ? 1.支持周計劃日報狀態展示且可配置 ? 2.支持農歷展示配置,回到當日,月份切換 ? 3.日歷,周報…

openharmony 鴻蒙 下 利用藍牙API(a2dp模塊-高級音頻,ble模塊-低功耗藍牙等)完成對藍牙音響的控制(藍牙廣播)

1.首先是登錄頁面(利用webapi 和本地數據存儲完成登陸操作) 2.添加設備(利用ble.startBLEScan 和 ble.on("BLEDeviceFind", onReceiveEvent);完成藍牙掃描與顯示) 3.藍牙ble連接(利用ble.createGattClientDe…

17、邏輯回歸與分類評估 - 從連續到離散的智能判斷

學習目標:理解分類問題的本質和評估方法,掌握邏輯回歸的數學原理和概率解釋,學會二分類和多分類問題的處理方法,熟練使用分類評估指標,理解過擬合和正則化的基本概念。 > 從第16章到第17章:從預測數值到判斷類別 在第16章中,我們學習了線性回歸,解決的是預測連續數…

自動化腳本的核心引擎

自動化腳本作為現代軟件開發與運維的重要工具,其核心引擎承擔著解析指令、調度任務和執行邏輯的關鍵職能。這種引擎本質上是一個輕量級的運行時環境,通過預定義的規則集將人類可讀的腳本語言轉化為機器可執行的原子操作。在持續集成/持續交付&#xff08…

【Vue2 ?】Vue2 入門之旅 · 進階篇(九):Vue2 性能優化

在前幾篇文章中,我們學習了 Vuex 的內部機制以及 Vue Router 的工作原理。本篇將深入探討 Vue2 性能優化,幫助你掌握在開發中提升 Vue 應用性能的方法和技巧。 目錄 性能優化的意義響應式系統優化虛擬 DOM 與渲染優化組件懶加載與按需渲染事件與計算屬性…