《軟件建模與實(shí)踐》課件-5-軟件體系結(jié)構(gòu)設(shè)計_第1頁
《軟件建模與實(shí)踐》課件-5-軟件體系結(jié)構(gòu)設(shè)計_第2頁
《軟件建模與實(shí)踐》課件-5-軟件體系結(jié)構(gòu)設(shè)計_第3頁
《軟件建模與實(shí)踐》課件-5-軟件體系結(jié)構(gòu)設(shè)計_第4頁
《軟件建模與實(shí)踐》課件-5-軟件體系結(jié)構(gòu)設(shè)計_第5頁
已閱讀5頁,還剩76頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

課程內(nèi)容軟件體系結(jié)構(gòu)的概念客戶端/服務(wù)器端體系結(jié)構(gòu)瀏覽器端/服務(wù)器端體系結(jié)構(gòu)面向服務(wù)的體系結(jié)構(gòu)基于構(gòu)件的體系結(jié)構(gòu)并發(fā)和實(shí)時軟件體系結(jié)構(gòu)課程目的理解軟件體系結(jié)構(gòu)的作用了解不同體系結(jié)構(gòu)的概念、特點(diǎn)與實(shí)現(xiàn)方式重點(diǎn)體系結(jié)構(gòu)的特點(diǎn)難點(diǎn)體系結(jié)構(gòu)的實(shí)現(xiàn)方式軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)(SoftwareArchitecture)為軟件系統(tǒng)提供了一個結(jié)構(gòu)、行為和屬性的高級抽象,由構(gòu)成軟件系統(tǒng)的結(jié)構(gòu)化元素(構(gòu)件)的描述、元素的相互作用、指導(dǎo)元素集成的模式以及這些模式的約束組成。構(gòu)件包括處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件,處理構(gòu)件負(fù)責(zé)對數(shù)據(jù)進(jìn)行加工,數(shù)據(jù)構(gòu)件是被加工的信息,連接構(gòu)件把體系結(jié)構(gòu)的不同部分組合連接起來。軟件體系結(jié)構(gòu)影響了系統(tǒng)的性能、安全性和可用性。軟件體系結(jié)構(gòu)是構(gòu)建計算機(jī)軟件實(shí)踐的基礎(chǔ)。與建筑師設(shè)定建筑項目的設(shè)計原則和目標(biāo),作為繪圖員畫圖的基礎(chǔ)一樣,軟件架構(gòu)師將軟件體系結(jié)構(gòu)作為滿足各種客戶需求的實(shí)用系統(tǒng)設(shè)計解決方案的基礎(chǔ)。了解定義5.1客戶端/服務(wù)器體系結(jié)構(gòu)5.1.1概念客戶端/服務(wù)器體系結(jié)構(gòu)即Client/Server(C/S)體系結(jié)構(gòu),基于資源不對等,且為實(shí)現(xiàn)共享而提出來的一種體系結(jié)構(gòu)。C/S體系結(jié)構(gòu)的特點(diǎn)是基于“胖客戶端”(傳統(tǒng)客戶端)結(jié)構(gòu)的兩層結(jié)構(gòu)應(yīng)用軟件。第一層結(jié)合了客戶端系統(tǒng)上的表示和業(yè)務(wù)邏輯。客戶端主要是為了面向用戶設(shè)計的,用來完成與用戶的交互任務(wù)。例如,用戶輸入語言的轉(zhuǎn)換,展示用戶需要呈現(xiàn)的信息,在首頁實(shí)現(xiàn)系統(tǒng)與用戶之間的交互,在實(shí)際設(shè)計中可以根據(jù)用戶的特點(diǎn)或需求對界面進(jìn)行個性化設(shè)計。5.1.1概念C/S模型:5.1.1概念第二層結(jié)合了網(wǎng)絡(luò)上的數(shù)據(jù)庫服務(wù)器,通常采用高性能的PC、工作站或小型機(jī),并采用大型數(shù)據(jù)庫系統(tǒng),如Oracle、Sybase、Informix或SQLServer??蛻舳税惭b專用的客戶端軟件,服務(wù)器負(fù)責(zé)數(shù)據(jù)存儲、復(fù)制、導(dǎo)出、合并和其他管理。二者分工明確,既提高了事務(wù)處理的效率,又有效保障了系統(tǒng)的安全性。它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理地分配到客戶端和服務(wù)器端,從而減少系統(tǒng)的開銷。5.1.1概念C/S模型以其開發(fā)模型簡單、數(shù)據(jù)操作和事務(wù)處理能力強(qiáng)等特點(diǎn)已被人們廣泛理解接受并加以運(yùn)用,相比于單層軟件體系結(jié)構(gòu)取得了非常大的進(jìn)步,在軟件開發(fā)過程中有很多優(yōu)越性。1)客戶端對用戶需求的響應(yīng)速度快。C/S體系結(jié)構(gòu)的軟件可以充分發(fā)揮客戶端機(jī)器的處理能力,某些內(nèi)容由客戶端處理完成以后,再提交給服務(wù)器,滿足了用戶對操作快速響應(yīng)的需求。C/S體系結(jié)構(gòu)的客戶端和服務(wù)器的交互過程如圖5-1所示。5.1.2特點(diǎn)

圖5-1客戶端/服務(wù)器體系結(jié)構(gòu)示意圖2)減輕了服務(wù)器端的處理負(fù)擔(dān)。合理地將任務(wù)分配給客戶端和服務(wù)器端,可以極大減少服務(wù)器端的操作負(fù)荷。用戶在客戶端進(jìn)行操作后,客戶端程序就會正確找到服務(wù)器端程序,并向服務(wù)器端發(fā)出請求。服務(wù)器端將根據(jù)需求進(jìn)行合理處理,并將結(jié)果返回給客戶端。5.1.2特點(diǎn)3)對數(shù)據(jù)完整性的控制質(zhì)量相對較高。在這種體系結(jié)構(gòu)中,數(shù)據(jù)的完整性是由兩端利用應(yīng)用程序單獨(dú)控制的,若客戶端違反數(shù)據(jù)操作規(guī)則,服務(wù)器端就會果斷拒絕違反數(shù)據(jù)操作規(guī)則的操作,從而保證了數(shù)據(jù)的完整性。5.1.2特點(diǎn)在C/S體系結(jié)構(gòu)中,表現(xiàn)層和事務(wù)層都位于客戶端,而數(shù)據(jù)邏輯層和數(shù)據(jù)存儲層位于服務(wù)器端。這種組織安排也帶來諸多的限制:1)需要安裝專門的客戶端軟件。首先安裝的工作量因客戶端數(shù)量而決定,然后需要維護(hù)計算機(jī)出現(xiàn)的任何問題,如病毒、硬件損壞等。此外,當(dāng)系統(tǒng)軟件升級時,每個客戶端都需要重新安裝,這對于維護(hù)和升級工作來說非常困難,不利于推廣使用??蛻舳?服務(wù)器體系結(jié)構(gòu)的限制2)C/S體系結(jié)構(gòu)需要開發(fā)出不同版本的客戶端軟件以應(yīng)用到不同的操作系統(tǒng)中,并且很難適應(yīng)較大規(guī)模的局域網(wǎng)用戶同時使用,因此生產(chǎn)成本代價過高、效率低下。3)數(shù)據(jù)安全性不高??蛻魴C(jī)程序可以直接訪問數(shù)據(jù)庫服務(wù)器,因此,客戶機(jī)上的其他惡意性程序也有可能訪問到數(shù)據(jù)庫,無法保證中心數(shù)據(jù)庫的安全??蛻舳?服務(wù)器體系結(jié)構(gòu)的限制5.1.3三層c/s體系結(jié)構(gòu)為克服兩層C/S體系結(jié)構(gòu)的缺點(diǎn),構(gòu)建了三層C/S體系結(jié)構(gòu)。與傳統(tǒng)的兩層C/S體系結(jié)構(gòu)相比,三層C/S體系結(jié)構(gòu)中添加了一個中間層——應(yīng)用服務(wù)器層,將邏輯應(yīng)用層的內(nèi)容存儲在應(yīng)用服務(wù)器上,而客戶端只存儲表示層,如圖5-2所示。

圖5-2三層C/S體系結(jié)構(gòu)示例圖5.1.3三層c/s體系結(jié)構(gòu)三層C/S模型:5.1.3三層c/s體系結(jié)構(gòu)三層C/S體系結(jié)構(gòu)根據(jù)應(yīng)用功能將整個體系分為表示層、功能層與數(shù)據(jù)層三個層面。C/S體系結(jié)構(gòu)的改變是對三個層面進(jìn)行明確,同時使其分別在邏輯上獨(dú)立。兩層C/S結(jié)構(gòu)中數(shù)據(jù)層是獨(dú)立存在的,在轉(zhuǎn)變成為三層結(jié)構(gòu)的同時,核心的問題就是將功能層與表示層明確分離,程序上完成功能的獨(dú)立,同時要對兩層之間的接口進(jìn)行規(guī)劃。5.1.3三層c/s體系結(jié)構(gòu)1)表示層是應(yīng)用的用戶接口部分,它擔(dān)負(fù)著用戶與應(yīng)用間的對話功能。它用于檢查用戶從鍵盤等輸入的數(shù)據(jù),顯示應(yīng)用輸出的數(shù)據(jù);檢查的內(nèi)容也只限于數(shù)據(jù)的形式和值的范圍,不包括有關(guān)業(yè)務(wù)本身的處理邏輯。為使用戶能直觀地進(jìn)行操作,一般要使用圖形用戶接口(GUI)。在變更用戶接口時,只需改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他兩層。圖形界面的結(jié)構(gòu)不是固定的,這種結(jié)構(gòu)以便以后進(jìn)行靈活地修改。5.1.3三層c/s體系結(jié)構(gòu)2)功能層相當(dāng)于應(yīng)用程序的本體,即對特定業(yè)務(wù)流程進(jìn)行邏輯編程。例如,在制作訂購合同時要計算合同金額,按照設(shè)定好的格式配置數(shù)據(jù)、打印訂購合同,而處理所需的數(shù)據(jù)則要從表示層或數(shù)據(jù)層取得。表示層和功能層之間的數(shù)據(jù)交往要盡可能簡潔。例如,用戶檢索數(shù)據(jù)時,要設(shè)法將有關(guān)檢索要求的信息一次性地傳送給功能層,而由功能層處理過的檢索結(jié)果數(shù)據(jù)也應(yīng)一次傳送性地給表示層。在應(yīng)用程序設(shè)計中,最重要的是要避免單一業(yè)務(wù)流程的笨拙設(shè)計以及表示層和功能層之間的多個數(shù)據(jù)交換。5.1.3三層c/s體系結(jié)構(gòu)3)數(shù)據(jù)層就是數(shù)據(jù)庫管理系統(tǒng)(DBMS),負(fù)責(zé)管理對數(shù)據(jù)庫數(shù)據(jù)的讀寫。DBMS必須能夠快速執(zhí)行大量數(shù)據(jù)的更新和檢索?,F(xiàn)在使用的大多數(shù)是關(guān)系型數(shù)據(jù)庫,采用SQL語句來實(shí)現(xiàn)功能層到數(shù)據(jù)層之間的數(shù)據(jù)傳遞。三層c/s體系結(jié)構(gòu)的優(yōu)點(diǎn)1)如果合理地將結(jié)構(gòu)根據(jù)邏輯結(jié)構(gòu)進(jìn)行三層劃分,可以使不同的邏輯塊具有清晰明確的層次,從而提高了系統(tǒng)的可維護(hù)性和可擴(kuò)充性。2)客戶端軟件經(jīng)過精簡后,可以保持正常的功能,并減少資源消耗。3)在三層C/S體系結(jié)構(gòu)中,可以分別選擇合適的編程語言來并行地開發(fā)每一層的邏輯功能,以提高開發(fā)效率,同時減少系統(tǒng)的維護(hù)難度,提高了效率和安全性。5.1.4案例簡析:高校學(xué)生管理系統(tǒng)

該系統(tǒng)主要特點(diǎn)是信息量大、單位多、分布廣、安全性要求高。如果采用兩層C/S體系結(jié)構(gòu),可以將學(xué)生管理系統(tǒng)分為客戶端和服務(wù)器端,如圖5-3。圖5-3學(xué)生管理系統(tǒng)體系結(jié)構(gòu)5.1.4案例簡析:高校學(xué)生管理系統(tǒng)學(xué)生管理系統(tǒng)功能可以分為學(xué)生信息管理、系統(tǒng)管理、服務(wù)管理、學(xué)生考勤管理四大模塊,如圖5-4所示。圖5-4學(xué)生管理系統(tǒng)功能模塊5.1.4案例簡析:高校學(xué)生管理系統(tǒng)該系統(tǒng)基于C/S體系結(jié)構(gòu)設(shè)計,通過各個模塊之間的相互作用,構(gòu)造出一個相對全面的學(xué)生管理系統(tǒng)。通過該系統(tǒng)的使用可以不斷完善高校的管理能力,加強(qiáng)高校學(xué)生管理工作效率,更加有效地管理學(xué)生的生活和學(xué)習(xí)狀態(tài)。5.2瀏覽器/服務(wù)器體系結(jié)構(gòu)5.2.1概念瀏覽器端/服務(wù)器體系結(jié)構(gòu)即Browser/Server(B/S)體系結(jié)構(gòu),是結(jié)合瀏覽器的多腳本語言,對C/S體系結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面完全通過瀏覽器實(shí)現(xiàn),只有少部分事務(wù)邏輯在前端實(shí)現(xiàn),主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),形成所謂三層(3-tier)結(jié)構(gòu)。5.2.1概念B/S體系結(jié)構(gòu)由表示層、功能層和數(shù)據(jù)層組成。表示層為瀏覽器,瀏覽器僅承擔(dān)網(wǎng)頁信息的瀏覽功能;功能層由Web服務(wù)器承擔(dān)業(yè)務(wù)處理邏輯、頁面存儲管理、接收瀏覽器請求和執(zhí)行相應(yīng)處理程序;數(shù)據(jù)層由數(shù)據(jù)庫服務(wù)器承擔(dān)數(shù)據(jù)處理邏輯,其任務(wù)是接收服務(wù)器對數(shù)據(jù)庫服務(wù)器提出的數(shù)據(jù)操作的請求,由數(shù)據(jù)庫服務(wù)器完成數(shù)據(jù)的查詢、修改、統(tǒng)計、更新等工作,并把對數(shù)據(jù)的處理結(jié)果提交給服務(wù)器。瀏覽器和服務(wù)器之間有時還存在中間件,瀏覽器端和服務(wù)器端需要交互的信息往往是通過中間件完成的。5.2.1概念B/S體系結(jié)構(gòu)可以進(jìn)行信息分布式處理,以有效降低資源成本,提高系統(tǒng)性能。B/S體系結(jié)構(gòu)具有廣泛的應(yīng)用范圍,在軟件應(yīng)用的廣泛性上,B/S體系結(jié)構(gòu)的客戶端具有更好的通用性,并且對應(yīng)用程序環(huán)境的依賴性較小。同時,由于客戶端使用瀏覽器,因此在開發(fā)和維護(hù)上更加方便,可以降低系統(tǒng)開發(fā)和維護(hù)的成本。B/S體系結(jié)構(gòu)如圖5-5所示。

圖5-5瀏覽器端/服務(wù)器體系結(jié)構(gòu)示例圖5.2.2特點(diǎn)1)界面統(tǒng)一、使用簡單。用戶端只需安裝單一的網(wǎng)頁瀏覽器軟件(如IE、Chrome等),不需要像C/S體系結(jié)構(gòu)中那樣安裝數(shù)據(jù)庫客戶端軟件、應(yīng)用軟件等,操作界面簡單統(tǒng)一。2)便于系統(tǒng)維護(hù)。由于用戶端無需安裝專用的軟件,因此對應(yīng)用系統(tǒng)進(jìn)行升級時,只需更新服務(wù)器端的軟件,減輕了系統(tǒng)維護(hù)與升級的成本與工作量,使用戶的總體成本大大降低。3)擴(kuò)展性好,有效保護(hù)企業(yè)投資。B/S體系結(jié)構(gòu)采用標(biāo)準(zhǔn)的TCP/IP、HTTP協(xié)議,它可以使網(wǎng)管系統(tǒng)與1nternet/Intranet有機(jī)結(jié)合,具有良好的擴(kuò)展性。5.2.2特點(diǎn)4)信息共享度高。HTML是數(shù)據(jù)格式的一個開放標(biāo)準(zhǔn),目前大多數(shù)流行的軟件均支持HTML,同時MTML技術(shù)使得Browser可訪問多種格式文件。5)有良好的廣域網(wǎng)支持和較高的安全性。當(dāng)然,對于特定復(fù)雜的應(yīng)用,采用C/S體系結(jié)構(gòu)開發(fā)工具比較豐富,如一些圖形化的應(yīng)用,在Browser環(huán)境下開放比較困難,而且不是很靈活。在具體應(yīng)用中,一般都是把C/S體系結(jié)構(gòu)和B/S體系結(jié)構(gòu)的特點(diǎn)結(jié)合起來,一部分應(yīng)用采用B/S體系結(jié)構(gòu),其他部分采用C/S體系結(jié)構(gòu)。瀏覽器/服務(wù)器體系結(jié)構(gòu)的缺點(diǎn)1)由于瀏覽器只是為了進(jìn)行Web瀏覽而設(shè)計的,因此當(dāng)應(yīng)用于Web系統(tǒng)時,許多功能不能實(shí)現(xiàn)或?qū)崿F(xiàn)起來比較困難。比如,通過瀏覽器進(jìn)行大量的數(shù)據(jù)輸入,或進(jìn)行報表的應(yīng)答都是比較困難和不便的。2)復(fù)雜的應(yīng)用構(gòu)造困難。雖然可以用ActiveX、Java等技術(shù)開發(fā)較為復(fù)雜的應(yīng)用,但是相對于發(fā)展已非常成熟的一系列C/S應(yīng)用工具來說,用這些技術(shù)進(jìn)行開發(fā)較為復(fù)雜。3)HTTP可靠性低,有可能造成應(yīng)用故障,特別是對于管理者來說,采用瀏覽器方式進(jìn)行系統(tǒng)的維護(hù)是非常不安全和不方便的。瀏覽器/服務(wù)器體系結(jié)構(gòu)的缺點(diǎn)4)Web服務(wù)器成為數(shù)據(jù)庫的唯一客戶端,所有對數(shù)據(jù)庫的連接都通過該服務(wù)器實(shí)現(xiàn)。Web服務(wù)器同時要處理與客戶請求以及與數(shù)據(jù)庫的連接,當(dāng)訪問量大時,服務(wù)器端負(fù)載過重。5)業(yè)務(wù)邏輯和數(shù)據(jù)訪問程序一般由JavaScript、VB-Script等嵌入式小程序?qū)崿F(xiàn),分散在各個頁面里,難以實(shí)現(xiàn)共享,給升級和維護(hù)也帶來了不便。5.2.3案例簡析:圖書館信息管理系統(tǒng)圖書館信息管理系統(tǒng)體系結(jié)構(gòu)如圖5-6所示。圖5-6圖書館信息管理系統(tǒng)體系結(jié)構(gòu)5.2.3案例簡析:圖書館信息管理系統(tǒng)高校圖書館信息化管理系統(tǒng)是在功能模塊化的基礎(chǔ)上進(jìn)行設(shè)計的。通過層次的概念將子系統(tǒng)劃分為若干組,并設(shè)計了每兩組之間的通信方式。以B/S為基礎(chǔ),在設(shè)計過程中分為三個不同的層次,其中,表示層與邏輯層的成對交互,邏輯層與數(shù)據(jù)層可以大大降低不同層次功能之間的耦合效應(yīng),實(shí)現(xiàn)系統(tǒng)的良好維護(hù)。5.2.3案例簡析:圖書館信息管理系統(tǒng)分析系統(tǒng)前期的實(shí)際需求,將高校圖書館信息管理系統(tǒng)簡單地劃分為4個子系統(tǒng):借閱信息管理、書籍信息管理、讀者信息管理和系統(tǒng)管理。各子系統(tǒng)具備相應(yīng)的功能并且面向不同的用戶。學(xué)生可以通過瀏覽器訪問完成書籍的查詢和借閱;圖書管理員可以進(jìn)行書籍管理和讀者管理?;贐/S體系結(jié)構(gòu)可以清晰地構(gòu)建出界面統(tǒng)一、使用簡單、易于維護(hù)的圖書館信息管理系統(tǒng),使得圖書館的日常管理工作變得更加智能和科學(xué),降低了管理成本,增強(qiáng)了圖書館使用效率。5.3面向服務(wù)的體系結(jié)構(gòu)5.3面向服務(wù)的體系結(jié)構(gòu)面向服務(wù)的體系結(jié)構(gòu)(ServiceOrientedArchitecture,SOA)是一種粗粒度、松耦合的服務(wù)架構(gòu),可以看作B/S體系結(jié)構(gòu)、XML(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)/WebService技術(shù)之后的自然延伸。SOA將應(yīng)用程序的不同功能單元(稱為服務(wù))進(jìn)行拆分,服務(wù)之間通過簡單、精確定義地接口進(jìn)行通信,不涉及底層編程接口和通信模型。5.3.1概念SOA的定義主要分為兩類,一類認(rèn)為SOA主要是一種架構(gòu)的風(fēng)格;另一類認(rèn)為SOA是一種分布式軟件系統(tǒng)的構(gòu)造方法,包括運(yùn)行環(huán)境、編譯模型、架構(gòu)風(fēng)格、相關(guān)理論方法等,其涵蓋了服務(wù)的整個生命周期。在此我們對SOA的定義偏向于后者,認(rèn)為SOA是一種分布式軟件系統(tǒng)的構(gòu)造方法和環(huán)境。5.3.2特點(diǎn)SOA的目標(biāo)是實(shí)現(xiàn)靈活可變的軟件系統(tǒng),其核心要素為標(biāo)準(zhǔn)化封裝、復(fù)用、松耦合可編排等,如圖5-7所示。

圖5-7SOA的核心要素5.3.2特點(diǎn)1)標(biāo)準(zhǔn)化封裝:SOA通過標(biāo)準(zhǔn)的HTTP協(xié)議實(shí)現(xiàn)了連接互操作,且服務(wù)的封裝采用XML協(xié)議,具有自解析和自定義的特性。因此,基于SOA的中間件還可以實(shí)現(xiàn)語義互操作。2)復(fù)用:從軟件復(fù)用技術(shù)的發(fā)展來看,SOA可以方便地不斷地提升抽象的級別,擴(kuò)大復(fù)用范圍。3)松耦合可編排:SOA有著松耦合的特性,企業(yè)可以通過增加或者減少模塊來滿足新的需求或是終止需求,從而滿足不斷變化的業(yè)務(wù)需求。SOA架構(gòu)常見的設(shè)計原則1)明確定義的接口。服務(wù)接口由Web服務(wù)描述語言(WebServicesDescriptionLanguage,WSDL)定義,WSDL用于指明服務(wù)的公共接口與其內(nèi)部專用實(shí)現(xiàn)之間的界限,WS-Policy用于描述服務(wù)協(xié)議,而XML模式用于定義交換的消息(即服務(wù)的公共數(shù)據(jù))的格式。用戶依賴于服務(wù)協(xié)議來調(diào)用服務(wù),因此服務(wù)定義必須長期穩(wěn)定。服務(wù)一旦發(fā)布,就不應(yīng)隨意更改。服務(wù)定義應(yīng)盡可能清晰,用戶不應(yīng)在服務(wù)內(nèi)部看到私有數(shù)據(jù)。2)自包含和模塊化。服務(wù)封裝了那些在業(yè)務(wù)上穩(wěn)定、重復(fù)出現(xiàn)的活動和組件,實(shí)現(xiàn)該服務(wù)的功能實(shí)體是完全獨(dú)立的,可以獨(dú)立執(zhí)行部署、版本控制、自我管理和恢復(fù)。SOA架構(gòu)常見的設(shè)計原則3)粗粒度。服務(wù)數(shù)量不應(yīng)太多,依靠消息交互而不是遠(yuǎn)程過程調(diào)用。4)服務(wù)之間的松耦合性。服務(wù)使用者看到的是服務(wù)的接口,其位置、實(shí)現(xiàn)技術(shù)、當(dāng)前狀態(tài)、服務(wù)私有數(shù)據(jù)等對服務(wù)使用者是不可見的。5)重用能力。服務(wù)應(yīng)該是可以重用的。6)互操作性、兼容和策略聲明。為了確保服務(wù)合約的全面和明確,策略成為一個越來越重要的方面,這可以是與技術(shù)相關(guān)的內(nèi)容。SOA架構(gòu)的服務(wù)結(jié)構(gòu)SOA中的服務(wù)是一個清晰定義的、可以被調(diào)用的業(yè)務(wù)功能單元。一個服務(wù)的內(nèi)部結(jié)構(gòu)如圖5-8所示。

圖5-8一個服務(wù)的內(nèi)部結(jié)構(gòu)5.3.3SOA架構(gòu)的實(shí)現(xiàn)方法1.WebService:WebService是體現(xiàn)SOA思想的基本模型,由服務(wù)請求者(ServiceRequestor)、服務(wù)提供者(ServiceProvider)和服務(wù)注冊中心(ServiceBroker)等構(gòu)成,通過Point-to-Point連接交換并呼叫服務(wù)信息。Web服務(wù)是實(shí)現(xiàn)SOA中服務(wù)的最主要手段。Web服務(wù)的最基本協(xié)議包括UDDI、WSDL和SOAP,通過它們可以提供直接和簡單的WebService支持。

WebService服務(wù)注冊表5.3.3SOA架構(gòu)的實(shí)現(xiàn)方法在WebService的解決方案中,一共有三種工作角色,其中服務(wù)提供者和服務(wù)請求者是必需的,服務(wù)注冊中心是一個可選的角色。它們之間的交互和操作構(gòu)成了SOA的一種實(shí)現(xiàn)架構(gòu),如圖5-9所示。圖5-9基本的WebService協(xié)議WebService的工作角色1)服務(wù)提供者。該角色負(fù)責(zé)定義和實(shí)施服務(wù)。它使用WSDL以詳細(xì)、準(zhǔn)確和標(biāo)準(zhǔn)化的方式描述服務(wù),并將描述發(fā)布到服務(wù)注冊表,以供服務(wù)請求者查找和綁定。2)服務(wù)請求者。服務(wù)請求者是服務(wù)的使用者,雖然服務(wù)面向的是程序,但程序的最終使用者仍然是用戶。服務(wù)請求者是服務(wù)的用戶。3)服務(wù)注冊中心。服務(wù)注冊中心連接了服務(wù)提供者和服務(wù)請求者。WebService的操作1)發(fā)布。服務(wù)提供者需要發(fā)布服務(wù)描述,以便服務(wù)請求者可以查找想要的服務(wù),從而使用戶能夠直接訪問服務(wù)。2)查找。在查找操作中,服務(wù)請求者直接檢索服務(wù)描述或在服務(wù)注冊表中查詢所需的服務(wù)類型。3)綁定。在綁定操作中,服務(wù)請求者使用服務(wù)描述中的綁定詳細(xì)信息來定位、聯(lián)系和調(diào)用服務(wù),從而在運(yùn)行時與服務(wù)進(jìn)行交互。5.3.3SOA架構(gòu)的實(shí)現(xiàn)方法2.服務(wù)注冊表:服務(wù)注冊表(serviceregistry)主要在SOA設(shè)計時使用。它提供一個策略執(zhí)行點(diǎn)(PolicyEnforcementPoint,PEP),服務(wù)注冊表代表一個數(shù)據(jù)庫集群,其中包含平臺中部署的可用微服務(wù)的數(shù)據(jù)模型,可以動態(tài)創(chuàng)建和銷毀新實(shí)例。服務(wù)注冊表分為服務(wù)注冊、服務(wù)位置、服務(wù)綁定。

5.3.4案例簡析:基于SOA的報銷系統(tǒng)采用SOA的業(yè)務(wù)流程管理幫助公司處理員工的采購報銷問題。

5.4基于構(gòu)件的軟件體系結(jié)構(gòu)構(gòu)件(Component)是面向軟件體系架構(gòu)的可復(fù)用軟件模塊。構(gòu)件是一個接近獨(dú)立的、可被替換的軟件單元,它實(shí)現(xiàn)一個已定義好的體系結(jié)構(gòu)上下文中的一個明確的功能,同時遵循并提供一組接口的物理實(shí)現(xiàn)。構(gòu)件具有獨(dú)立于特定的程序設(shè)計語言和應(yīng)用系統(tǒng)、可重用性高和自包含的特征。基于構(gòu)件的軟件開發(fā)過程通過重用已有的軟件構(gòu)件,使得軟件開發(fā)者可以像搭積木一樣快速構(gòu)造應(yīng)用程序。這樣不僅可以縮短開發(fā)周期、減少經(jīng)費(fèi)開支和提高軟件開發(fā)效率,并且可以在重用已有開發(fā)成果的基礎(chǔ)上得到高質(zhì)量的軟件產(chǎn)品。5.4.1概念及特點(diǎn)(1)自描述:構(gòu)件必須能夠識別其屬性、存取方法和事件。這些信息可以使開發(fā)環(huán)境將第三方軟件構(gòu)件無縫地結(jié)合起來;(2)可定制:可由用戶定制構(gòu)件的特性值,自行配置構(gòu)件;(3)可集成:構(gòu)件必須可以被編程語言直接控制,開發(fā)人員可將構(gòu)件并入開發(fā)環(huán)境,與新的應(yīng)用相連;(4)連接機(jī)制:構(gòu)件必須能產(chǎn)生具體事件或者具有讓程序員從語義上實(shí)現(xiàn)相互連接的其他機(jī)制,這意味著程序員可以很容易地向按鈕添加代碼,實(shí)現(xiàn)點(diǎn)擊按鈕就可以影響其他構(gòu)件的動作。5.4.2構(gòu)件的制作與組裝構(gòu)件的獲取途徑構(gòu)件的開發(fā)過程構(gòu)件的分類及組裝5.4.2構(gòu)件的制作與組裝(1)從現(xiàn)有構(gòu)件中獲得符合要求的構(gòu)件,直接使用或進(jìn)行適應(yīng)性修改,得到可復(fù)用的構(gòu)件。(2)通過相應(yīng)的工程,將具有潛在復(fù)用價值的構(gòu)件提取出來,得到可復(fù)用的構(gòu)件。(3)從市場上購買現(xiàn)成的商業(yè)構(gòu)件。(4)開發(fā)新的符合要求的構(gòu)件。1.構(gòu)件的獲取途徑5.4.2構(gòu)件的制作與組裝(1)構(gòu)件開發(fā)者根據(jù)應(yīng)用需要確定構(gòu)件對外提供的服務(wù),并建立接口規(guī)范。(2)編寫構(gòu)件的功能實(shí)現(xiàn)代碼。(3)測試服務(wù)是否正確實(shí)現(xiàn),如發(fā)現(xiàn)錯誤立即修改。(4)發(fā)布構(gòu)件,并提供功能描述、接口規(guī)范和可靠性信息,其中接口規(guī)范和可靠性信息多用數(shù)據(jù)表形式給出,用于描述接口中參數(shù)的子域劃分和對應(yīng)子域上通過的測試信息,即可靠性信息。2.構(gòu)件的開發(fā)過程5.4.2構(gòu)件的制作與組裝構(gòu)件可以分為原子構(gòu)件和復(fù)合構(gòu)件。3.構(gòu)件的分類及組裝原子構(gòu)件是不可再分的構(gòu)件,底部由實(shí)現(xiàn)該構(gòu)件的類組成,這種構(gòu)件的劃分提供了體系結(jié)構(gòu)的分層表示能力,有助于簡化體系結(jié)構(gòu)的設(shè)計。復(fù)合構(gòu)件是由一組關(guān)系緊密、相互協(xié)作的成員構(gòu)件連接而成的。復(fù)合構(gòu)件并沒有直接對應(yīng)的實(shí)現(xiàn)體,其定義部分除了包含對外提供的功能和要求的功能以外,還包括了其內(nèi)部成員構(gòu)件的接口,以及它們之間的關(guān)系。5.4.2構(gòu)件的制作與組裝構(gòu)件組裝的目標(biāo)是利用現(xiàn)有構(gòu)件或新開發(fā)的構(gòu)件組裝成新的系統(tǒng)。因為系統(tǒng)也可以看作一個復(fù)合構(gòu)件,而復(fù)合構(gòu)件是可以被逐層分解的,因此,一個典型的復(fù)合構(gòu)件呈現(xiàn)為樹型結(jié)構(gòu)。在復(fù)合構(gòu)件的規(guī)約中,構(gòu)件對外提供的功能和要求的外部功能分別被映射到成員構(gòu)件相應(yīng)的功能上。這就意味著,我們可以把復(fù)合構(gòu)件之間的連接信息逐層進(jìn)行消解,最終歸結(jié)為原子構(gòu)件之間的連接,然后,把原子構(gòu)件在接口處的連接映射為構(gòu)件在實(shí)現(xiàn)體中的連接,不應(yīng)對原子構(gòu)件本身對應(yīng)的實(shí)現(xiàn)體作任何改動,最終生成的構(gòu)件是一個帶有實(shí)現(xiàn)體的多對象原子構(gòu)件。構(gòu)件組裝5.5并發(fā)和實(shí)時軟件體系結(jié)構(gòu)5.5.1并發(fā)的產(chǎn)生背景及原因早期的計算機(jī)沒有操作系統(tǒng),它們從頭到尾執(zhí)行一個程序,并且這個程序能夠訪問計算機(jī)中的所有資源,因此浪費(fèi)了珍貴的計算資源。操作系統(tǒng)的出現(xiàn)和發(fā)展使得計算機(jī)能同時運(yùn)行多個程序,每個程序都在自己獨(dú)有的進(jìn)程中運(yùn)行,并且操作系統(tǒng)為各個獨(dú)立執(zhí)行的進(jìn)程分配資源,這樣提高了計算機(jī)資源的利用率。5.5并發(fā)和實(shí)時軟件體系結(jié)構(gòu)促使操作系統(tǒng)支持多程序的同時執(zhí)行的因素(1)資源利用。允許CPU在當(dāng)前程序出現(xiàn)等待的時候(如等待進(jìn)行輸入、輸出操作)去執(zhí)行其他程序,從而提高了計算機(jī)資源的利用率。(2)公平。讓一些程序能以平等的方式共享計算機(jī)資源,我們可以通過更好的時間片方式來實(shí)現(xiàn)這一目標(biāo)。(3)方便。當(dāng)需要程序執(zhí)行很多任務(wù)時,多任務(wù)程序可以更有效地分配任務(wù)給子程序執(zhí)行,子程序之間也能更好地相互通信,后期修改維護(hù)也很方便。5.5并發(fā)和實(shí)時軟件體系結(jié)構(gòu)線程可被稱為輕量級進(jìn)程。在大多數(shù)現(xiàn)代操作系統(tǒng)中,線程是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。如果沒有明確的協(xié)同機(jī)制,那么線程將彼此互不干涉、獨(dú)立運(yùn)行。由于進(jìn)程中的線程共享同一個內(nèi)存地址空間,因此同一進(jìn)程中的線程都能訪問相同的變量,因此需要一種新的共享機(jī)制——并發(fā)。并發(fā)是涉及一系列策略和機(jī)制的術(shù)語,這些策略和機(jī)制能使一個或多個線程或者進(jìn)程同時執(zhí)行它們的服務(wù)處理任務(wù)。許多網(wǎng)絡(luò)化應(yīng)用程序,尤其是服務(wù)器,必須并發(fā)地處理從多個客戶機(jī)來的請求。5.5并發(fā)和實(shí)時軟件體系結(jié)構(gòu)以下情景需要考慮并發(fā):為了充分發(fā)揮多處理架構(gòu)的強(qiáng)大運(yùn)算能力,需要通過并行來實(shí)現(xiàn)并發(fā)。為了平衡CPU運(yùn)算速度和I/O速度的巨大差異。開發(fā)并維護(hù)一個程序界面,在得到用戶的輸入時執(zhí)行相應(yīng)的操作。有些問題必須通過并發(fā)來建模,例如游戲、人工智能以及科學(xué)模擬計算等。在與并發(fā)性息息相關(guān)的環(huán)境中編寫程序。例如在Web服務(wù)或云計算服務(wù)中開發(fā)服務(wù)器端組件等。5.5.2并發(fā)和并行目前主流的并發(fā)模型是多進(jìn)程與多線程?,F(xiàn)代操作系統(tǒng)早已支持多進(jìn)程和多線程。進(jìn)程就是一個執(zhí)行中的程序?qū)嵗?,操作系統(tǒng)管理所有進(jìn)程的執(zhí)行并且以進(jìn)程為單位分配存儲空間。一個進(jìn)程還可以擁有多個并發(fā)的執(zhí)行流程,這些并發(fā)的執(zhí)行流程是可以獲得CPU調(diào)度和分派的基本執(zhí)行單元,也就是線程。5.5.2并發(fā)和并行并發(fā)和并行的區(qū)別與聯(lián)系:5.5.2并發(fā)和并行在操作系統(tǒng)中,并發(fā)是指一個時間段中有多個程序都處于已啟動運(yùn)行到運(yùn)行完畢之間,且這些程序都是在同一個處理機(jī)上運(yùn)行;并行是指當(dāng)系統(tǒng)有多個CPU時,不同CPU執(zhí)行不同的進(jìn)程,不同進(jìn)程可以同時進(jìn)行且互不搶占CPU資源。并發(fā)是兩隊人交替使用一臺電腦,并行是兩隊人同時使用兩臺電腦。并發(fā)系統(tǒng)指的是該系統(tǒng)支持兩個及以上動作同時存在。并行系統(tǒng)指的是該系統(tǒng)支持兩個及以上動作同時執(zhí)行。二者的差異在于“存在”和“執(zhí)行”。5.5.2并發(fā)和并行請同學(xué)們好好認(rèn)識感受并發(fā)系統(tǒng)和并行系統(tǒng)。5.5.2并發(fā)和并行在并發(fā)程序中可以同時擁有兩個或者多個線程。這意味著,如果程序在單核處理器上運(yùn)行,那么這兩個線程將交替地?fù)Q入或者換出內(nèi)存。這些線程是同時“存在”的——每個線程都處于執(zhí)行過程中的某個狀態(tài)。如果程序能夠并行執(zhí)行,那么就一定是運(yùn)行在多核處理器上。此時,程序中的每個線程都將分配到一個獨(dú)立的處理器核上,因此可以同時運(yùn)行。5.5.2并發(fā)和并行通過前面的分析,請同學(xué)們思考,并行和并發(fā)的聯(lián)系?“并發(fā)”包含“并行”。換句話說,若一個擁有多個線程或者進(jìn)程的并發(fā)程序不能經(jīng)由多核處理器執(zhí)行,那么該程序就不能以并行的方式運(yùn)行。5.5.2并發(fā)和并行什么是高并發(fā)?高并發(fā)是互聯(lián)網(wǎng)分布式系統(tǒng)架構(gòu)設(shè)計中需要考慮的重要因素之一,指通過嚴(yán)謹(jǐn)?shù)脑O(shè)計來保證系統(tǒng)能夠同時并行處理很多的請求。也就是說系統(tǒng)能夠在某一時間段內(nèi)提供很多請求,但是不會影響系統(tǒng)的性能。高并發(fā)常用的相關(guān)指標(biāo)(1)每秒響應(yīng)時間:系統(tǒng)對請求作出響應(yīng)的時間。由于系統(tǒng)不同功能的響應(yīng)時間不盡相同,因此,在討論一個系統(tǒng)的響應(yīng)時間時,通常是指該系統(tǒng)所有功能的平均時間或者所有功能的最大響應(yīng)時間。(2)吞吐量(TPS):系統(tǒng)在單位時間內(nèi)處理請求的數(shù)量。吞吐量是一個比較通用的指標(biāo),兩個具有不同用戶數(shù)和用戶使用模式的系統(tǒng),如果其最大吞吐量基本一致,則可以判斷兩個系統(tǒng)的處理能力基本一致。高并發(fā)常用的相關(guān)指標(biāo)(3)并發(fā)用戶數(shù):系統(tǒng)可以同時承載的正常使用系統(tǒng)功能的用戶的數(shù)量。例如,一個即時通信系統(tǒng)的同時在線量一定程度上代表了系統(tǒng)的并發(fā)用戶數(shù)。與吞吐量相比,并發(fā)用戶數(shù)是一個更直觀但也更籠統(tǒng)的性能指標(biāo)。實(shí)際上,并發(fā)用戶數(shù)是一個非常不準(zhǔn)確的指標(biāo),因為用戶不同的使用模式會導(dǎo)致不同用戶在單位時間發(fā)出不同數(shù)量的請求。(4)每秒查詢數(shù)(QPS)。QPS是對一個特定的查詢服務(wù)器在規(guī)定時間內(nèi)所處理流量多少的衡量標(biāo)準(zhǔn)。5.5.2并發(fā)和并行提升系統(tǒng)并發(fā)能力的途徑主要有兩種:橫向擴(kuò)展和縱向擴(kuò)展。橫向擴(kuò)展指通過將多個低性能的機(jī)器組成一個分布式集群來提升系統(tǒng)并發(fā)能力??v向擴(kuò)展指通過購買性能更好的硬件提升系統(tǒng)的并發(fā)處理能力(提升單機(jī)硬件、架構(gòu)性能)。5.5.3實(shí)時軟件體系結(jié)構(gòu)1.實(shí)時系統(tǒng)與實(shí)時軟件體系結(jié)構(gòu)實(shí)時軟件體系結(jié)構(gòu)是指必須同時處理多個輸入事件流的并發(fā)式體系結(jié)構(gòu),它們通常都是狀態(tài)相關(guān)的,并且具有集中的或非集中的控制方式。設(shè)計實(shí)時軟件體系結(jié)構(gòu)的關(guān)鍵步驟是設(shè)計并發(fā)任務(wù)。并發(fā)任務(wù)表示順序性程序或并發(fā)程序的順序性組件執(zhí)行過程的任務(wù)。每個任務(wù)都要處理一個順序性的執(zhí)行線程,任務(wù)內(nèi)部沒有并發(fā)執(zhí)行過程。5.5.3實(shí)時軟件體系結(jié)構(gòu)實(shí)時系統(tǒng)是帶有時間約束的并發(fā)系統(tǒng),這是由于其具有并發(fā)處理的能力。實(shí)時系統(tǒng)通常是指包括了實(shí)時操作系統(tǒng)、實(shí)時I/O子系統(tǒng)和實(shí)時應(yīng)用系統(tǒng)等的整個系統(tǒng),擁有與各種傳感器和執(zhí)行器相交互的專用設(shè)備驅(qū)動程序。5.5.3實(shí)時軟件體系結(jié)構(gòu)由于實(shí)時系統(tǒng)需要接受并處理許多輸入事件流并產(chǎn)生相應(yīng)的輸出流,所以實(shí)時系統(tǒng)一般十分復(fù)雜。雖然事件流受實(shí)時系統(tǒng)時間約束的限制,但是它們何時到達(dá)、到達(dá)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論