簡介
大型的綜合應用系統大都是由許多子系統組成的。一般說來,這些子系統能夠獨立運行, 有自己專門的服務任務,並可能需要部署在不同的計算機上工作。 應該說,組成系統的子系統具有一定的獨立性,但子系統之間又有着聯系。例如,有共同的數據源,相互之間需要通信,並可能需要協同工作。系統構架設計的任務就是根據需求規格 中的需求基本框架,把組成系統的這些子系統、子系統之間的關系、它們之間需要的數據通信 等確定下來,並把它們工作時所需要的設備環境、網絡環境和數據環境等也一同確定下來,由 此對系統作出一個合理的、符合應用需要的整體部署。 需求分析中的需求框架是基於用戶應用域建立的,概要設計時可以通過需求框架來映射系 統構架。例如,可以利用需求分析中的高層數據流圖對系統基本工作流程的描述,來映射系統的基本結構,使得需求分析中對系統的邏輯描述,轉換為概要設計中對系統的物理描述。 一般情況下,系統構架設計可以按照以下步驟進行。
(1)定義子系統。根據需求分析中有關系統的業務划分情況,將系統分解成諸多具有獨立任務的子系統。
(2)定義子系統外部接口。分析子系統之間的通信與協作,以獲得對子系統外部接口的 定義。
(3)定義系統物理構架。根據系統的整體邏輯結構、技術特點、應用特點以及系統開發的 資金投入情況等,選擇合適的系統物理構架,包括:硬件設備、軟件環境、網絡結構和數據庫結構,並將子系統按照所選的物理構架進行合理部署與優化。 下面將介紹幾種典型的系統構架。需要注意的是,任何一種結構都會有優點與缺點,盡管 是一些現在看來已經過時的結構也有它存在的現實價值。
集中式結構
集中式結構是最傳統的系統構架,系統由一台計算機主機和多個終端設備組成,其結構如下圖 所示。 集中式結構的特點是系統中的全部軟件資源都被集中安裝在這一台主機上,包括:操作系統、數據庫系統、應用系統和資源文件等。系統的智能處理器也被集中在主機上。用戶則是通 過和主機連接的基本無智能的終端設備與系統進行通信。由於所有計算任務都通過主機完成,因此集中式結構對計算機性能有比較高的要求。早期應用中一般使用小型以上計算機提供比較 強大的主機計算支持,操作系統則一般是 Unix 系統,能夠向外提供多用戶服務。
應該說,集中式結構具有非常好的工作穩定性。另外,由於集中式結構是直接通過終端接 口實現多用戶通信,因此系統還具有較高的安全保密特性。集中式結構優點是高穩定性和高安 全性。但集中式結構有較苛刻的設備要求,系統建設費用、運行費用都比較高,而且系統靈活 性不夠好,系統結構不便於擴充。
客戶機/服務器結構(C/S)
客戶機/服務器結構是一種分布與集中相互結合的結構,系統依靠網絡被分布在許多台不同的計算機上,但通過其中的服務器計算機提供集中式服務。 圖 5-3 所示的是客戶機/服務器結構的典型應用。這是一個提供視頻信息和圖片信息的多用戶超文本應用系統,系統中有多個服務器,能夠分別提供不同的信息服務。其中,視頻服務器提供視頻數據服務,傳送的數據需要快速同步,但分辨率相對較低;圖片服務器提供圖片數據服務,數據需要以高分辨率發送;目錄服務器則提供目錄查詢服務,能夠支持各種查詢,並 能夠與超文本信息進行鏈接。 與集中式結構中的無智能終端不同,客戶機/服務器結構中的客戶機是具有智能的,需要 安裝客戶程序,並需要通過客戶程序訪問服務器。例如下圖中的諸多客戶機,它們可以通過一個用戶界面客戶程序對服務器進行訪問,並可以通過這個用戶界面程序顯示從服務器返回的 圖片或視頻信息。 在客戶機/服務器結構中,客戶機是主動的,它主動地向服務器提出服務請求;而服務器 則是被動的,它被動地接受來自客戶機的請求。一般說來,客戶機在向服務器提出服務請求之 前,需要事先知道服務器的地址與服務;但服務器卻不需要事先知道客戶機的地址,而是根據 客戶機主動提供的地址向客戶機提供相應的服務。
客戶機/服務器結構的優越性是結構靈活、便於系統逐步擴充。例如上面的多用戶超文本 應用系統,也許用戶最初只需要提供圖片信息服務,因此系統初期開發時可以只創建圖片服務 器,只是當用戶需要提供視頻信息服務時,才創建視頻服務器。顯然,這有利於應用系統的分 階段實現與逐步擴充。另外,由於客戶機/服務器中服務器可以采用高性能微機配置,因此其建 設成本、運行費用等也明顯低於基於小型機的集中式結構。 需要注意的是,客戶機/服務器結構是一種邏輯結構,客戶機或服務器都只是角色概念。 因此可以將客戶軟件和服務軟件安裝在一台計算機上,而使這台計算機既擔任客戶機角色,又擔任服務器角色。當然,也可以在一台計算機上安裝多個服務軟件,而使這台計算機承擔多個 服務器角色,例如,它可以既是圖片服務器,又是視頻服務器。
多層客戶機/服務器結構
客戶機/服務器結構已被廣泛應用基於數據庫的信息服務領域,並演變出了多層客戶機/服 務器結構。 下圖所示是一個有關信息管理應用的邏輯結構。這是一個三層邏輯結構,其中的表示層 是指對用戶的信息服務;應用層是指對數據的應用邏輯加工; 數據層是指系統中的數據庫管理。在集中式系統中,以上各個不同層面的元素都被部署在一台主機上,這時或許沒有必要在它們之間清楚地划分邊界。但值得注意的是,當采用客戶機/ 服務器結構時,這些元素卻有可能要被分布到不同的計算機上 去,因此必須在它們之間給出一個清楚的邊界。
兩層結構
兩層客戶機/服務器結構是將信息表示與應用邏輯處理都 放在了客戶機上,而服務器只需要管理數據庫事務,其結構如下圖 所示。這時的客戶機一般被稱為“胖客戶機”。
兩層結構的優點是結構簡單,技術上比較容易實現。而且應用軟件基本上是在客戶端工作, 因此非常方便客戶端數據的計算與表現,能夠有 效保證系統的工作性能。 兩層結構的缺陷是在管理與維護上存在困 難。這時的客戶端承擔了信息表示與應用計算雙 重任務,客戶端程序復雜,並且被分散在許多不 同的客戶計算機上。除非應用軟件的功能非常穩 定或客戶端口很少,否則當應用軟件由於用戶應用規則的變化,而不得不對其功能進行改造時, 系統中數目龐大的客戶機群,將會使系統變更顯得非常麻煩,需要很大的系統變更開銷。
三層結構
三層結構是鑒於兩層客戶機/服務器結構在管理與維護上存在的困難而專門提出的,這就 是使“胖客戶機”減肥,使它盡量簡單,變成“瘦客戶機”。更具體地說,就是將“胖客戶機” 中比較復雜,並且容易發生變化的應用邏輯部分提取出來,將它放到一個專門的“應用服務器” 上,由此產生的結構如下圖所示。
顯然,三層結構使信息表示、應用邏輯處理和數據庫管理被自然地分成了三個獨立的部分。 其中,應用邏輯處理是應用系統中的最易發生需求改變的部分,被放到了應用服務器上。與兩層結構比較,三層結構給系統維護帶來了很大的便利,當用戶應用規則發生變化時,需要改變的不是數目龐大客戶端,而是一個或少數幾個應用服務器。但是,三層結構使實現軟件的技術難度加大、開發周期延長,並且對服務器設備也有更高的要求。 需要指出的是,三層客戶機/服務器結構也是邏輯結構,因此一個單一的服務器計算機可以既是應用服務器,又是數據庫服務器。然而許多情況下,為了使系統具有更高的性能指標, 或使系統具有更好的穩定性,系統中大都分別設置有專門的應用服務器和數據庫服務器。而在一些實際開發中,為了使應用服務器能夠承擔來自於許多客戶機的計算請求,還往往需要根據軟件系統的計算負荷狀態,對應用服務器進行專門的配置設計,例如,按事務進行任務分工, 並在系統中設置多台專門應用服務器,它們分別完成一些特定的服務請求任務。
B/S結構
B/S 結構是基於 Web 技術與客戶機/服務器結構的結合而提出來的一種多層結構,其中的 B 是指 Web 瀏覽器(Browse),S 是指應用服務器與數據服務器(Server)。目前,這種結構已被 廣泛應用於網絡商務系統之中,例如網上銀行、網上商店等。其結構圖如下圖 所示。 B/S 結構將信息表示集中到了專門的“Web 服務器”上。因此,與三層客戶機/服務器結構 比較,B/S 結構多了一層服務器。應該說,B/S 結構使客戶端程序更加簡化。這時的客戶機上已 經不需要專門的應用程序了,只要有一個通用的 Web 瀏覽器(例如,Microsoft Internet Explorer),就可以實現客戶端數據的應用。
B/S 結構的優點是不需要對客戶機進行專門的維護(客戶機上沒有專門的應用程序),特別 適合於客戶機位置不固定或需要依靠互聯網進行數據交換的應用系統。缺點是最終用戶信息需 要通過 Web 服務器獲取,並通過網絡傳送到客戶機上,因此系統的數據傳輸速度以及系統的穩定性,都將明顯低於三層客戶機/服務器結構。 如同其他客戶機/服務器結構一樣,B/S 結構也是邏輯結構,因此一個單一的服務器計算機 可以既是 Web 服務器,又是應用服務器和數據庫服務器。但如果需要使系統具有更高的性能或 更加穩定的運行狀態,那么則有必要將 Web 服務、應用處理和數據管理從物理上分離開來,設 置專門的 Web 服務器計算機、應用服務器計算機和數據庫服務器計算機。 在許多應用中,B/S 結構和三層客戶機/服務器往往被結合起來使用。例如“網上購物系統”, 其面向消費者的購物操作一般采用的是 B/S 結構,但面向購物中心工作人員的相關操作,為了 保證系統運行穩定快捷,則可能會采用三層客戶機/服務器結構。其對應的物理構架如下圖 所示。
B/S 結構的優點是不需要對客戶機進行專門的維護(客戶機上沒有專門的應用程序),特別 適合於客戶機位置不固定或需要依靠互聯網進行數據交換的應用系統。缺點是最終用戶信息需 要通過 Web 服務器獲取,並通過網絡傳送到客戶機上,因此系統的數據傳輸速度以及系統的穩 定性,都將明顯低於三層客戶機/服務器結構。 如同其他客戶機/服務器結構一樣,B/S 結構也是邏輯結構,因此一個單一的服務器計算機 可以既是 Web 服務器,又是應用服務器和數據庫服務器。但如果需要使系統具有更高的性能或 更加穩定的運行狀態,那么則有必要將 Web 服務、應用處理和數據管理從物理上分離開來,設 置專門的 Web 服務器計算機、應用服務器計算機和數據庫服務器計算機。 在許多應用中,B/S 結構和三層客戶機/服務器往往被結合起來使用。例如“網上購物系統”, 其面向消費者的購物操作一般采用的是 B/S 結構,但面向購物中心工作人員的相關操作,為了 保證系統運行穩定快捷,則可能會采用三層客戶機/服務器結構。其對應的物理構架如上圖 所示。
組件對象分布式結構
組件是一個對象包。組件對象分布式結構就是通過組件而使軟件系統中的組件對象被分布到網絡上的多台計算機上。組件對象具有一些公共接口,能夠向外提供服務,不同組件的對象 之間可以通過公共接口相互通信和協同工作。 應該說,傳統的客戶機/服務器結構是一種不對稱的分布式結構,其客戶機和服務器具有不同的地位。客戶機能夠接受來自服務器的服務,但不能接受其他客戶機的服務;服務器能夠 扮演客戶機的角色,由此接受來自其他服務器的服務,但它不能請求來自客戶機的服務。 然而,組件對象分布式結構則是一種比較對稱的結構,在這種結構中,已經沒有了客戶機與服務器之間的界限,這些對象既可充當服務器,也可充當客戶機,其角色只是決定於它是在 提供服務還是在請求服務。
組件對象分布式結構是基於對象中間件建立的。主要用於對象分布式計算的中間件有:
• CORBA(通用對象請求代理模型):由對象管理組織(OMG)定義,提供了一組通用的與 機器無關的分布式對象計算方法。可用在 Unix、Linux 或 Windows 上。
• DCOM(分布式組件對象模型):由微軟公司定義,主要用在微軟公司的操作系統上。 可以把對象中間件看成是能夠在其上插拔組件的軟件總線。這就像硬件總線允許不同的接 口卡插於其上以支持硬件設備之間的通信一樣,對象中間件作為軟件總線,也允許在其上添加 或移走組件對象,或進行組件對象之間的相互通信。其邏輯結構如下圖所示。
應該說,組件對象分布式結構是一個開放的體系構造,它不僅允許新的組件對象根據需要 增加進來,而且還允許使用不同語言編寫的對象。現在,組件對象分布式結構已經成為構造軟 件系統的一種基本模式,諸多運行在互聯網上的遠程服務系統,它們即是按照這種結構構造的。
在應用系統中采用組件對象分布式結構時,可依照以下步驟來進行系統結構設計:
(1)按照系統功能服務對系統進行邏輯分塊,確定系統的邏輯構造。
(2)以系統邏輯構造為依據,設計系統的分布式組件對象。
(3)以組件之間的通信與協作為依據,對組件進行物理部署。
組件對象分布式結構具有靈活的構架,系統伸縮性好,能夠給系統的功能調整與擴充帶來 便利。但是,采用完全分布的組件對象結構,其技術難度太大,內部結構也較復雜。相比之下, 客戶機/服務器結構是一種更加容易理解的結構,並與現實的組織機構、業務過程具有一致性。 因此,在許多實際應用中,往往將組件對象分布式結構與客戶機/服務器結構結合起來,其中組 件對象分布式結構被作為一種實現技術嵌入到客戶機/服務器系統之中。這種構架的特點是:系 統先按照客戶機/服務器結構進行邏輯構造;然后無論是客戶機還是服務器,都按照組件對象分 布式結構進行內部構造設計,它們都由組件組成,並都需要通過對象中間件實現通信。顯然, 這樣的系統將更加具有柔性,系統的變更也將會變得更加容易。例如,一個二層客戶機/服務器 結構,只需要對其組件對象進行重新部署,就可以將其改造成為三層甚至多層客戶機/服務器 結構。 實際上,分布式組件對象技術能夠給應用服務器的創建帶來更好的可伸縮性,由諸多組件構造的應用服務器可以更加自由地進行物理部署。例如一個供銷管理系統,假設其包括供應商 聯系、庫存控制、客戶聯系、貨物訂購等業務內容,並且這些業務都由一個供銷部門負責,則 系統構造可按以上業務創建組件,並將這些組件部署在一台應用服務器上,如下圖 所示。
但假如業務流程發生了變化,例如,由於業務量擴大,該供銷部門需要拆分為供應部、銷售部兩個部門時,考慮到業務歸口與服務器負荷的影響,上面的一台應用服務器也需要改變為兩台應用服務器,分別承擔供應與銷售的事務處理。顯然,系統所采用的組件對象分布式結構 能夠很方便地適應這種業務需求的變更,需要進行的系統改造只不過是將用於業務處理的組件 重新進行部署或安裝,如下圖 所示。