2011年軟考系統(tǒng)架構(gòu)設(shè)計師學(xué)習(xí)筆記第十章

字號:

2011年軟考系統(tǒng)架構(gòu)設(shè)計師學(xué)習(xí)筆記第十章

    構(gòu)建平臺與典型架構(gòu)
    10.1 OMG 方式
    對象管理組 OMG,通過規(guī)范化對象 開放市場的 所有層次上的互操作性。
    10.1.1 對象請求代理
    CORBA 的主要目標(biāo)就是使用不同語言、不同實現(xiàn)、不同平臺 能進行交互。
    CORBA 三個基本部分:一套調(diào)用接口、對象請求代理 ORB、一套對象適配器。
    10.1.2 公共對象服務(wù)規(guī)范
    兩類服務(wù):一類服務(wù)應(yīng)用于企業(yè)計算系統(tǒng)。一類服務(wù)應(yīng)用于細粒度的對象操作,但目前這些服務(wù)的實用價值較差。
    1、支持企業(yè)分布式計算的服務(wù)
    1.命名服務(wù)、交易器服務(wù)
    命名服務(wù) 允許 任意地給對象賦予一個名字,這個名字在其所屬的命名語境中是的。
    命名語境所形成的層次結(jié)構(gòu),使得所有的名字形成名字樹。
    交易器服務(wù) 允許給對象 賦予一個復(fù)雜的描述,從而允許客戶基于該描述來定位所需的對象。
    搜尋結(jié)果往往是 滿足查詢條件的 一組對象列表。
    2.事件服務(wù)、通告服務(wù)
    事件服務(wù) 允許定義那些 從 時間生產(chǎn)者 被 發(fā)送到時間消費者 的事件對象。
    信息只能從生產(chǎn)者流向消費者,事件必須通過事件通道傳播,事件可以具有類型,而通道可以根據(jù)類型過濾事件。
    事件通道支持“推”“拉”兩種方式 的事件通告模型。
    通告服務(wù)為事件服務(wù)增加了幾個重要的特征——服務(wù)質(zhì)量 QoS 規(guī)范和管理。
    3.對象事務(wù)服務(wù)
    對象事務(wù)服務(wù)OTS,是建立分布式應(yīng)用最重要的服務(wù)之一。
    OTS 實現(xiàn)必須支持平坦事務(wù),而嵌套事務(wù)是可選的。
    在基于構(gòu)件的系統(tǒng)中,嵌套事務(wù)似乎不可避免。
    平坦事務(wù)在構(gòu)件系統(tǒng)中的價值有限,實際上,現(xiàn)有的主流事務(wù)中間件也不支持嵌套事務(wù)。
    6.并發(fā)控制服務(wù)
    支持對象資源進行 加鎖、解鎖。
    鎖必須依賴于 事務(wù)的語境 或 其他語境才能獲得。
    讀鎖、寫鎖、升級鎖。
    讀鎖允許多個客戶同時執(zhí)行讀操作,寫鎖允許一個客戶寫操作,升級鎖是可以升級為寫鎖的讀鎖 支持互斥讀。
    每個受保護的資源都擁有一個鎖集合。鎖集合 不是事務(wù)型 就是非事務(wù)型,并可與其他鎖集合建立關(guān)聯(lián)。
    8.生命周期服務(wù)
    支持 創(chuàng)建、復(fù)制、移動、刪除 CORBA對象,及其相關(guān)的對象組。
    包含關(guān)系支持嵌套復(fù)制。
    11.外部化服務(wù)
    支持對象網(wǎng) 和 對象流 之間的雙向映射。對象網(wǎng)外部化后 再內(nèi)部化 意味著創(chuàng)建該對象網(wǎng)副本。
    外部化服務(wù)并不保證引用的完整性,僅保留同時外部化的對象之間的引用。
    對象必須實現(xiàn) Streamable 接口才能被外部化。
    12.屬性服務(wù)
    允許將任意的屬性與對象關(guān)聯(lián)起來,被關(guān)聯(lián)的對象必須實現(xiàn) ProperySet接口。
    13.對象查詢服務(wù)
    依靠屬性定位對象。
    15.時間服務(wù)
    擁有眾多異步時鐘的分布式系統(tǒng) 固有的誤差問題。
    10.1.3 CORBA 構(gòu)件模型
    CORBA 對象適配器主要的作用 就是在一個 ORB 和 真正接收調(diào)用并且返回結(jié)果的 對象之間 進行交互。
    10.2 SUN 公司的方式
    Java 構(gòu)件技術(shù)的概述
    Java中,編譯器會檢查 Applet 代碼的安全性,通過了編譯器檢查的 Applet 代碼不會帶來安全隱患。
    由于編譯得到的字節(jié)碼仍然可能被人修改,代碼在裝載時刻會被再次檢查(稱為“校驗”)。
    運行環(huán)境(Runtime Environment,RE)、軟件開發(fā)工具包(Software Development Kit,SDK)、參考實現(xiàn)。
    運行環(huán)境是 Java 虛擬機 和 必須具有的 J2SE API 的實現(xiàn)。
    10.3 Microsoft 的方式
    微軟選擇的是最簡單的路線,他沒有提出一整套標(biāo)準(zhǔn);相反,他不斷對已有的應(yīng)用和平臺基礎(chǔ)進行再工程,這就可以獲益于以前的成功技術(shù)。
    語言無關(guān)性,作為 CLR 的一條主要原則。
    10.3.1 第一個基礎(chǔ)關(guān)聯(lián)模型——COM
    COM 所定義的一個基礎(chǔ)實體是接口。在二進制層面上,一個接口被表示為指向一個接口節(jié)點的指針。
    接口節(jié)點 被指定的部分是 置于其內(nèi)部第一個域的 另一個指針,這個指針指向一個過程變量表(或者說,函數(shù)指針表)。
    每個 COM 對象都有 IUnknown接口,通常置于 COM對象圖的頂端。
    他的“真實”名字是他的 IID,即 00000000-0000-0000-C000-000000000046 為了方便,所有接口也有一個 可讀名。
    根據(jù)習(xí)慣,可讀接口名以字母I開頭。與 IID 不同,可讀接口名 并不保證是的。因此,編程中的接口引用均使用 IID。
    IUnknown 接口的首要用途是在 最抽象的情況下 標(biāo)志 COM對象,此時 COM對象 沒有任何特殊功能。
    IUnknown 接口 只提供對任何 COM接口都必須的三個強制性方法。QueryInterface、AddRef、Release,后兩個強制性方法被用來控制對象的生命周期。
    類型 HRESULT 被大多數(shù) COM接口的方法用來表示調(diào)用成功或失敗。 QueryInterface表明查詢的接口是否被支持。
    每個 COM對象都會進行引用計數(shù),引用計數(shù)變量被共享使用的情況下,COM對象 不能釋放接口節(jié)點。
    一般這樣做沒有問題,也是通常的做法。
    某些情況下占用很多資源,可以使用獨立的引用計數(shù)變量,以便節(jié)點可以盡早釋放。這種根據(jù)需要創(chuàng)建和刪除接口節(jié)點的技術(shù)有時被稱作“快速裝卸接口(Tear-Off Interface)”
    10.3.2 COM對象重用
    COM不支持任何形式的實現(xiàn)繼承。
    COM支持兩種形式的對象組裝:包含(Containment)和 聚集(Aggregation)。
    包含 是一個對象 擁有 指向另一個對象的引用。
    外部對象 只是把請求轉(zhuǎn)發(fā)給內(nèi)部對象,所謂轉(zhuǎn)發(fā) 就是調(diào)用內(nèi)部對象的方法。
    包含能重用內(nèi)含于其他構(gòu)件的實現(xiàn),是完全透明的。
    如果包含層次較深,或者被轉(zhuǎn)發(fā)的方法本身相對簡單,包含會存在性能上的問題。因此 COM定義第二類重用形式,聚集。
    聚集直接把內(nèi)部對象接口引用傳給外部對象的客戶,而不是再轉(zhuǎn)發(fā)請求。
    保持透明性是很重要的,因為外部對象的客戶無法辨別哪個特定接口是從內(nèi)部對象聚集而來的。
    10.3.3 接口和多態(tài)
    COM接口可通過(單)接口繼承 從其他 COM接口中派生。
    COM 的接口繼承與其支持的多態(tài)無關(guān)。
    接口和版本化,一旦公布,COM 接口和他的規(guī)范不允許以任何形式改變。
    既解決了語法問題,也解決了弱基類問題。
    IID 可用于標(biāo)志接口中的版本,因為接口總是通過IID被請求。
    CORBA 討論中所提及的傳遞性版本沖突問題 在COM中不會發(fā)生。
    構(gòu)件可以選擇實現(xiàn)接口的多個版本,處理方式就像處理 別的不同接口一樣。
    基于COM的系統(tǒng)能并發(fā)支持舊接口和新接口。
    10.3.4 COM對象的創(chuàng)建和COM庫
    創(chuàng)建 COM類 的實例對象時,COM需要把給定的 CLSID 映射為包含所請求的類的實際構(gòu)件。COM 支持系統(tǒng)注冊器,它類似 CORBA存儲器。
    進程內(nèi)(inprocess)服務(wù)器、本地服務(wù)器、遠程服務(wù)器。
    10.3.5 從 COM到分布式 COM(DCOM)
    代理(Proxy)對象 和 服務(wù)器 樁(Stub)對象。
    為支持 跨進程 或 跨機器 的透明通信,COM在客戶端創(chuàng)建代理對象,在服務(wù)器端創(chuàng)建樁對象。
    跨進程傳遞的 接口引用需要被映射為 對象引用。
    DCOM 將數(shù)據(jù)整理成平臺無關(guān)的網(wǎng)絡(luò)數(shù)據(jù)表達(NDR)形式。
    10.3.6 復(fù)合文檔和OLE 對象
    OLE 可被 概括為 一組預(yù)定義的 COM 接口。
    文檔容器 和 文檔服務(wù)器。
    文檔服務(wù)器 是提供某種內(nèi)容模型 和顯示、操作內(nèi)容的能力。文檔容器沒有自己的內(nèi)容,但可以接受任意文檔服務(wù)器提供的內(nèi)容成分。
    許多文檔容器也是文檔服務(wù)器,即是說,他們支持外來的成分,同時也有自己的內(nèi)容。
    10.3.7 .NET 框架
    沒有原始類型。