




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
摘要 中間件系統(tǒng)由于其在擴展性、重用性、安全性等方面的優(yōu)良特性,已經(jīng)在各 種軟件系統(tǒng)的開發(fā)中廣泛使用。傳統(tǒng)的中間件設(shè)計方法一般遵循黑箱抽象原則, 缺乏必要的開放性和靈活性。本文中的中間件系統(tǒng)基于開放實現(xiàn)的思想,采用 反射技術(shù)進行設(shè)計,使其可以根據(jù)環(huán)境和用戶需求的變化進行靈活地調(diào)整。 本文地研究工作來自于i c e t i p ( i n f o r m a t i o n c e n t e r e de n t e r p r i s et r a n s a c t i o n i n t e g r a t e dp r o c e s ss y s t e m ) 項目,它是一種基于三層模型的企業(yè)信息化的通用軟 件平臺,其服務(wù)端程序使用本文中提出的反射中間件模型進行設(shè)計。 首先,對開放實現(xiàn)理論和反射技術(shù)進行了研究。在此基礎(chǔ)之上,提出了關(guān)聯(lián) 綁定具體化反射模型和虛擬服務(wù)端的概念,該模型是整個系統(tǒng)的關(guān)鍵所在,通 過該模型實現(xiàn)系統(tǒng)的動態(tài)調(diào)整和配置:并據(jù)此反射模型,采用對象池設(shè)計方法, 設(shè)計了反射中間件系統(tǒng)模型,通過該模型實現(xiàn)系統(tǒng)結(jié)構(gòu)的重組。 然后,將該模型應(yīng)用到i c e t i p 系統(tǒng)的服務(wù)端程序設(shè)計中,設(shè)計完成了該服 務(wù)程序的中嵋:j 件系統(tǒng)框架。在該框架下,通過修改配置文件可以靈活方便地調(diào) 整系統(tǒng)的結(jié)構(gòu)和功能,而無需重新編譯系統(tǒng)。 最后,從消息排隊的角度對中間件系統(tǒng)模型進行了抽象,針對中間件服務(wù)能 力建立了多優(yōu)先級非搶占p v p l v u n 隊列模型,對中問件系統(tǒng)的排隊隊列長度、消 息等待時間、消息逗留時間、服務(wù)窗口數(shù)等指標進行了深入分析,并給出了一 套完整的對中間件服務(wù)能力進行分析與優(yōu)化的通用方法和計算公式。 關(guān)鍵詞:反射:中f b j | f 關(guān)系綁定具體化;虛擬服務(wù)端:對象池;消息排隊 服務(wù)性能 a b s t r a c t m i d d l e w a r eh a sb e e nw i d e l yu s e di nt h ee n t e r p r i s ei n f o r m a t i o ns y s t e m sb e c a u s e o fi t se x p a n s i b i l i t y , s e c u r i t ya n dh i g h l yr e u s a b l ea b i l i t y a c c o r d i n gt ot h et r a d i t i o n a l d e s i g n m e t h o d ,b l a c k b o xp r i n c i p l e ,a l l i n v i s i b l e b u ti ti sn o tf l e x i b l e e n o u g h a p p l i c a t i o n sa n de n v i r o n m e n t t h ed e t a i l so ft h es o f t w a r em o d u l ea r e t o a d a p t t ot h e c o m p l e x a n dv a r i a b l e i nt h i s t h e s i s ,a r e f l e c t i 、em i d d l e w a r em o d e li s d e s i g n e d b a s e do n o p e n i m p l e m e n ta n dr e f l e c t i o n i ti sm o r ef l e x i b l et h a nt h et r a d i t i o n a lm i d d l e w a r e t h e m i d d l e w a r ed e s i g n e di sas u b s y s t e mo fi c e t i p ( i n f o r m a t i o n c e n t e r e de n t e r p r i s e t r a n s a c t i o n i n t e g r a t e d p r o c e s s s y s t e m ) p r o j e c t ,w h i c hi s ag e n e r a t h r e e t i e r e d p l a t f o r mu s e dt oc o n s t r u c tt h ee n t e r p r i s ea p p l i c a t i o n f i r s t ,ar e l a t i o n s h i p b i n d i n g r e i f l c a t i o nr e f l e c t i o nm o d e la n dt h ec o n c e p to f v i r t u a ls e r v e ra r ep r o p o s e db a s e do nt h er e s e a r c ho ft h eo p e ni m p l e m e n tt h e o r ya n d r e f l e c t i o nt e c h n i q u e t h e ya r et h ek e yp a r t so ft h ew h o l em i d d l e w a r e b a s e do nt h i s r e f l e c t i o n m o d e l ,t h e r e f l e c t i 、em i d d l e w a r em o d e li s d e s i g n e d a n dc a nb e r e c o n f l g u r e da n da d j u s t e dd y n a m i c a l l y t h e n t h em i d d l e w a r em o d e li su s e dt oc o n s t r u c tt h ef r a m e w o r ko ft h ei c e t i p s e r v e rp r o g r a m i nt h i sf r a m e 、o r k ,t h es t r u c t u r ea n df u n c t i o no ft h es y s t e mc a nb e m o d i f i e da n d r e c o n f i g u r e dl i t h o u tr e c o m p i l i n g a tl a s t ,t h es e r v i c ep e r f o r m a n c eo ft h em i d d l e w a r ei s a n a l y z e d a i m e da tt h e a n a l y s i s a n d o p t i m i z a t i o n f o rt h es e r v i c e p e r f o r m a n c e o f m i d d l e w a r e ,t h e n o n p r e e m p t i v ep r i o r i t ym mnq u e u em o d e la n da n a l y s e so nt h eq u e u el e n g t h ,w a i t t i m e ,r e m a i nt i m ea n ds e r v i c e 、i n d o wa r ep r e s e n t e d ag e n e r a lm e t h o da n das e to f a l g o r i t h m sf o rt h ea n a l y s i sa n do p t i m i z a t i o na r ea l s op r o p o s e d , k e y w o r d s :r e f l e c t i o n ,m i d d l e x 、a r e ,r e l a t i o n s h i p b i n d i n g r e i f i c a t i o nm o d e l ; v i r t u a ls e r v e r ;o b j e c t sp o o l ;m e s s a g e q u e u e ;s e r v e rp e r f o r m a n c e 兩北丁業(yè)人學(xué)壩i 論義 基十反射的中問件砹汁 1 1 選題背景及意義 第一章概述 隨著經(jīng)濟全球化程度的不斷提高,全球范圍內(nèi)地的行業(yè)競爭日趨激烈,怎 樣減少成本并提高效率是各個行業(yè)所關(guān)注的問題。計算機的高效率和低成本, 使得人們看到了企業(yè)信息化管理的價值。在實旌企業(yè)信息化的過程中,信息化 管理軟件是其中的核心部分,功能強大、使用方便的管理軟件是企業(yè)信息化成 功的必要條件。 但是,來自不同各個廠商的硬件設(shè)備、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)和應(yīng)用模式 有著各種差異,同時應(yīng)用系統(tǒng)也越來越復(fù)雜。如何在異構(gòu)和分布式環(huán)境下,滿 足對擴展性、重用性、移植性、安全性、維護性等方面的要求,已成為企業(yè)應(yīng) 用系統(tǒng)丌發(fā)所關(guān)注的焦點。面對這樣的挑戰(zhàn),中間件系統(tǒng)應(yīng)運而生。 中間件詞出現(xiàn)于2 0 世紀9 0 年代初,泛指能夠屏蔽分布式系統(tǒng)內(nèi)在復(fù)雜性 和異構(gòu)性的軟件。它是定義于操作系統(tǒng)之上、應(yīng)用程序之下的一層軟件,可為 分布式環(huán)境下的應(yīng)用系統(tǒng)提供公共的編程抽象。中問件出現(xiàn)后,并未引起人們 的重視,直到近年來分布式處理系統(tǒng)和網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,使得中間件在國 際技術(shù)界流行起來。常見的中間件包括:數(shù)據(jù)庫中間件、消息中間件、對象中 間件等。 目前的中間件設(shè)計,無論是c o r b a 、d c o m 還是j a v ar m i 都采用了黑箱 抽象的原則,將系統(tǒng)自身實現(xiàn)隱藏起來,只向用戶呈現(xiàn)其功能性界面,這樣的 系統(tǒng)缺乏必要的靈活性和適應(yīng)能力。中間件處理的是復(fù)雜的分布式應(yīng)用問題, 常常面對不同的用戶需求甚至是變化的運行環(huán)境,如多媒體、實時嵌入式系統(tǒng)、 手持設(shè)備、移動網(wǎng)絡(luò)環(huán)境等; 由于缺乏中間件的支持,| 立用程序要么忽略實現(xiàn)這種適應(yīng)能力,要么將其與 應(yīng)用程序緊密結(jié)合而無法在其它程序中重用。實現(xiàn)這種適應(yīng)能力的關(guān)鍵是可配 置性,也就意味著打破對中間件的傳統(tǒng)認識:中間件是有一套固定服務(wù)、不可 改動的黑箱。 反射中劇件基于開放實墁的設(shè)計思想,利用反射技術(shù)的自檢查自調(diào)整的特 牡十反射的中問仲設(shè)計 性,i 日以實現(xiàn)對系統(tǒng)自身的靈活配置。 1 2 反射中間件簡介 1 9 8 7 年c m a e s 提出反射的系統(tǒng)定義:反射系統(tǒng)是存在因果相聯(lián)的自表示 ( c a u s a l l y c o n n e c t e ds e l f r e p r e s e n t a t i o n 或簡稱c c s r ) 的系統(tǒng)【6 】。時至今f 1 , 反射系統(tǒng)的研究和應(yīng)用已經(jīng)從最初的編程語言( o p e nc + + ,j a v a 等) ,擴展到窗 口系統(tǒng)、操作系統(tǒng)和分布式系統(tǒng)等領(lǐng)域。 文中討論的反射中間件( r e f l e c t i v em i d d l e w a r e ) 基于開放實現(xiàn)的思想,是 指能夠?qū)ψ陨硇袨檫M行檢查和調(diào)整的中間件系統(tǒng)。它將反射領(lǐng)域的技術(shù)應(yīng)用到 中問件平臺上,以期獲得系統(tǒng)的開放性、配置能力和重配置能力。所謂開放實 現(xiàn)是指:將實現(xiàn)丌放出來,為用戶提供有約束的訪問,以檢查和控制在抽象邊 界之下的實現(xiàn)。需要注意的一點是這種開放是遵循一定原則的。 將反射技術(shù)引入到中間,牛設(shè)計中,有如下的優(yōu)點:采用反射技術(shù)可檢查系統(tǒng) 的結(jié)構(gòu)、狀態(tài)和行為,可以使應(yīng)用程序在運行時檢查中間件所提供的服務(wù)類型, 動態(tài)的構(gòu)造調(diào)用請求:反射使系統(tǒng)可以更靈活的適應(yīng)應(yīng)用環(huán)境的變化,這種變 化往往發(fā)生在基于中間件的系統(tǒng)被部署到動態(tài)環(huán)境中,比如多媒體、移動計算 等:反射技術(shù)關(guān)注分離,將功能屬性和非功能屬性分離,一方面增強了系統(tǒng)的 可修改性,根據(jù)修改所涉及的是功能屬性還是非功能屬性,只需修改相應(yīng)分層, 另+ 方面提高了系統(tǒng)的重馬性,功能屬性和非功能屬性各自相對獨立,均可 用于其它系統(tǒng)的構(gòu)建。 將反射技術(shù)應(yīng)用到中間件系統(tǒng)的設(shè)計中的研究才剛剛起步,已經(jīng)引起了各國 研究者的關(guān)注。2 0 0 0 年4 月左紐約舉行的m i d d l e w a r e2 0 0 0 會議上,與會學(xué)者 就反射中白:j 件進行了專題i 寸j 奩:同時,人們對反射中間件的工程應(yīng)用也進行了 廣泛深入的研究。目前,匡內(nèi)外開展的反射中間件項目大致有2 4 項主要有 d 3 q l a m i c t a o 、o p e n o r b 、f l e x i n e t 、o p e n c o r b a 和r e c o m 等。 i l l i n o i s 大學(xué)的研究者最里丌始這方面的研究,d y n a m i c t a o 是與c o r b a 兼 容的反射o r b ,它支持運5 亍朝的重配置。o r e n o r b 是l a n c a s t e r 大學(xué)的研究者 為構(gòu)造丌放的多媒體平臺意i 發(fā)的通用反射結(jié)構(gòu)。f l e x i n e t 是a n s a ( 先進網(wǎng)絡(luò) 皋十反射的中問件砹計 系統(tǒng)體系) 項目的一個部分,主要用來展示面向組件的概念和有效的構(gòu)造可重 配置和可擴展的中間件平臺。o p e n c o r b a 是法國開發(fā)的一個反射的c o r b a o r b ,它通過反射語言n e o c l a s s t a l k 的元對象通訊協(xié)議( m o p ) ,利用語言的反 射機制去具體化o r b 的內(nèi)部屬性,并可改動和調(diào)整運行行為。國內(nèi)目前開展的 反射中間件項目有一項,由四川電子科技大學(xué)計算機科學(xué)與工程學(xué)院的楊思忠 博士主持的r e c o m 是一個基于反射的分布式對象中間件原型系統(tǒng)。 1 3 研究內(nèi)容和文章安排 文中所研究的是基于反射中間件的設(shè)計,它基于開放實現(xiàn)思想,利用反射技 術(shù)進行系統(tǒng)設(shè)計,并將其應(yīng)用于i c e t p ( i n f o r m a t i o n c e n t e r e d e n t e r p r i s e t r a n s a c t i o n i n t e g r a t e dp r o c e s ss y s t e m ) 系統(tǒng)的服務(wù)程序設(shè)計中。 i c e t i p 是用于企業(yè)信息化的通用軟件平臺,服務(wù)程序處理各種信息,包括: 用戶訪問管理、業(yè)務(wù)流程管理、安全控制、事務(wù)處理等。系統(tǒng)要求可以根據(jù)不 同的應(yīng)用環(huán)境和業(yè)務(wù)流程對系統(tǒng)進行功能配置。利用反射中間件自身的優(yōu)良特 性( 如前所述,包括:可檢查系統(tǒng)的結(jié)構(gòu)狀態(tài)和行為、靈活和適應(yīng)性、關(guān)注分 離) ,可以解決i c e t i p 系統(tǒng)要求的服務(wù)可配置性的要求。 文章的后續(xù)章節(jié)安排如下: 文章第二章對開放實現(xiàn)思想和反射技術(shù)作了研究,開放實現(xiàn)是反射技術(shù)的指 導(dǎo)思想,反射是開放實現(xiàn)的實現(xiàn)技術(shù);第三章介紹了中間件和反射中間件知識: 第四章對中間件的反射模型進行設(shè)計;第五章根據(jù)第四章中提出的反射模型設(shè) 計了i c e t p 中間件系統(tǒng)框架;第六章對該中間件模型的網(wǎng)絡(luò)服務(wù)性能進行分析 和討論。 皋于反射的中間件吐汁 第二章開放實現(xiàn)和反射 2 1 傳統(tǒng)設(shè)計方法 2 1 1 黑箱抽象 軟件設(shè)計一般遵循黑箱抽象( b l a c k b o xa b s t r a c t ) 的原則,也就是只向用戶 提供使用模塊功能的接口,而將功能的實現(xiàn)細節(jié)隱藏起來。這一方法在處理軟 件重用、移植和計算中已經(jīng)得到了廣泛的應(yīng)用。 工程中的最基本問題是對系統(tǒng)復(fù)雜性的控制。系統(tǒng)有時過于復(fù)雜,使我們無 法也沒有必要去了解系統(tǒng)所有細節(jié)。作為工程人員在設(shè)計實現(xiàn)一個復(fù)雜系統(tǒng)時, 一般使用抽象( a b s t r a c t ) 和分解( d e c o m p o s e ) 的方法將系統(tǒng)分成較小的模塊, 然后有選擇的去分析設(shè)計某一個模塊的細節(jié)部分。抽象和分解是一個很泛的概 念,無法明確的給出分解和抽象的方法。怎樣將系統(tǒng)分成各個部分,并且為這 些部分提供明確的接口界面? 這就需要一定的原則來指導(dǎo)系統(tǒng)的分解和界面的 確定。 黑箱抽象就是這樣一種原則,使用黑箱抽象將系統(tǒng)分為若干個功能模塊,每 個模塊只將功能接口暴露給用戶而屏蔽其內(nèi)部實現(xiàn)。模塊( m o d u l e ) 用來局部 化和隱藏內(nèi)部設(shè)計細節(jié),用戶程序( u s e rp r o g r a m ) 通過模塊接口( i n t e r f a c e ) 使用模塊的功能。如圖2 1 所示,其中黑色矩形表示功能模塊,而上邊的橫線表 示接口。 圖2 1 黑箱模型 黑箱抽象的目的足簡化用戶代碼,因為用戶只需使用模塊提供的接口,而不 用關(guān)一山功能的內(nèi)部實現(xiàn)細節(jié);同時也通過減少模塊和用戶程序的關(guān)聯(lián)性保證 了模塊的移植性和重用性。 唑 兩北r 業(yè)人學(xué)i 哦1 :論史堪十反刺的中旬件垃i 1 但是在某些情況下,黑箱抽象并不能很好的達到它的目的。因為如果功能模 塊的設(shè)計者不知道用戶是怎樣使用該模塊的,那就無法提供一個最適合用戶的 模塊實現(xiàn)策略,因為通常只有用戶刁知道怎樣實現(xiàn)功能模塊才能更好的適應(yīng)他 的應(yīng)用。所以設(shè)計者只能考慮最一般的情況,按相對通用的策略去設(shè)計模塊, 然后將這種策略固化在模塊實現(xiàn)中。黑箱抽象強迫模塊的使用者接受設(shè)計者指 定的默認策略,然而當(dāng)用戶無法接受模塊的部分默認策略,又希望使用該模塊 的部分功能時,就會產(chǎn)生沖突。這時用戶就希望通過某種策略對模塊進行調(diào)整。 2 1 2 解決方法 為了解決這個問題,客戶程序的編寫者不得不采用一些折中的方法。有兩種 形式:一種方法是冗余編碼( h e m a t o m a s o f d u p l i c a t i o n ) ,一種是混和編碼( c o d i n g b e t w e e nt h el i n e s ) ,如圖2 2 所示。 ll 圖2 2 冗余編碼和混合編碼 1 ) 冗余編碼 代碼冗余( 圖22 a ) 是在黑箱之上,利用所提供的開放接口,重新實現(xiàn)滿足 自己需要的功能。但是對應(yīng)用程序而言,這是一種代碼的冗余,因為用戶實現(xiàn) 庫中可能重寫了大量底層庫中已經(jīng)實現(xiàn)的代碼,而且這種方案也僅僅解決了針 對這個具體應(yīng)用的沖突問題,對于其它的應(yīng)用也許還要開發(fā)其它的功能庫。 2 ) 混和編碼 混和編碼( 圈2 2 b ) 方式的目的是獲取更好的性能,需要在代碼編寫上則采 用技巧性較高的特殊方法:采用這種方法有賴于對底層系統(tǒng)實現(xiàn)和上層應(yīng)用的 較深認識。但是,混和代碼通常比較晦澀難懂,因為系統(tǒng)自身的操作和如何使 用下層結(jié)構(gòu)之間沒有清楚的分開,而是混和在一起,使得代碼難于移植和維護。 ;t i :l tfq f 凡事愛f 論立 2 2 開放實現(xiàn) 設(shè)汁可重用模塊的困難集中在對“滿足廣泛的客戶需求”和“滿足特定客戶需 求”的平衡上。而影響這種平衡的一個關(guān)鍵因素是模塊的內(nèi)部實現(xiàn)策略,上面討 論的黑箱抽象就是一種重要的實現(xiàn)策略。 雖然黑箱抽象有很多很好的特性,如可降低再發(fā)成本、局部修改性好等,它 屏敞了內(nèi)部實現(xiàn)細節(jié),為用戶提供了清晰的使用界面。但是基于黑箱抽象設(shè)計 的模塊一般是面向廣泛用戶需求,并以典型的方法實現(xiàn)功能,由于模塊實現(xiàn)策 略是固定的,這樣的實現(xiàn)策略可能不能滿足特定用戶的需求。 研究發(fā)現(xiàn),將所有的實現(xiàn)細節(jié)隱藏在模塊接口后邊是很不現(xiàn)實的,其中有些 細節(jié)是關(guān)鍵性實現(xiàn)策略,它會影響最終的實現(xiàn)性能,所以模塊的實現(xiàn)細節(jié)應(yīng)該 向客戶丌放,使客戶也可以控制這些細節(jié)【1 】。如果能夠讓用戶去控制模塊的 實現(xiàn)策略,那么一個模塊就會更具重用性?,F(xiàn)在越來越多的系統(tǒng)在設(shè)計時,傾 向于讓客戶自己能夠選擇模塊實現(xiàn)策略,以滿足自己的需要1 4 。這種方法就 是文中要討論的開放實現(xiàn)( o p e ni m p l e m e n t a t i o n ) : 所謂開放實現(xiàn)( o p e ni m p l e m e n t a t i o n ) 是指將系統(tǒng)的內(nèi)部實現(xiàn)開放出來,向 用戶提供有約束的訪問,以檢查和控制系統(tǒng)的內(nèi)部實現(xiàn)。【l 】 丌放實現(xiàn)實際上是在黑箱抽象基礎(chǔ)上的改進。黑箱抽象隱藏了所有的內(nèi)部實 現(xiàn)細節(jié),而開放實現(xiàn)則允許由用戶去選擇或修改其模塊的實現(xiàn)策略。但是開放 實現(xiàn)并非意味著將所有的內(nèi)部細節(jié)全部暴露給用戶,因為這樣將無法提供給用 戶一個有效的友好的使用界面。通過適度的內(nèi)部開放,開放實現(xiàn)在保持黑箱抽 象的不透明性和客戶所需的性能要求之間取得平衡。 基于這個要求,開放實現(xiàn)要提供兩類界面接口:基界面( b a s e i n t e r f a c e ) 和 元界面( m e t a i n t e r f a c e ) 。如同圖2 3 所示, b a s ep r o g r a m 三三i ;蘭;8 a s e i n t e r f a c e 哺 e 一 1l 。 兩北t 業(yè)人學(xué)刪! i :論義耩十反射的中間件垃汁 圖2 3 開放實現(xiàn)抽象模型 基界面就是模塊的功能界面,用戶通過基界面使用模塊功能;元界面也就是 模塊的玎放界面,用戶可以通過元界面調(diào)整基界面所隱藏的細節(jié)實現(xiàn)。 如果定義s 為實現(xiàn)策略集c 為用戶行為配置文件,那么開放實現(xiàn)模塊將c 映射到s ,也就是對一個特定用戶的行為配置文件c 選擇相應(yīng)的實現(xiàn)策略s ?!? 】 如2 4 圖所示: 客戶配置文件界面 模塊實現(xiàn)選擇界面 新燕略界面 圖2 4 開放實現(xiàn)策略模型 _ | 二圖中,基界面實際上是模塊的黑箱接口,用戶通過該界面使用模塊功能,通 過配置文件界面提供自身的行為信息,通過實現(xiàn)選擇界面選擇相應(yīng)的實現(xiàn)策略, 通過新策略界面提供新的實現(xiàn)策略。 丌放實現(xiàn)的目標是允許使用模塊開發(fā)程序的程序員【l 】: 在默認的實現(xiàn)符合用戶程序的需要時,使用模塊的基界面提供的功能 在必要的時候控制模塊的實現(xiàn)策略 通過相互分離的方法處理功能和實現(xiàn)策略 可以看出,丌放實現(xiàn)并非完全拋棄黑箱實現(xiàn),而是保留了黑箱實現(xiàn)的優(yōu)勢。開 放實現(xiàn)既要保證對大多數(shù)用戶提供典型的實現(xiàn)策略,也要保證對特定的用戶使 用特定的策略。 2 3 反射技術(shù) 反射的概念最早由s m i t h b c 在1 9 8 2 年中提出的,在他的博士論文【8 】中 指出: “i na sm u c ha sac o m p u t a t i o n a lp r o c e s sc a nb ec o n s t r u c t e dt or e a s o na b o u ta n 7 璀十反射的中間件設(shè)汁 e x t e r n a lw o r l di nv i r t u eo fc o m p r i s i n ga l li n g r e d i e n tp r o c e s s ( i n t e r p r e t e r ) f o r m a l l y m a n i p u l a t i n gr e p r e s e n t a t i o n so f t h a tw o r l d ,s ot o oac o m p u t a t i o n a lp r o c e s sc o u l db e m a d et or e a s o na b o u ti t s e l f i nv i r t u eo f c o m p r i s i n ga ni n g r e d i e n tp r o c e s s ( i n t e r p r e t e r ) f o r m a l l ym a n i p u l a t i n gr e p r e s e n t a t i o n so f i t so w n o p e r a t i o n sa n d s t r u c t u r e s ” 這段話的意思是稅,既然一個計算進程可以通過構(gòu)造一個對外部世界表示進 行操作的解釋器來推理外部世界,那么計算進程也應(yīng)該可以通過構(gòu)造一個對自 身操作和結(jié)構(gòu)表示進行操作的解釋器來對自身進行推理。 這個表述的關(guān)鍵在于通過反射程序可以訪i n ( a c c e s s ) 、推理( r e a s o na b o u t ) 年1 調(diào) 整( a l t e r ) 自身的表示【7 】,它大大刺激了對反射技術(shù)的研究。反射研究的領(lǐng)域已 經(jīng)從最初的編程語言擴展到面向?qū)ο笙到y(tǒng)、窗口系統(tǒng)、操作系統(tǒng)等。 2 3 1 基本概念 1 反射的定義 反射是系統(tǒng)能夠推t 里( r e a s o na b o u t ) 并作用于( a c tu p o n ) 自身的能力【9 】。反射 的系統(tǒng)提供對自身行為的表示,這種表示易于檢查和調(diào)整,并與其描述的后臺 行為因果相關(guān)。當(dāng)對系統(tǒng)自表示有任何修改時,就會立即改變系統(tǒng)相應(yīng)狀態(tài)和 行為,這種系統(tǒng)對內(nèi)部結(jié)構(gòu)的表示被稱為因果相關(guān)的自表示( c a u s a l l y c o n n e c t e d s e l f r e p r e s e n t a t i o n ,c c s r ) 。1 9 8 7 年c m a e s 提出反射系統(tǒng)定義:反射系統(tǒng)是存 在因果相聯(lián)的自表示的系統(tǒng)【6 】,它與開放實現(xiàn)是密切相關(guān)的,通過元界面提 供對內(nèi)部結(jié)構(gòu)和操作的開放訪問。這些內(nèi)部結(jié)構(gòu)和操作應(yīng)該提供對計算進程完 全的因果相關(guān)的自表示。 這罩有兩個重要概念:因果相關(guān)( c a u s a l l yc o n n e c t e d ) 和完全性 ( c o m p l e t e n e s s ) 。 所渭因果相關(guān)是指系統(tǒng)的內(nèi)部結(jié)構(gòu)和它表示的范圍相互聯(lián)系,如果任何一個 發(fā)生變化則導(dǎo)致另一方發(fā)生變化【1 0 1 。也就是說,當(dāng)系統(tǒng)自表示發(fā)生變化時, 會立即作用到系統(tǒng)的狀態(tài)上:因果相關(guān)首先需要系統(tǒng)提供對自身進行精確描述 的自表示( s e l fr e p r e s e n t a t i o n ) 其次系統(tǒng)要能夠根據(jù)自表示通過自身計算修改 a 身行為。 陽北】一、i k 人學(xué)壩1 論文 捧十反射的中間件設(shè)| 十 對于一個完整的反射系統(tǒng)而占,僅僅因果相關(guān)是不夠的,內(nèi)部表示必須提供 一個完整的解釋處理自表示的模型,也就是所說的完全性。有一些系統(tǒng)也提供 對內(nèi)部表示部分的訪問,系統(tǒng)設(shè)計者在設(shè)計時指明系統(tǒng)中哪些部分是可以修改 調(diào)整的,也就是假定系統(tǒng)的開發(fā)者知道這些部分在將來是會怎么被修改的,這 種系統(tǒng)不是我們定義的反射系統(tǒng),它與反射的基本思想是沖突的。 例如,對于類似i a v a 的解釋型語言,其解釋器是具有反射性的,假定其解 釋器的c c s r 提供了對方法分配、垃圾回收、類裝載的表示。通過修改c c s r , 就可以調(diào)整程序執(zhí)行的相應(yīng)的語義。比如,在每個方法調(diào)用前插入對調(diào)試函數(shù) 的調(diào)用,就可以增加調(diào)試功能:也可以在類加載前,增加安全檢查模塊等。 2 反射的目的 引入反射的目的主要是提供一套有原則的對系統(tǒng)后臺實現(xiàn)策略進行訪問的 方法以實現(xiàn)對開放系統(tǒng)的檢查( i n s p e c t i o n ) 和調(diào)整( a d a p t a t i o n ) 【7 】。 檢查 反射司以被用于對丌放系統(tǒng)的內(nèi)部行為進行檢查。通過暴露后臺實現(xiàn),可以 直接插入模塊來檢查系統(tǒng)的行為。這樣的方法也可以用于實現(xiàn)性能監(jiān)測、服務(wù) 質(zhì)量( q o s ) 監(jiān)測和記帳系統(tǒng)等。 調(diào)整 反射也可以用于對丌放系統(tǒng)內(nèi)部行為進行調(diào)整。這種調(diào)整要么是修改系統(tǒng)已 有的某些特性的解釋( 通過摻改和替換) 或者增加刪除某些特性。前者的例子 有:修改消息傳輸?shù)姆绞揭员銉?yōu)化無線連接情況下的性能,或者在系統(tǒng)資源不 足的情況下降低視頻服務(wù)的服務(wù)質(zhì)量等。后者的例子包括:在一個運行的計算 過程中通過插入過濾對象減少通訊流的帶寬需求。 2 3 2 反射的分類 反射可以從三個不同的角度進行分類。 1 ) 過程性和聲明性反射 根據(jù)反射的使用方式,可以分為過程性反射( p r o c e d u r a lr e f l e c t i o n ) 和聲明 性反射( d e c l a r a t i v er e f l e c t i o n ) 【1 0 1 。 舉十反射的中間件垃i 過程性反射中,系統(tǒng)的自表示是出實現(xiàn)這個系統(tǒng)的程序提供的,或者瑰系統(tǒng) 的自表示是通過用戶程序的邏輯表現(xiàn)出來的。所以過程性反射的自表示通常是 用與編寫用戶程序相同的語言編寫的。在這種情況下,應(yīng)用程序和元程序是用 同一種計算模型編寫的,比如在具有反射性面向?qū)ο笳Z言中,調(diào)用( i n v o c a t i o n ) 、 繼承( i n h e r i t a n c e ) 等面向?qū)ο蟮母拍钤谠獙雍蛻?yīng)用程序?qū)佣加惺褂?。其最大?優(yōu)點是因果相關(guān)是自動包含在應(yīng)用程序的實現(xiàn)里的,是通過程序代碼體現(xiàn)出來 的。 聲明性反射中,系統(tǒng)的自表示不是通過系統(tǒng)的實現(xiàn)體現(xiàn)出來的。自表示是通 過對系統(tǒng)行為狀態(tài)的描述集體現(xiàn)出來的。這種方法更為抽象,考慮更多的是應(yīng) 該獲取哪些系統(tǒng)實現(xiàn),而不是如何去獲取。它的缺點是因果相關(guān)比較難以獲得。 過程性和聲明性的反射是可以混和使用的。 2 ) 解釋型和編譯型反射 根據(jù)反射使用的環(huán)境,可以分為解釋型反射( i n t e r p r e t e dr e f l e c t i o n ) 和編譯 型反射( d y n a m i cc o m p l i e dr e f l e c t i o n ) 【7 】。早期,這種分類主要是針對編程語 言的。 在解釋型的反射中,反射是通過解釋進程的自然特性表現(xiàn)出來的。解釋器構(gòu) 造程序的行為信息,充分提供了有關(guān)程序的各種信息。通過提供對這些自表示 信息的訪問,就可以實現(xiàn)反射,使得編程者可以檢查、調(diào)整計算進程的內(nèi)部自 表示。例如,l a v a 等。 對于編譯型反射,自表示信息是在編譯時構(gòu)造的,但是編譯完成后這些信息 就被丟棄了( 除了調(diào)試信息) ,這就使得編譯環(huán)境下很難構(gòu)造反射?,F(xiàn)在,編譯 器可以構(gòu)造完整的自表示信息并且在可以提供運行時訪問。有一些語言提供編 譯時反射,但是不允許在運行時訪問、修改元信息。例如,o p e n c + + 、m p c + + 、 i g u a n a 。 3 ) 結(jié)構(gòu)性和行為性反射 根據(jù)反射控制的不同方面,可以分為結(jié)構(gòu)反射( s t r u c t u r a lr e f l e c t i o n ) 和行為 反射( b e h a v i o r a lr e f l e c t i o n ) 【2 2 】。這兩種類型并不互斥,可以同時存在。需要 說明的是這科一分類也是針對編程語言的。 結(jié)構(gòu)反劓是指語言對正在執(zhí)行的程序和它的抽象數(shù)據(jù)類型進行完全的具體 0 婀北。r 業(yè)人學(xué)壩 1 論正 幕于反射的中問件世汁 化的能力。結(jié)構(gòu)性反射允許檢查和調(diào)整計算系統(tǒng)的代碼。最初的函數(shù)語言( 1 i s p ) 和邏輯語卣( p r o l o g ) 都有一些聲明性的語句去改動程序的表達,這主要基于語 言的解釋性特性。 行為反射是指提供了對其語義和對用于執(zhí)行當(dāng)前程序的數(shù)據(jù)的完全具體化。 行為反射允許檢查和調(diào)整一個系統(tǒng)運行時的行為。通常對編程人員屏蔽的方面 被丌放了出來,例如,方法分配機制、對象存儲機制等。行為反射不同于結(jié)構(gòu) 反射的地方在于只能增加或改動代碼段,而不能改動執(zhí)行引擎。 2 3 3 反射缺點 反射在開放性和靈活j 生方面有不可比擬的優(yōu)越性,但是也有一定的缺陷。 l ,性能 反射不可避免的會增加額外的系統(tǒng)開銷。需要用額外的代碼對系統(tǒng)行為進行 精確的解釋( 因為這些行為是會變化的) 。而這種解釋代碼在黑箱實現(xiàn)中是不需 要的,因此需要在系統(tǒng)性能和靈活性之問進行平衡。 2 安全性 其次是完整性和安全性問題。在程序員通過開放實現(xiàn)的元界面去訪問系統(tǒng)的 內(nèi)部實現(xiàn)時,必須保證系統(tǒng)的完整性。方面,對系統(tǒng)自表示的充分訪問是很 重要的,但是另一方面,不受限的訪問卻是很危險的。所以必須在對自表示的 完全訪問和有限訪問之間取得平衡。 3 復(fù)雜性 許多應(yīng)用更嚴重的一個問題是使用反射會模糊程序內(nèi)部實際要發(fā)生的事情。 程序人員希望在源代碼中看到程序的邏輯,但反射等繞過了源代碼的技術(shù)會帶 來維護問題。所以要只在真正可以增加靈活性的地方使用反射。 2 4 面向?qū)ο蟮姆瓷湎到y(tǒng) 反射的計算環(huán)境可能是面向?qū)ο蟆⑦^程、功能、邏輯或者規(guī)則的。實際上, 大多數(shù)對反射系統(tǒng)的研究都是針對面向?qū)ο笥嬎隳P偷摹?反射和面向?qū)ο笾g有很密切的聯(lián)系:反射技術(shù)使得在隱藏不必要暴露的實 壯j 一反舯的中問件砹汁 現(xiàn)細節(jié)和不損失移植性的前提下開放語言的實現(xiàn)成為可能:而面向?qū)ο蠹夹g(shù)使 得語言實現(xiàn)和行為的最終模型可以被局部的( 1 0 c a l l y ) 增量的( i n c r e m e n t a l l y ) 調(diào)整【1 l 】。也就說反射本身并不支持擴展性( f l e x i b i l i t y ) 、增量性( i n c r e m e n t a l l y ) 、 易用性( e a s eo f u s e ) 。而這些特性可以通過面向?qū)ο蠹夹g(shù)來彌補。 2 4 1 基本概念 在傳統(tǒng)的面向?qū)ο缶幊讨袑ο蟠砹爽F(xiàn)實世界中的實體。將反射的概念引 入面向?qū)ο蠛螅瑢ο蟊旧硪部梢杂闷渌膶ο髞肀硎?,后者稱為元對象 ( m e t a - o b j e c t ) 。元對象的計算( m e t a ,c o m p u t a t i o n ) 用于觀測和修改他們的指示 物( r e f e r e n t s ) ,也就是元對象所代表的對象。元計算通常是通過捕獲( t r a p ) 它 們的指示物的j 下常計算,由元對象執(zhí)行;也就是指示物的行為被元對象所捕獲, 后者執(zhí)行元計算,這就替換了或封裝了指示物的行為。當(dāng)然元對象也可以由其 它的對象柬實現(xiàn),稱為二重元對象的指示物。這樣反射系統(tǒng)就構(gòu)成了一種多層 結(jié)構(gòu),形成一個反射塔( r e f l e c t i v et o w e r ) 。位于反射塔基層( b a s e 1 e v e l ) 的對 象稱為基對象( b a s e - o b j e c t s ) ,它們對應(yīng)用領(lǐng)域中的實體進行計算;基層之上稱 為元層( m c t a - l e v e l ) ,元層上的對象稱為元對象( m e t a o b j e c t s ) ,對其相鄰底層 指示物進行計算?!? 2 】 基對象與元對象之間不定是一一對應(yīng)的關(guān)聯(lián):幾個元對象可以共享同一個 指示物;單個對象也可有幾個指示物。反射塔相鄰層之間的界面通常稱為元對 象協(xié)議( m e t a - o b j e c t sp r o t o c o l 或m o p ) 。 每一次反射計算可以分為兩個邏輯部分:計算流上下文切換和元行為。計 算從基層的計算流開始:當(dāng)基層實體執(zhí)行某個行為時,該行為被元實體捕獲, 于是這時計算流上升到元層,稱為上移操作( s h i f t u pa c t i o n ) :然后元實體執(zhí)行 完元計算,當(dāng)它允許基層實體執(zhí)行時,計算流返回基層,稱為下移操作 ( s h i f t d o w na c t i o n ) ?!? 2 】 在所有反射模型中,一個基本概念就是具體化( r e i f i c a t i o n ) 。為了對相鄰底 層的計算執(zhí)行計算,每一層維護組支持這個計算的數(shù)據(jù)結(jié)構(gòu),即前述的因果 相連的自表示,而創(chuàng)建這種自表示將原本隱式的方面顯示化的過程就稱為具體 璀十反射的葉:問件改汁 化。當(dāng)然,相鄰底層的哪些方面被具體化,取決于反射模型( 如,結(jié)構(gòu)、狀態(tài) 和行為、通訊等) 。在任種情況下,包含自表示的數(shù)據(jù)結(jié)構(gòu)與系統(tǒng)被具體化的 哪些方面是因果相連的。在相鄰層之間保持這種因果相連關(guān)系是反射基礎(chǔ)設(shè)施 ( r e f l e c t i v ei n f r a s t r u c t u r e ) 所具有的職責(zé),而元對象的設(shè)計者和編程人員并不知 道如何實現(xiàn)因果相連關(guān)系等細節(jié)。 具體化( r e i f i c a t i o n ) 使內(nèi)部自表示的某些方面顯露出來,提供給應(yīng)用程序 使用。這個過程可以存在于應(yīng)用程序到元層、元層到二重元層,依次類推。相 反的過程是吸收過程( a b s o r p t i o n ) ,它將元系統(tǒng)的某些方面改變或隱藏起來。 丌放實現(xiàn)中的基界面和相應(yīng)的基程序、元界面和相應(yīng)的元程序,與反射中反 射塔的基層和基對象、元層和元對象有所不同。 基界面和元界面討論的是采用開放實現(xiàn)的模塊提供給用戶的話種界面。基界 面反映的是模塊的功能。而元界面用于檢查和調(diào)整模塊的內(nèi)部實現(xiàn)。這個模塊 的概念是可大可小,既可以是編程語言、操作系統(tǒng)、中間件系統(tǒng)等,也可以是 程序中一個小的編程模塊。在這些模塊之上的應(yīng)用程序也相應(yīng)分為兩部分:調(diào) 用模塊基界面的部分稱為基程序,而調(diào)用元界面的程序分為元程序。 反射塔、基層、基對象、元層、元對象、元計算等,主要用于描述反射計算。 在基層的基對象,對應(yīng)用領(lǐng)域中的實體進行計算;在元層的元對象,對基層的 基對象執(zhí)行計算。通過系統(tǒng)的基界面,應(yīng)用程序可以構(gòu)造基對象,使它們協(xié)同 工作以解決應(yīng)用領(lǐng)域中的問題:通過系統(tǒng)的元界面,應(yīng)用程序可以檢查和改動 元層的元對象,調(diào)整系統(tǒng)的實現(xiàn)以滿足應(yīng)用的特定要求。 所以,元界面并非元對象的界面。比如,一個元對象本身采用了開放實現(xiàn)的 思想,那么他提供給客戶既有基界面,也有元界面。 2 4 2 反射系統(tǒng)的特性 反射系統(tǒng)與丌放實現(xiàn)密切相關(guān),所以開放實現(xiàn)的特性也很好的反映在反射系 統(tǒng)上a 反射系統(tǒng)的基本特陛包括:透明性( t r a n s p a r e n c y ) 、關(guān)注分離( s e p a r a t i o n o f c o n c e r n s ) 、可見性( v i s i b i l i t y ) 、反射粒度( r e f l e c t i o ng r a n u l a r i t y ) 【2 2 】。 1 ) 透明性 p 叫efu 一、。o 垮i :e 丘拱j 反烏j 的中間伴i i 汁 反射模型的一個關(guān)鍵特色是透明性( t r a n s p a r e n c y ) 。反射系統(tǒng)在邏輯上可以 看作種多蕓結(jié)構(gòu),可以看作一個反射塔,每一層的實體相對于其上層的實體 而吉是獨立的,位于任一層的對象完全不知道其上層對象的存在或工作情況。 換句話悅,每個元層被加到其指示物層之上而無需改動指示物層本身。也即, 反射系統(tǒng)在元層與其指示物層之間執(zhí)行因果相連,是以對元層編程人員和指示 物層編程人員都透明的方式實現(xiàn)的,我們把這稱為反射透明性( r e f l e c t i o n t r a n s p a r e n c y ) 。當(dāng)將元層和基層進行集成時,對基層代碼的改動程度可以衡量這 個反射系統(tǒng)的透明度。 2 ) 關(guān)注分離 反射的不同層關(guān)注系統(tǒng)不同的方面,基層執(zhí)行系統(tǒng)的功能屬性,其它層擴展 ( 由其下分層組成) 系統(tǒng)的非功能性屬性。如,容錯、并發(fā)、持久性等。這樣 利用反射塔就可以方便的擴展一個系統(tǒng),將系統(tǒng)的不同方面( 功能性屬性或各 種非功能性屬性) 分配給不同的層,稱為關(guān)注分離。 3 ) 可見性 可見性表示元計算的范圍,即哪些基層實體或基層實體的哪些方面涉及到了 元計算= 4 ) 反射粒度 反射粒度指一個反射系統(tǒng)中,被不同元實體具體化的基層實體最小的方面。 通常的粒度層次是:類、繼承、對象、方法、方法調(diào)用、方法分配等 7 1 。如 果反射粒度是在方法這個層次,則同一個元對象的兩個方法可以被兩個不同的 元實體具體化,表現(xiàn)出兩種不同的元行為。許多系統(tǒng)提供對元信息細顆粒度 ( f i n e g r a i n e d ) 訪問的,這樣增強系統(tǒng)的靈活性和丌放性,但是缺點也很明顯, 首先是安全性問題,其次是增加了系統(tǒng)中元對象的數(shù)量。為了克服這個困難許 多系統(tǒng)提供粗顆粒度( c o a l s e g r a i n e d ) 的訪問。 基于上述特性,在面向?qū)ο笙到y(tǒng)中引入反射可以獲取以下的好處。 首先提高系統(tǒng)的靈活性,以適應(yīng)環(huán)境的變化和需求的變化。通過反射,一 個系統(tǒng)中對象的結(jié)構(gòu)和行為可以被改動、增加和修改,而不用修改原來的系統(tǒng) 代碼。 其:父,分離功能性屬性和非功能性屬性。常用的方式是,基層對象用來滿足 兩北剛e 人學(xué)碩f 論文果j 反射的中問件醚汁 應(yīng)用程序的功能性需要,而元層用于保證非功能性屬性( 如:容錯、持久性、 分布性等) 。把基層對象稱為功能性對象,元層對象稱為非功能性對象。功能性 對緣現(xiàn)實世界的實體進行建模,非功能性對象對功能性對象的屬性進行建模。 關(guān)注分離,增強了系統(tǒng)的可修改性和重用性。 2 4 3 面向?qū)ο蟮姆瓷淠P?不同的反射系統(tǒng)之問最明顯的區(qū)別是系統(tǒng)的反射計算模型。根據(jù)元對象與基 對象的關(guān)系,反射模型分為:元類模型( m e t a - e l a s sm o d e l ) 、元對象模型 ( m e t a - o b j e c t e d ) 、元通訊模型( m e t a c o m m u n i c a t i o nm o d e l ) 【1 2 、元組模型 ( m e t a g r o u pm o d e l ) 【7 】。現(xiàn)有的分類是針對編程語言進行的,但是對于其它 領(lǐng)域的反射模型的建立具有重要的參考價值。 1 ) 元類模型 類描述了對象的結(jié)構(gòu)和行為。在元類模型中,每個對象屬于一個類,這個 類定義了對象的行為和對這個行為的正確解釋。反射塔是通過實例化關(guān)系實現(xiàn) 的。具體化基對象的元對象是它的類,而具體化元對象的二重元對象是它的元 類( m e t a c l a s s ,也即元對象的類) 等等。 v :ac l a s sj c i a s s i n s t j 二二一 m e s s a g e 怒 仨 。一j ?介s h i f t - u pa ctioninst a ,jli 7 o b j e c t 、掃 1 = 、一 s s a g e 圖2 5 元類模型 類適于控制和改動結(jié)構(gòu)信息,因為其本身包含這類信息。對元類的改變對所 有的實例有效。 這種方法中,行為的定義和解釋是密切相連的。也可以將這兩個概念分開, 使得個對象可以被e j 建為個類的實例,而創(chuàng)建者可以指定這個實例需要元 弭北t 業(yè)人學(xué)壩f 論文皋f 一反射的中問件設(shè)計 類。這樣類實例即可不
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基因工程藥物企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 合作社促進農(nóng)村發(fā)展協(xié)議
- 數(shù)理邏輯初步解析:培養(yǎng)學(xué)生邏輯思維能力的關(guān)鍵教案
- 健康食品產(chǎn)業(yè)生產(chǎn)與質(zhì)量管理規(guī)程
- 靈芝孢子粉早餐麥片企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 智能圖形識別系統(tǒng)企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 智能情緒舒緩手環(huán)行業(yè)跨境出海戰(zhàn)略研究報告
- 藝術(shù)品市場中的法律風(fēng)險防范考核試卷
- 禽類屠宰副產(chǎn)品加工技術(shù)創(chuàng)新考核試卷
- 布草采購合同協(xié)議
- 危大工程巡視檢查記錄表(深基坑)
- 《最好的未來》合唱曲譜
- Q∕SY 1143-2008 三維地質(zhì)建模技術(shù)要求
- GB∕T 36765-2018 汽車空調(diào)用1,1,1,2-四氟乙烷(氣霧罐型)
- 《覺醒年代》朗誦稿
- 小學(xué)教育專業(yè)畢業(yè)論文
- 大地構(gòu)造學(xué)派及其構(gòu)造單元匯總
- 麗聲北極星分級繪本第二級上Dinner for a Dragon 課件
- 水保工程驗收檢驗記錄表
- 車輛維護保養(yǎng)制度
- 某縣公共資源交易中心政府采購質(zhì)疑處理辦法
評論
0/150
提交評論