版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、碩士學(xué)位論文(工程碩士)基于構(gòu)件的可插拔服務(wù)模型框架的設(shè)計(jì)與實(shí)現(xiàn)THE DESIGN AND IMPLEMENTATION OFPLUGGABLE SERVICE MODEL FRAMEWORKBASED ON COMPONENT王偉 2008年6 月國內(nèi)圖書分類號(hào):TP311國際圖書分類號(hào):621.3工程碩士學(xué)位論文基于構(gòu)件的可插拔服務(wù)模型框架的設(shè)計(jì)與實(shí)現(xiàn)碩士研究生 :王偉導(dǎo)師 :陳惠鵬副教授 副導(dǎo)師 :李博高級(jí)工程師申請(qǐng)學(xué)位 :工程碩士學(xué)科、專業(yè) :軟件工程所在單位 :軟件學(xué)院答辯日期 :2008年6月授予學(xué)位單位 :哈爾濱工業(yè)大學(xué)Classified Index:TP311U.D.C.:
2、 621.3Dissertation for the Masters Degree in EngineeringTHE DESIGN AND IMPLEMENTATION OF PLUGGABLE SERVICE MODELFRAMEWORK BASED ON COMPONENTCandidate: Supervisor: Associate Supervisor: Academic Degree Applied for: Speciality:Affiliation : Date of Defence:Degree-Conferring-Institution: Wang WeiAssoci
3、ate Prof. Chen HuipengSenior Engineer Li BoMaster of EngineeringSoftware EngineeringSchool of SoftwareJune, 2008 Harbin Institute of Technology- -I 摘 要近年來,隨著軟件系統(tǒng)規(guī)模的逐漸增長(zhǎng),軟件系統(tǒng)的復(fù)雜性急劇上升。究其原因,很大一部分是由于客戶需求、市場(chǎng)環(huán)境、法律政策、技術(shù)平臺(tái)等的頻繁變化。而傳統(tǒng)的對(duì)象復(fù)用技術(shù)、組件復(fù)用技術(shù)以其固有的靜態(tài)性已無法快速的適應(yīng)需求的頻繁變化。為了能夠最大化的降低變化帶來的復(fù)雜性,需要一種不同的開發(fā)方法及其基礎(chǔ)設(shè)施來適
4、應(yīng)這種多變的環(huán)境。本論文依托多功能打印機(jī)項(xiàng)目,提出一種基于構(gòu)件的可插拔服務(wù)模型,設(shè)計(jì)并實(shí)現(xiàn)了基于此模型的一個(gè)框架系統(tǒng)。在模型方面,采用分層的思想將整個(gè)模型劃分為執(zhí)行環(huán)境層、構(gòu)件層、生命周期管理層以及服務(wù)管理層等四個(gè)層次,并將構(gòu)件層作為四個(gè)層次中的核心層。在構(gòu)件層部分,提出一種構(gòu)件類型即Block ,它由能夠?yàn)橛脩籼峁┕δ艿囊幌盗袑?duì)象以及資源組成,并被視為一種最小的開發(fā)單元和部署單元,Block 成為整個(gè)模型的核心概念。在生命周期管理層部分,定義Block 4個(gè)生命狀態(tài),并詳細(xì)闡述了Block 生命周期過程中狀態(tài)之間的變遷情況以及由變遷帶來的特定行為的執(zhí)行。在服務(wù)管理層部分,從動(dòng)態(tài)依賴方面出發(fā),
5、提出了服務(wù)以及服務(wù)周邊環(huán)境的概念,并將其依附于Block 概念實(shí)體。在運(yùn)行時(shí)采用服務(wù)注冊(cè)、獲取、撤銷的形式實(shí)現(xiàn)Block 之間的動(dòng)態(tài)交互。在框架方面,依據(jù)模型對(duì)各個(gè)層實(shí)體概念的定義、實(shí)體依賴的表述,實(shí)體內(nèi)部特征及結(jié)構(gòu)進(jìn)行了詳細(xì)的設(shè)計(jì)。整個(gè)框架以Block 構(gòu)件作為基礎(chǔ),對(duì)Block 的加載機(jī)制、Block 的狀態(tài)、Block 的生命周期以及由Block 發(fā)布的一系列服務(wù)進(jìn)行了重點(diǎn)設(shè)計(jì)。該論文除了提出一種不同的模型以及框架之外,還對(duì)以此模型框架為基礎(chǔ)的開發(fā)方式和傳統(tǒng)式開發(fā)方式在構(gòu)件化、并行化、動(dòng)態(tài)化、結(jié)構(gòu)擴(kuò)展性等方面進(jìn)行了的比較。通過將傳統(tǒng)的粗粒度的構(gòu)件進(jìn)行粒度的細(xì)化;將傳統(tǒng)的同一個(gè)工程目錄的依
6、賴進(jìn)行弱化,帶來了構(gòu)件并行化程度的顯著提高。通過采用內(nèi)核加外圍服務(wù)的方式,一方面消除了傳統(tǒng)動(dòng)態(tài)性對(duì)配置文件的依賴,另一方面減弱了系統(tǒng)中各個(gè)構(gòu)件之間的耦合,使系統(tǒng)具有很強(qiáng)的擴(kuò)展性,便于系統(tǒng)的穩(wěn)定演化。關(guān)鍵詞 構(gòu)件;服務(wù);可插拔;構(gòu)件化;動(dòng)態(tài)性- - II AbstractIn recent years, with the increase in the scale of software systems, their complexity also climbs. The reason is that traditional technique of reusing objects and co
7、mponents as well as its inherent nature of being static can not adapt responsively to the frequent changes in customer requirements, market environments, laws and regulations and technical platforms etc. In order to minimize the complexity brought about by the changes, a new development method and i
8、ts infrastructure are needed in order to adapt to the changing environment.This article puts forward a pluggable service model, designs and implements a framework system based on components in a multi-functional printer project. In the model aspect, the whole model is divided into 4 layers: environm
9、ent layer, component layer, lifecycle management layer and service management layer. The component layer is the core layer in all layers. In component layer aspect, this article puts forward a kind of component type Block. It is composed of a series of objects and resources that are able to provide
10、functions to users, and it is treaded a sort of minimum developing and deploying unit, and it becomes the core concept of the whole model. In lifecycle management layer aspect, this article defines the 4 lifecycle states of component, and provides a detailed description on the transition between sta
11、tes of component during their lifecycle process as well as the execution of the specific behavior caused by transitions. In service management layer aspect, this article puts forward the service and service context concept based on dynamic dependency, and relates them to the Block concept. This arti
12、cle adopts the mode of service registration, service acquirement, and service unregistration to implement the dynamic interaction between Blocks. In the framework aspect, this article provides a detailed design on concept definitions of entities in each layer, descriptions of dependency between enti
13、ties, internal characteristics and structure of entities according to the model. The whole framework is based on Block component and focus is given to the design of a series of services including the loading mechanism, status, lifecycle and publication of Blocks.Besides presenting a different model
14、and a framework, this article also- -III describes a comparison between the different development method and the traditional development method in component ability, parallelization, dynamical and expansibility of structure. Through refining traditional coarse-grained modules moderately, and weakeni
15、ng the dependency of the traditional single project directory, the degree of parallel in components has a notable improvement. Through using the mode of kernel plus peripheral service, on the one hand, it eliminates the dependency on configuration files that traditional development method; on the ot
16、her hand, it weakens the coupling among components in order that system can has a strong expansibility and a steady evolvement.Keywords component, service, pluggable, modularization, dynamical- -IV 目錄摘 要. I Abstract .II第1章 緒論. 11.1 課題研究的背景及來源. 11.2 課題研究的目的和意義. 11.3 課題的國內(nèi)外研究現(xiàn)狀. 31.3.1 插件技術(shù)概述. 31.3.2
17、類加載委托模型以及空間可見性. 31.3.3 國外研究現(xiàn)狀. 41.3.4 國內(nèi)研究現(xiàn)狀. 51.4 課題研究?jī)?nèi)容及論文結(jié)構(gòu). 61.4.1 課題研究?jī)?nèi)容. 61.4.2 論文結(jié)構(gòu). 7第2章 基于構(gòu)件的可插拔服務(wù)模型. 82.1 系統(tǒng)需求. 82.2 四層模型. 92.2.1 靜態(tài)結(jié)構(gòu). 92.2.2 動(dòng)態(tài)結(jié)構(gòu).102.3 各個(gè)層實(shí)施的難點(diǎn).112.4 本章小結(jié).12第3章 可插拔服務(wù)模型框架的設(shè)計(jì)與實(shí)現(xiàn).133.1 構(gòu)件層的設(shè)計(jì)與實(shí)現(xiàn).133.1.1 構(gòu)件的定義.133.1.2 Block的組成以及動(dòng)態(tài)結(jié)構(gòu).133.1.3 Block的加載架構(gòu).183.1.4 Block的加載流程.203
18、.1.5 Block加載類流程的實(shí)現(xiàn).223.2 生命周期管理層的設(shè)計(jì)與實(shí)現(xiàn).233.2.1 Block的狀態(tài)以及狀態(tài)轉(zhuǎn)換.23- -V 3.2.2 Block生命周期的控制.263.3 服務(wù)管理層的設(shè)計(jì)與實(shí)現(xiàn).293.3.1 靜態(tài)依賴和動(dòng)態(tài)依賴.293.3.2 服務(wù)管理層中的基本概念.303.3.3 服務(wù)的控制.323.4 對(duì)傳統(tǒng)方式的改進(jìn).383.5 本章小結(jié).40第4章 框架的測(cè)試以及應(yīng)用.414.1 框架的測(cè)試.414.1.1 功能測(cè)試.414.1.2 并發(fā)測(cè)試.444.2 框架的應(yīng)用.454.2.1 應(yīng)用背景.454.2.2 Flash顯示功能的開發(fā).464.3 本章小結(jié).49結(jié) 論
19、.50參考文獻(xiàn).52哈爾濱工業(yè)大學(xué)碩士學(xué)位論文原創(chuàng)性聲明.55哈爾濱工業(yè)大學(xué)碩士學(xué)位論文使用授權(quán)書.55致 謝.56個(gè)人簡(jiǎn)歷.57- - 1第1章 緒論1.1 課題研究的背景及來源隨著IT 信息技術(shù)的發(fā)展,企業(yè)、政府自動(dòng)化辦公的步伐越來越快。報(bào)表的打印、傳真的收發(fā)、文件的掃描與復(fù)印等是自動(dòng)化辦公套件中不可或缺的一部分。而在現(xiàn)在的自動(dòng)化產(chǎn)品中,集以上特點(diǎn)于一身的MFP (多功能打印機(jī))在自動(dòng)化辦公進(jìn)程中扮演了一個(gè)重要的角色1。為了盡早的在自動(dòng)化辦公這一領(lǐng)域占領(lǐng)先機(jī),生產(chǎn)MFP (多功能打印機(jī))的各個(gè)廠商如三星、惠普用盡各種方法,希望能夠縮短產(chǎn)品投放到市場(chǎng)的周期,從而搶先占領(lǐng)市場(chǎng)1。在縮短產(chǎn)品周期
20、的策略中,很大一部分是要縮短產(chǎn)品的生產(chǎn)周期,包括產(chǎn)品的研發(fā)、產(chǎn)品的測(cè)試、產(chǎn)品的安裝以及產(chǎn)品的交付等。而在產(chǎn)品生產(chǎn)周期的這四個(gè)階段中,尤以產(chǎn)品的研發(fā)對(duì)產(chǎn)品生產(chǎn)周期長(zhǎng)短的影響最為重大2。在產(chǎn)品的研發(fā)過程中,需要應(yīng)對(duì)市場(chǎng)需求的頻繁變化,或許需要添加一些新的功能,或許需要?jiǎng)h除一些舊有的功能等。 而傳統(tǒng)方式由于其固有的缺點(diǎn)對(duì)變化反映相對(duì)遲鈍,對(duì)并行性、擴(kuò)展性能力相對(duì)較弱,因此需要一種能夠快速應(yīng)對(duì)需求變化的、穩(wěn)固的、可靠的、靈活的基礎(chǔ)設(shè)施。1.2 課題研究的目的和意義本小節(jié)從以下三個(gè)方面來闡述傳統(tǒng)方式的弊端。(1 構(gòu)件化和并行性 所謂構(gòu)件化就是單個(gè)構(gòu)件能夠被獨(dú)立的修改、維護(hù)的系統(tǒng)屬性。目標(biāo)是能夠使系統(tǒng)的一
21、個(gè)部分的改變不會(huì)影響其它部分,使其產(chǎn)生不被期望的行為。構(gòu)件化主要分為兩種類型:邏輯上的構(gòu)件化以及物理上的構(gòu)件化。邏輯上的構(gòu)件化是指在系統(tǒng)的開發(fā)階段,對(duì)系統(tǒng)進(jìn)行的有效的分解和結(jié)構(gòu)化;物理上的構(gòu)件化是指在系統(tǒng)開發(fā)后進(jìn)行部署和維護(hù)時(shí)的獨(dú)立單元3。傳統(tǒng)方式下,在物理上的劃分大多是根據(jù)空間位置進(jìn)行的超大粒度的劃分,并將劃分出來的構(gòu)件根據(jù)架構(gòu)原則分布到不同的空間位置上。比如對(duì)于企業(yè)系統(tǒng),將系統(tǒng)分為Web Archive Module以及Enterprise Archive Module。前者分布到Web 服務(wù)器端,后者分布到Application 服務(wù)器端。這些大粒度- - 2 的構(gòu)件通常牽涉到多個(gè)開發(fā)人
22、員,導(dǎo)致多個(gè)開發(fā)人員之間的耦合關(guān)系過于緊密。緊耦合關(guān)系容易引發(fā)一系列不必要的漣漪效應(yīng),容易對(duì)項(xiàng)目產(chǎn)生一定的負(fù)面作用4。另一方面,粒度過大的構(gòu)件也不容易進(jìn)行管理,由于構(gòu)件中包含很多相對(duì)松散而又略顯雜亂的方面和邏輯,模糊了構(gòu)件本應(yīng)有的、相對(duì)單純的邏輯職責(zé),可維護(hù)性大大降低。再者,傳統(tǒng)方式下,不同構(gòu)件的開發(fā)是在同一個(gè)工程下,所不同是開發(fā)人員在不同的包中工作,盡管他們?cè)诎?jí)別具有一定的并行性,但在工程級(jí)別仍耦合在一起。更重要的是,大粒度構(gòu)件由于其職責(zé)的混雜,其并行開發(fā)的程度相對(duì)較弱,沒有挖掘出其潛在的并行能力。(2 動(dòng)態(tài)性 所謂動(dòng)態(tài)性就是一種在系統(tǒng)運(yùn)行時(shí)刻,在不影響其他功能正常狀態(tài)的情況下,隨時(shí)地更新
23、、添加、刪除功能的特性5,6。在傳統(tǒng)的方式下,也是可以達(dá)到動(dòng)態(tài)性即動(dòng)態(tài)的擴(kuò)充、動(dòng)態(tài)的修改、動(dòng)態(tài)的改變系統(tǒng)的行為。但是傳統(tǒng)的方式實(shí)現(xiàn)起來卻比較麻煩,采用配置文件和反射機(jī)制來實(shí)現(xiàn)。通過將需求中的變化點(diǎn)進(jìn)行抽象,形成接口,并將這種變化外部化,封裝在可動(dòng)態(tài)配置的文件中。在系統(tǒng)運(yùn)行的過程中,通過解析文件得到具體的執(zhí)行對(duì)象,在有新的變化出現(xiàn)的時(shí)候,只需修改配置文件而不用修改源代碼,實(shí)現(xiàn)了一定的動(dòng)態(tài)性。然而,這種特性的實(shí)現(xiàn)并非是“免費(fèi)的午餐”,它需要開發(fā)人員維護(hù)一個(gè)或者多個(gè)外部化變化點(diǎn)的配置文件,在系統(tǒng)非常復(fù)雜的情況下,這種配置文件的內(nèi)容會(huì)急劇增加,冗雜性和復(fù)雜性急劇上升,可讀性急劇下降,維護(hù)成為一個(gè)復(fù)雜繁
24、瑣的工作。(3 結(jié)構(gòu)擴(kuò)展性 在傳統(tǒng)方式下,將整個(gè)系統(tǒng)看成一個(gè)不可分割的整體,整體中包含了各個(gè)模塊,這些模塊有些是平級(jí)的、有些具有一定的層次性,在運(yùn)行時(shí)模塊之間通過直接調(diào)用的機(jī)制實(shí)現(xiàn)相互之間的通信,通信的邏輯被分散到各個(gè)模塊之間的調(diào)用過程之中,整個(gè)系統(tǒng)成為一個(gè)獨(dú)立的完整實(shí)體,這種結(jié)構(gòu)通常來說被稱為宏內(nèi)核結(jié)構(gòu)7。由于這種結(jié)構(gòu)下的各個(gè)模塊采用的是直接調(diào)用的方式進(jìn)行交互,因此,具有相對(duì)良好的時(shí)間相應(yīng)性。但是,現(xiàn)代的軟件開發(fā)要求更多的是一種超強(qiáng)的隨需應(yīng)變的能力,系統(tǒng)應(yīng)具備在需求變化的情況下,快速的應(yīng)對(duì)這種變化的素質(zhì),而傳統(tǒng)方式下的結(jié)構(gòu),由于其將系統(tǒng)看成是一種不可拆分的整體,各個(gè)功能模塊以強(qiáng)關(guān)聯(lián)的形式連接
25、在一起,不利于新功能的添加。綜上所述,為了克服傳統(tǒng)方式下的弊端,使多功能打印機(jī)系統(tǒng)的開發(fā)具有隨需應(yīng)變、穩(wěn)定演化的能力,需要一種能夠快速應(yīng)對(duì)需求變化的、穩(wěn)固的、- - 3可靠的、靈活的基礎(chǔ)設(shè)施。它具有細(xì)化傳統(tǒng)物理上大粒度構(gòu)件、簡(jiǎn)化系統(tǒng)動(dòng)態(tài)性以及消除不必要的配置文件、提高系統(tǒng)結(jié)構(gòu)擴(kuò)展性的能力。1.3 課題的國內(nèi)外研究現(xiàn)狀1.3.1 插件技術(shù)概述所謂插件技術(shù),就是在程序的設(shè)計(jì)開發(fā)過程中, 把整個(gè)應(yīng)用程序分成宿主程序和插件兩個(gè)部分,宿主程序與插件能夠相互通信。并且在宿主程序不變的情況下,可以通過增減插件或修改插件來調(diào)整應(yīng)用程序的功能8,9。開發(fā)支持插件功能的應(yīng)用程序必須解決一個(gè)問題就是如何在主程序與插
26、件間正確地互相通信。為了在主程序與插件之間能正確地互相通信,應(yīng)該先制定一套通信標(biāo)準(zhǔn),這套通信標(biāo)準(zhǔn)就是接口。主程序與插件只能通過制訂好的接口進(jìn)行通信。軟件開發(fā)中,接口只是定義功能并規(guī)定調(diào)用功能的形式,而不包含功能的實(shí)現(xiàn)10,11。主程序中,插件管理部分用于管理插件的安裝和刪除,并將所有安裝插件的信息保存到適合的地方,例如保存到注冊(cè)表或配置文件中。主程序啟動(dòng)時(shí),根據(jù)插件的配置信息加載插件模塊,然后獲得插件的輸出函數(shù)或輸出類的指針并加以保存,如果需要的話,可以向主程序增加界面接口元素,如菜單、工具條按鈕等。在主程序中當(dāng)點(diǎn)擊與插件相關(guān)聯(lián)的接口元素時(shí),就會(huì)觸發(fā)插件調(diào)用函數(shù),在插件調(diào)用函數(shù)中使用主函數(shù)種所
27、保存的插件信息調(diào)用插件中實(shí)現(xiàn)的功能。在調(diào)用插件輸出函數(shù)時(shí)也可以把主程序中實(shí)現(xiàn)的接口傳遞給插件方12。運(yùn)用插件技術(shù)可以開發(fā)出伸縮性良好,便于維護(hù)的應(yīng)用程序。它著名的應(yīng)用實(shí)例有:媒體播放器Winamp 、微軟的網(wǎng)絡(luò)瀏覽器Internet Explore 等。這些應(yīng)用程序的一個(gè)突出優(yōu)點(diǎn)是用戶能根據(jù)自己的需要擴(kuò)充程序的功能,例如通過在Winamp 中安裝音樂視覺化插件就可以邊聽樂曲邊欣賞根據(jù)樂曲生成的圖形13。1.3.2 類加載委托模型以及空間可見性1.3.2.1 類加載委托模型 為了實(shí)現(xiàn)加載類時(shí)的安全性,避免惡意類代碼的偽造,類加載器組件采用了一種特殊的類加載模型委托模型。除Bootstrap 類加
28、載以外的每一個(gè)類加載器,都有一個(gè)“雙親”類加載器,在某個(gè)特定的- - 4類加載器試圖以常用方式加載類型以前,它會(huì)默認(rèn)的將這個(gè)任務(wù)“委派”給它的雙親,請(qǐng)求它的雙親來加載這個(gè)類型。這個(gè)雙親再依次請(qǐng)求它自己的雙親來加載這個(gè)類型。這個(gè)委派的過程一直向上繼續(xù),直到達(dá)到Bootstrap 類加載器,通常Bootstrap 類加載是委派鏈中的最后一個(gè)類加載器,如果一個(gè)類加載器的雙親類加載器有能力來加載這個(gè)類型,則這個(gè)類加載器返回這個(gè)類型。否則,這個(gè)類加載器試圖自己來加載這個(gè)類型14,15。1.3.2.2 類加載空間的可見性 每一個(gè)類加載器作為獨(dú)立的實(shí)體都具有自己的類加載空間,在同一個(gè)類加載空間中的類是相互認(rèn)
29、識(shí)的,可以互相調(diào)用。而不再同一加載空間的類就如同陌生人一樣互不認(rèn)識(shí),互不來往。由不同的類加載器加載的類,即使是同一個(gè)類,由于其位于兩個(gè)不同的空間世界,對(duì)于虛擬機(jī)來說也是不同的,盡管從邏輯上來說它們是同一個(gè)。由類加載委托模型可知,類加載器通過一種層次的形狀相互關(guān)聯(lián),范圍從簡(jiǎn)單的鏈狀到復(fù)雜的多分枝樹。加載的順序是層層委派,直到樹根。這種層次狀導(dǎo)致了一種命名空間的嵌套,這種嵌套的命名空間控制著加載類的可見性。所謂可見性就是一個(gè)類加載器空間可被看見的程度,也即有多少類加載器可以看到目標(biāo)類加載器的空間16。1.3.3 國外研究現(xiàn)狀Siegfried Handschu提出了一種基于Plugin 的構(gòu)件框架
30、即Ont-O-Mat 。此框架實(shí)現(xiàn)了通過方便的擴(kuò)展來增加、刪除、更新功能的一種機(jī)制,從而快速的應(yīng)對(duì)需求的頻繁變化17。此框架提供一個(gè)靈活的插件和服務(wù)機(jī)制,構(gòu)件可以以一種可插拔的方式動(dòng)態(tài)的插入到核心框架中。當(dāng)一個(gè)新的構(gòu)件被注冊(cè)時(shí),插件機(jī)制可以通知每一個(gè)被安裝構(gòu)件。通過服務(wù)機(jī)制每一個(gè)構(gòu)件可以發(fā)現(xiàn)以及利用由其他構(gòu)件提供的服務(wù),服務(wù)的形態(tài)以接口向外暴漏。此框架帶來了構(gòu)件化、高度可擴(kuò)展性、靈活性以及松散耦合的優(yōu)點(diǎn)17。然而,一方面他對(duì)由此框架衍生的構(gòu)件化沒有一個(gè)清晰地定義,對(duì)構(gòu)件的元數(shù)據(jù)、分類等也沒有提及,更沒有詳細(xì)的闡述構(gòu)件與并行開發(fā)的關(guān)系。另一方面對(duì)于構(gòu)件的版本控制、匹配沒有具體的闡述。Robert
31、 Chatley 等人也使用插件思想開發(fā)了一種通用的框架以便可以快速的、動(dòng)態(tài)的構(gòu)建靈活而復(fù)雜的系統(tǒng)。他們提出對(duì)于升級(jí)長(zhǎng)時(shí)間運(yùn)行的程序方面,使用傳統(tǒng)的軟件模型或者甚至是基于組件的開發(fā)都不能正常的、容易的改變系統(tǒng)的配置在不需要重起應(yīng)用的情況下。在插件的配置方面,他們提- - 5出了一種鏈?zhǔn)脚渲茫匆粋€(gè)插件可以成為另一個(gè)插件的宿主。換句話說,一個(gè)插件可以具有雙重身份,宿主(能夠使插件插入的實(shí)體 和插件(擴(kuò)展實(shí)體 。在插件扮演宿主的角色時(shí),允許其他插件作為自己的擴(kuò)展物而插入18。然而,在他們的框架設(shè)計(jì)時(shí),一方面對(duì)于插件的注冊(cè)采用的是編碼形式即需要開發(fā)人員編寫一定的注冊(cè)代碼,不僅增加了開發(fā)人員的編碼工作
32、量,而且一定程度上降低了對(duì)變化的應(yīng)對(duì)能力。另一方面在paper 中對(duì)插件的注冊(cè)進(jìn)行了比較詳細(xì)地闡述,但對(duì)于插件刪除、更新卻沒有詳細(xì)的提及,同時(shí)對(duì)構(gòu)件無論在邏輯上還是物理上都也沒有一個(gè)統(tǒng)一的論述。在應(yīng)用方面,Peter Braun等人通過采用插件以及動(dòng)態(tài)的思想實(shí)現(xiàn)了一個(gè)關(guān)于移動(dòng)代理的工具集。在此工具集中,擁有很多實(shí)用的工具,比如代理遷移、通信、驗(yàn)證、授權(quán)、安全等,它們作為插件存在于工具集中19。Dan Decasper 等人認(rèn)為隨著協(xié)議的快速發(fā)展,以一種增量的方式動(dòng)態(tài)的升級(jí)路由器軟件變得越來越重要。他們采用插件和動(dòng)態(tài)的思想在NetBSD 操作系統(tǒng)上設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)高性能的、構(gòu)件化的、可擴(kuò)展服務(wù)的
33、路由器軟件架構(gòu),此架構(gòu)允許在運(yùn)行時(shí)動(dòng)態(tài)的添加以及配置插件20。1.3.4 國內(nèi)研究現(xiàn)狀陳方明、陳奇認(rèn)為軟件重用一直是困擾軟件工作者的一個(gè)話題,從一開始的面向過程編程方式,到面向?qū)ο缶幊?,直到現(xiàn)在的面向組件的編程思想,無不是為了提高軟件開發(fā)的效率和軟件代碼的可重用性。而插件作為很多通用或?qū)S贸绦蛱峁┙o應(yīng)用層用戶進(jìn)行二次開發(fā)的一種程序接口,其主要目的就是為了提高軟件的重用性和可擴(kuò)展性21。他們對(duì)插件的體系結(jié)構(gòu),和宿主之間的關(guān)系進(jìn)行了一定的論述,并使用此思想將現(xiàn)有的eSpace 和Knonit 進(jìn)行了一定的集成。然而,他們并沒有對(duì)插件思想如何使整個(gè)工程的開發(fā)效率得到提高進(jìn)行闡述,也沒有對(duì)插件和構(gòu)件之
34、間的關(guān)系進(jìn)行闡述。王光平通過對(duì)構(gòu)件與構(gòu)件之間的關(guān)系即構(gòu)件連接件的研究,提出了一種稱為OO 軟件總線的概念。他認(rèn)為計(jì)算機(jī)系統(tǒng)的硬件總線是計(jì)算機(jī)各個(gè)部件間、輸入輸出設(shè)備間傳送數(shù)據(jù)信息、地址信息和控制信息的公共通道。通過在其上插接多種類型和多塊通用標(biāo)準(zhǔn)的接口構(gòu)件,能夠組成功能強(qiáng)大的更加完美的計(jì)算機(jī)系統(tǒng)。而在軟件中,各個(gè)構(gòu)件之間的連接拓?fù)潢P(guān)系也應(yīng)該像計(jì)算機(jī)系統(tǒng)的硬件總線一樣,通過在其上掛接不同的構(gòu)件以便快速的形成完整的系統(tǒng)22。然而,他只是在理論上定性的對(duì)這種軟件總線進(jìn)行了闡述,而- - 6對(duì)于此種結(jié)構(gòu)是否能夠在實(shí)際中得到應(yīng)用沒有提及。在應(yīng)用方面,韓宏等人通過采用插件式思想開發(fā)一套網(wǎng)絡(luò)安全集成防護(hù)框架
35、,此框架通過動(dòng)態(tài)的添加插件,能夠集成管理不同類型的防火墻和入侵檢測(cè)系統(tǒng),通過框架的抽象,提供了一種告警自動(dòng)響應(yīng)的機(jī)制23。鮑亮、陳平通過基于插件的技術(shù)提出了一種應(yīng)用系統(tǒng)異構(gòu)數(shù)據(jù)集成方案。該方案以數(shù)據(jù)訪問插件為接口,獲取不同系統(tǒng)的異構(gòu)數(shù)據(jù),并轉(zhuǎn)換為集成業(yè)務(wù)的統(tǒng)一數(shù)據(jù)格式,在此基礎(chǔ)上,采用集成框架對(duì)插件行為的統(tǒng)一管理,動(dòng)態(tài)的控制集成系統(tǒng)的數(shù)據(jù)訪問能力,具有很強(qiáng)的靈活性和動(dòng)態(tài)特性24。1.4 課題研究?jī)?nèi)容及論文結(jié)構(gòu)1.4.1 課題研究?jī)?nèi)容由于現(xiàn)代需求(功能、市場(chǎng)、法律、法規(guī)等 變動(dòng)的非常頻繁,為了滿足打印機(jī)生產(chǎn)廠商盡可能大的縮短產(chǎn)品研發(fā)周期的愿望,需要一種和傳統(tǒng)開發(fā)方式不同的開發(fā)模式,使其能夠以一種
36、可插拔的方式動(dòng)態(tài)的添加、更新、刪除功能以便快速的應(yīng)對(duì)頻繁變化的需求。本課題的研究目標(biāo)是提供一種基于構(gòu)件的可插拔服務(wù)模型框架,使其能夠在統(tǒng)一構(gòu)件定義的前提下;在服務(wù)作為構(gòu)件間動(dòng)態(tài)交互機(jī)制的基礎(chǔ)下,提供構(gòu)件的動(dòng)態(tài)可插拔性。因此主要圍繞上述問題來展開研究工作,主要工作如下:(1 提出一種分層的構(gòu)件服務(wù)模型,闡述分層的原則,每一層的職責(zé),每一層在整個(gè)分層中的位置以及每一層和其他層的關(guān)系。(2 闡述每一層的具體職責(zé)。該層包括哪些組件,每個(gè)組件在該層中扮演什么角色,以及每個(gè)組件具有哪些屬性和特征。(3 闡述模型如何實(shí)現(xiàn)服務(wù)的發(fā)布、注冊(cè)、獲取及構(gòu)件之間動(dòng)態(tài)交互。(4 實(shí)現(xiàn)此模型的一個(gè)最小核心集框架。包括各個(gè)
37、層組件的設(shè)計(jì)與實(shí)現(xiàn)、組件之間關(guān)系的設(shè)計(jì)與實(shí)現(xiàn)等。(5 比較使用框架模型的開發(fā)模式和傳統(tǒng)開發(fā)模式,分析它們之間的不同并闡述此開發(fā)模式在構(gòu)件化、并行性、動(dòng)態(tài)性、結(jié)構(gòu)擴(kuò)展性等方面的優(yōu)點(diǎn)。(6 對(duì)框架進(jìn)行功能性和并發(fā)性方面的測(cè)試,并使用此框架設(shè)計(jì)實(shí)現(xiàn)打印機(jī)界面的Flash 顯示功能。- - 7 1.4.2 論文結(jié)構(gòu)論文共分4章。第1章為緒論,闡述了課題研究背景及來源、課題研究的目的和意義、國內(nèi)外研究現(xiàn)狀,同時(shí)介紹了本文的主要內(nèi)容。第2章為基于構(gòu)件的可插拔服務(wù)模型,提出了一種分層的模型,并簡(jiǎn)要描述了各個(gè)層是什么以及擁有的職責(zé),同時(shí)提出了實(shí)現(xiàn)各個(gè)層時(shí)需要注意的問題以及實(shí)施難點(diǎn)。第3章為可插拔服務(wù)模型框架的
38、設(shè)計(jì)與實(shí)現(xiàn),具體闡述了各個(gè)層中重要組件的概念定義、關(guān)聯(lián)關(guān)系以及動(dòng)態(tài)功能的設(shè)計(jì)方法,并對(duì)一些重要的設(shè)計(jì)思想進(jìn)行了較深入的剖析。同時(shí),較詳細(xì)的闡述了此開發(fā)方式在并行性、動(dòng)態(tài)性以及結(jié)構(gòu)擴(kuò)展性等方面較傳統(tǒng)方式的優(yōu)點(diǎn)。第4章為框架的測(cè)試和具體應(yīng)用。對(duì)框架在功能性、并發(fā)性方面進(jìn)行了測(cè)試闡述,并描述了如何使用框架來開發(fā)打印機(jī)界面的Flash 顯示功能。- - 8第2章 基于構(gòu)件的可插拔服務(wù)模型2.1 系統(tǒng)需求所謂多功能打印機(jī)(簡(jiǎn)稱MFP 就是集合了打印、復(fù)印、掃描、傳真等多種功能的集成化辦公設(shè)備。它具有一些特殊的功能,如網(wǎng)絡(luò)、雙面、裝訂等。既能節(jié)省空間又能提高工作效率,是現(xiàn)代化辦公環(huán)境不可缺少的組成部分。整
39、個(gè)多功能打印機(jī)控制系統(tǒng)是作為打印機(jī)的控制程序內(nèi)嵌到機(jī)器控制芯片中的。此控制系統(tǒng)根據(jù)打印機(jī)的功能又被劃分為5個(gè)子系統(tǒng),即打印子系統(tǒng)、掃描子系統(tǒng)、復(fù)印子系統(tǒng)、傳真子系統(tǒng)、以及顯示子系統(tǒng)。每個(gè)子系統(tǒng)又包含若干模塊,形成一個(gè)樹形結(jié)構(gòu)。整個(gè)系統(tǒng)一方面需要和底層操作系統(tǒng)打交道(調(diào)用系統(tǒng)函數(shù)),另一方面需要在高層具有良好的抽象特性,因此需要兩種抽象層次不同的語言來表達(dá)這兩方面。作為第一批高級(jí)語言的C 語言具有很好的和底層操作系統(tǒng)交互的特性;作為最新一批高級(jí)語言代表的Java 語言具有很強(qiáng)的業(yè)務(wù)抽象功能?;谝陨蟽牲c(diǎn),系統(tǒng)采用Java 和C 作為最終的實(shí)現(xiàn)語言。C 語言負(fù)責(zé)底層驅(qū)動(dòng)的開發(fā)比如HDD drive
40、r ,SD driver 等。Java 負(fù)責(zé)上層業(yè)務(wù)邏輯以及界面顯示的表達(dá)比如打印業(yè)務(wù),掃描業(yè)務(wù)等。為了完成一個(gè)特定的功能,需要連通系統(tǒng)的一個(gè)垂直切面(從高層到底層),因此就需要Java 和C 進(jìn)行一定的互操作,由于Java 和C 屬于不同的程序語種,需要在它們之間架起一座橋梁,使其能夠互相通信以實(shí)現(xiàn)特定的系統(tǒng)功能,這座橋梁就是native program 。系統(tǒng)的技術(shù)結(jié)構(gòu)如圖2-1所示。由于多功能打印機(jī)需要提供一系列服務(wù),而每個(gè)服務(wù)在一定時(shí)期內(nèi)又相對(duì)不確定,為了能夠快速的應(yīng)對(duì)需求的變化,需要能夠在最短的時(shí)間內(nèi)開發(fā)新的服務(wù)并將新的服務(wù)集成到系統(tǒng)中使其能夠正常的運(yùn)行。因此,為了使新的服務(wù)能夠動(dòng)態(tài)
41、的加入系統(tǒng)以及使舊有的服務(wù)動(dòng)態(tài)的從系統(tǒng)中撤銷;為了使系統(tǒng)能夠獲得最大的可擴(kuò)展性和動(dòng)態(tài)性,需要一個(gè)基于構(gòu)件的可插拔服務(wù)模型框架作為支撐。 - - 9圖2-1 MFP技術(shù)結(jié)構(gòu)圖2.2 四層模型2.2.1 靜態(tài)結(jié)構(gòu)任何軟件的開發(fā)都是需要一定模型的。在開發(fā)過程方面,無論是過去還是現(xiàn)在,都具有很多各具特色的模型。比如傳統(tǒng)的瀑布模型、螺旋模型;現(xiàn)代的比較流行的統(tǒng)一過程模型、敏捷過程模型25。在軟件設(shè)計(jì)方面,具有傳統(tǒng)的過程式模型、現(xiàn)在的主流的面向?qū)ο竽P?、新型的?gòu)件化、服務(wù)化模型26。在軟件估算方面,有COCOMO 模型、FP 模型、不確定性椎模型27。在過程改進(jìn)方面,有能力成熟度模型等等。這些模型不僅可以
42、真實(shí)的刻畫某一領(lǐng)域某一方面的本質(zhì)以便人們可以清醒的認(rèn)識(shí)問題,而且模型具有一定的指導(dǎo)作用,可以使人們沿著正確的道路前行。為了能夠快速的應(yīng)對(duì)需求的頻繁變化,需要軟件具有一種“即插即用”的特效即能夠在系統(tǒng)依然運(yùn)行的情況下,動(dòng)態(tài)的更換零組件。為了達(dá)到這種效果,需要一種特別的框架作為基礎(chǔ)設(shè)施,而框架實(shí)施需要一定的模型作為支撐。為了開發(fā)這種可插拔框架,提出一種分層的模型,如圖2-2所示。從圖2-2中,可以看到整個(gè)模型分為四個(gè)層次,分別為執(zhí)行環(huán)境層、構(gòu)件層、生命周期管理層以及服務(wù)管理層。每個(gè)層次在模型中具有各自特定的職責(zé)。- -10 (1 執(zhí)行環(huán)境層 主要描述的是構(gòu)件或服務(wù)運(yùn)行的基礎(chǔ)設(shè)施,提供一個(gè)統(tǒng)一的執(zhí)行
43、環(huán)境,處理一些底層的技術(shù),比如和宿主操作系統(tǒng)、文件系統(tǒng)的交互以及進(jìn)程、線程管理等等,屬于基礎(chǔ)設(shè)施的范疇。(2 構(gòu)件層 此層建立在執(zhí)行環(huán)境層之上,是這四層中最重要的一層。它定義了一套定義、管理以及加載構(gòu)件的策略。構(gòu)件是這個(gè)模型中最小的構(gòu)建塊,既是最小的開發(fā)單元也是最小的部署單元。構(gòu)件與構(gòu)件之間的靜態(tài)依賴通過一種特殊的方式提供。生命周期管理層以及服務(wù)管理層都是在它的基礎(chǔ)上建立的。(3 生命周期管理層 此層建立在構(gòu)件層之上主要負(fù)責(zé)管理構(gòu)件的生命周期包括構(gòu)件的安裝、開啟、更新、停止,以及在生命周期中產(chǎn)生的狀態(tài)以及狀態(tài)的轉(zhuǎn)換,同時(shí)提供一套構(gòu)件生命周期事件的發(fā)布訂閱模型,方便事件的及時(shí)傳達(dá)以及事件的及時(shí)處
44、理。(4 服務(wù)管理層 此層建立在生命周期管理層和構(gòu)件層之上,主要負(fù)責(zé)服務(wù)的注冊(cè)、發(fā)布、撤銷以及構(gòu)件與構(gòu)件之間的動(dòng)態(tài)交互。此層提供一個(gè)全局的服務(wù)注冊(cè)器,負(fù)責(zé)服務(wù)的一切日常操作并為構(gòu)件之間的交互提供了一個(gè)協(xié)作模型。此層和構(gòu)件層 的關(guān)系最為密切。圖2-2 四層模型2.2.2 動(dòng)態(tài)結(jié)構(gòu)盡管模型的各個(gè)層次職責(zé)清晰,但是為了成為一個(gè)完整的整體,不僅需要在靜態(tài)結(jié)構(gòu)上具有很強(qiáng)的內(nèi)聚力,還需要在動(dòng)態(tài)結(jié)構(gòu)上具有平滑的交互機(jī)制,以便使其能夠達(dá)到和諧統(tǒng)一。各個(gè)層次之間的交互如圖2-3所示。- -11 從圖2-3中可以看到,不同于模型的是多出了Block 的概念。在整個(gè)框架中,Block 成為了模型中的最小開發(fā)單元以及
45、最小部署單元在框架實(shí)現(xiàn)中的軟件實(shí)體。Block 以類的形式加載到構(gòu)件層中并運(yùn)行在執(zhí)行環(huán)境層中。生命周期管理層控制著構(gòu)件層中加載的Block 的生命周期,比如安裝Block 、開啟Block ,停止Block 等。由Block 發(fā)布的一系列服務(wù)注冊(cè)在服務(wù)管理層中,服務(wù)管理層控制著服務(wù)的注冊(cè)和撤銷,但服務(wù)的生命周期伴隨著Block 的生命周期由生命周期管理層控制。圖2-3 各個(gè)層之間的交互2.3 各個(gè)層實(shí)施的難點(diǎn)(1 執(zhí)行環(huán)境層 由于Java 的興起,使用Java 的人越來越多。尤其是它的跨平臺(tái)特性更是受到業(yè)界各種人以及團(tuán)體的關(guān)注。它能夠使程序在不同的平臺(tái)上運(yùn)行而不用重新編譯,這樣的特性正好符合這
46、里的需求。這個(gè)服務(wù)模型在執(zhí)行層次上的起初設(shè)想就是希望能夠消除各個(gè)平臺(tái)帶來的差異,使這一模型能夠建立在一個(gè)統(tǒng)一的虛擬平臺(tái)下,實(shí)現(xiàn)跨平臺(tái)的特性。因此,選用Java 作為底層執(zhí)行環(huán)境就非常的合適。同時(shí)Java 虛擬機(jī)提供的特有的類加載特性(鏈?zhǔn)轿心P?、?dòng)態(tài)加載類、類加載的開放性),也是需用它的一個(gè)原因。(2 構(gòu)件層 該層的主要難點(diǎn)在于如何來定義構(gòu)件,以一種什么樣的粒度來表示構(gòu)件,以及如何來定義構(gòu)件的獨(dú)立性,開放性等等。在這層中需要說明構(gòu)件的加載機(jī)制,如何利用Java 的類加載機(jī)制來定義構(gòu)件的加載機(jī)制。將要遇到的關(guān)鍵點(diǎn):一是構(gòu)件類加載器的設(shè)計(jì)。是平面型還是層次性,- - 12 是一個(gè)構(gòu)件一個(gè)類加載器,還是多個(gè)構(gòu)件公用一個(gè)類加載器,還是這個(gè)模型就只有一個(gè)全局的類加載器;二是加載構(gòu)件的時(shí)候,是依據(jù)什么策略來加載,加載的順序是什么。三是構(gòu)件是否有子構(gòu)件。如果有,父構(gòu)件如何和子構(gòu)件進(jìn)行連接,子構(gòu)件的獨(dú)立性有多強(qiáng)。四是如何定義和設(shè)計(jì)構(gòu)件之間的依賴關(guān)系,是以細(xì)粒度類的形式依賴還是以其它粗粒度的形式依賴。(3 生命周期管理層 該層的難點(diǎn)在于如何定義構(gòu)件的安裝、啟動(dòng)、更新、停止。如何定義構(gòu)件的狀態(tài)以及隨著構(gòu)件執(zhí)行的行為的不同其狀態(tài)的變遷狀況。構(gòu)件是否有上下文,如果有,如何來定義構(gòu)件的上下文
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度山西省高校教師資格證之高等教育心理學(xué)過關(guān)檢測(cè)試卷B卷附答案
- 通信行業(yè):6G概念及遠(yuǎn)景白皮書
- 企業(yè)融資協(xié)議2024格式
- 2024臨時(shí)活動(dòng)場(chǎng)地租賃協(xié)議樣本
- 2024快遞業(yè)務(wù)重要客戶服務(wù)協(xié)議
- 2024手工禮品定制協(xié)議
- 2024年施工協(xié)議追加條款格式
- 二手房銷售預(yù)訂協(xié)議格式 2024
- 2024年度新款手機(jī)租賃協(xié)議文本
- 2024年建筑項(xiàng)目分包協(xié)議樣本
- 建設(shè)銀行員工勞動(dòng)合同
- 浙江大學(xué)學(xué)生社團(tuán)手冊(cè)(08)
- 水利水電工程專業(yè)畢業(yè)設(shè)計(jì)(共98頁)
- 醫(yī)院醫(yī)用氣體管路的設(shè)計(jì)計(jì)算(2014)
- 人教版統(tǒng)編高中語文“文學(xué)閱讀與寫作”學(xué)習(xí)任務(wù)群編寫簡(jiǎn)介
- SQE質(zhì)量月報(bào)參考格式
- 初中物理實(shí)驗(yàn)室課程表
- CTQ-2型支線接觸網(wǎng)故障智能切除裝置概述
- 砂石料取樣試驗(yàn)標(biāo)準(zhǔn)與規(guī)范
- 運(yùn)營管理已完畢第七講庫存
- 羅馬數(shù)字對(duì)照表
評(píng)論
0/150
提交評(píng)論