專利名稱:一種實現(xiàn)應(yīng)用組件熱插拔的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及WEB管理系統(tǒng)技術(shù)領(lǐng)域,尤其涉及一種實現(xiàn)應(yīng)用組 件熱插拔的方法和裝置。
背景技術(shù):
在使用.net技術(shù)開發(fā)的大型基于互聯(lián)網(wǎng)信息服務(wù)(IIS, Internet information Server)的WEB管理系統(tǒng)中,會有上千個應(yīng)用組件存在。 對于這些應(yīng)用組件,存在進行動態(tài)更新的需求。例如,在基于IIS 的WEB管理系統(tǒng)的開發(fā)測試的過程中,開發(fā)人員或測試人員在使用 WEB服務(wù)器時,需要經(jīng)常地進行更新應(yīng)用組件來進行測試和驗證; 而在客戶需要不間斷運行的實際應(yīng)用(如大型的商業(yè)、金融證券等
網(wǎng)站中)過程中,需要對應(yīng)用組件進行更新?lián)Q代。
但是在現(xiàn)有的方案中,必須要重新啟動IIS來進行應(yīng)用組件的 更新。重啟IIS時,需要重新加載所有組件,所以啟動過程比較緩 慢,同時再還原到原操作界面并錄入相應(yīng)的測試或驗證數(shù)據(jù)更需要
花費一定的時間。另外,在客戶需要不間斷運行的應(yīng)用中,重啟ns
會中斷客戶端當(dāng)前運行的所有操作。
發(fā)明內(nèi)容
本發(fā)明提供了實現(xiàn)應(yīng)用組件熱插拔的方法和裝置,本發(fā)明的技
術(shù)方案不需要重啟ns,也不需要中斷客戶端的操作。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實現(xiàn)的 本發(fā)明公開了一種實現(xiàn)應(yīng)用組件熱插拔方法,該方法包括 將基于IIS的應(yīng)用組件分為弱依賴組件和強依賴組件;其中,
弱依賴組件是與其他應(yīng)用組件沒有依賴關(guān)系的應(yīng)用組件,強依賴組
件是與其他應(yīng)用組件有依賴關(guān)系的應(yīng)用組件;
對于弱依賴組件,將弱依賴組件鏡像到內(nèi)存中,得到對應(yīng)鏡像組件;當(dāng)在弱依賴組件更新時,重新將更新后的弱依賴組件鏡像到 內(nèi)存中,得到更新后的對應(yīng)鏡像組件;
對于強依賴組件,根據(jù)強依賴組件之間的相互依賴關(guān)系,將強 依賴組件分為不同的組件組,將不同的組件組加載到不同的應(yīng)用程 序域中;當(dāng)一個強依賴組件更新時,卸載該強依賴組件所在的組件 組所對應(yīng)的應(yīng)用程序域,并將該更新后的強依賴組件所在的組件組 加載到新建的應(yīng)用程序域中;
當(dāng)收到調(diào)用指定應(yīng)用組件的請求,判斷該指定應(yīng)用組件是弱依 賴組件還是強依賴組件;如果是弱依賴組件,則調(diào)用內(nèi)存中的與該 指定應(yīng)用組件對應(yīng)的鏡像組件;如果是強依賴組件,則在對應(yīng)的應(yīng) 用程序域中調(diào)用該指定應(yīng)用組件。
本發(fā)明公開了一種實現(xiàn)應(yīng)用組件熱插拔方法,該方法適用于基 于IIS的弱依賴組件的熱插拔,所述弱依賴組件是與其他應(yīng)用組件 沒有依賴關(guān)系的應(yīng)用組件,該方法包括
將弱依賴組件鏡像到內(nèi)存中,得到對應(yīng)鏡像組件;當(dāng)在弱依賴 組件更新時,重新將更新后的弱依賴組件鏡像到內(nèi)存中,得到更新 后的對應(yīng)鏡像組件;
當(dāng)收到調(diào)用指定弱依賴組件的請求時,調(diào)用內(nèi)存中的與該指定 弱依賴組件對應(yīng)的鏡像組件。
本發(fā)明公開了一種應(yīng)用組件熱插拔方法,該方法適用于基于 IIS的強依賴組件的熱插拔,所述強依賴組件是與其他應(yīng)用組件有 依賴關(guān)系的應(yīng)用組件,該方法包括
根據(jù)強依賴組件之間的相互依賴關(guān)系,將強依賴組件分為不同 的組件組,將不同的組件組加載到不同的應(yīng)用程序域中;當(dāng)一個強 依賴組件更新時,卸載該強依賴組件所在的組件組所對應(yīng)的應(yīng)用程 序域,并將該更新后的強依賴組件所在的組件組加載到新建的應(yīng)用 程序域中;
當(dāng)收到調(diào)用指定強依賴組件的請求時,在相應(yīng)的應(yīng)用程序域中 調(diào)用該指定強依賴組件。
本發(fā)明公開了一種實現(xiàn)應(yīng)用組件熱插拔的裝置,基于iis的應(yīng)用組件分被分為弱依賴組件和強依賴組件,其中,弱依賴組件是與 其他應(yīng)用組件沒有依賴關(guān)系的應(yīng)用組件,強依賴組件是與其他應(yīng)用 組件有依賴關(guān)系的應(yīng)用組件,該裝置包括代理請求模塊、組件管 理模塊、域管理模塊、第一監(jiān)控模塊和第二監(jiān)控模塊;
代理請求模塊,用于在收到調(diào)用指定應(yīng)用組件的請求時,判斷 指定應(yīng)用組件是弱依賴組件還是強依賴組件;如果是弱依賴組件,
則將請求轉(zhuǎn)發(fā)給組件管理模塊,如果是強依賴組件,則將請求轉(zhuǎn)發(fā)
給域管理模塊;
組件管理模塊,用于將弱依賴組件鏡像到內(nèi)存中,得到對應(yīng)鏡 像組件,并在收到來自第一監(jiān)控模塊的弱依賴組件更新通知時,重 新將更新后的弱依賴組件鏡像到內(nèi)存中;用于在接收到所述請求 時,將所述請求轉(zhuǎn)換為鏡像組件調(diào)用請求,調(diào)用內(nèi)存中的與該指定 應(yīng)用組件對應(yīng)的鏡像組件;
第一監(jiān)控模塊,用于對弱依賴組件進行監(jiān)控,當(dāng)在弱依賴組件 更新時,向組件管理模塊發(fā)送弱依賴組件更新通知;
域管理模塊,用于根據(jù)強依賴組件之間的相互依賴關(guān)系,將強 依賴組件分為不同的組件組,將不同的組件組加載到不同的應(yīng)用程 序域中;用于在接收到來自第二監(jiān)控模塊的強依賴組件更新通知 時,卸載該強依賴組件所在的組件組所對應(yīng)的應(yīng)用程序域,并將該 更新后的強依賴組件所在的組件組加載到新建的應(yīng)用程序域中;用 于在接收到所述請求時,將所述請求轉(zhuǎn)換為代理調(diào)用請求,在對應(yīng) 的應(yīng)用程序域中調(diào)用該指定應(yīng)用組件;
第二監(jiān)控模塊,用于對強依賴組件進行監(jiān)控,當(dāng)一個強依賴組 件更新時,向域管理模塊發(fā)送強依賴組件更新通知。
本發(fā)明公開了一種實現(xiàn)應(yīng)用組件熱插拔的裝置,該裝置用于對 基于IIS的弱依賴組件實現(xiàn)熱插拔,其中,所述弱依賴組件是與其 他應(yīng)用組件沒有依賴關(guān)系的應(yīng)用組件,該裝置包括組件管理模塊 和監(jiān)控模塊;
組件管理模塊,用于將弱依賴組件鏡像到內(nèi)存中,得到對應(yīng)鏡 像組件,并在收到來自監(jiān)控模塊的弱依賴組件更新通知時,重新將更新后的弱依賴組件鏡像到內(nèi)存中;用于在接收調(diào)用指定弱依賴組 件的請求時,將所述請求轉(zhuǎn)換為鏡像組件調(diào)用請求,調(diào)用內(nèi)存中的 與該指定弱依賴組件對應(yīng)的鏡像組件;
監(jiān)控模塊,用于對弱依賴組件進行監(jiān)控,當(dāng)在弱依賴組件更新 時,向組件管理模塊發(fā)送弱依賴組件更新通知。
本發(fā)明公開了一種實現(xiàn)應(yīng)用組件熱插拔的裝置,該裝置用于對 基于IIS的強依賴組件實現(xiàn)熱插拔,其中,所述強依賴組件是與其 他應(yīng)用組件有依賴關(guān)系的應(yīng)用組件,該裝置包括域管理模塊和監(jiān) 控模塊;
域管理模塊,用于根據(jù)強依賴組件之間的相互依賴關(guān)系,將強 依賴組件分為不同的組件組,將不同的組件組加載到不同的應(yīng)用程 序域中;用于在接收到來自監(jiān)控模塊的強依賴組件更新通知時,卸 載該強依賴組件所在的組件組所對應(yīng)的應(yīng)用程序域,并將該更新后 的強依賴組件所在的組件組加載到新建的應(yīng)用程序域中;用于在接 收到調(diào)用指定強依賴組件的請求時,將所述請求轉(zhuǎn)換為代理調(diào)用請 求,在對應(yīng)的應(yīng)用程序域中調(diào)用該指定強依賴組件;
監(jiān)控模塊,用于對強依賴組件進行監(jiān)控,當(dāng)一個強依賴組件更 新時,向域管理模塊發(fā)送強依賴組件更新通知。
由上述技術(shù)方案可見,本發(fā)明的技術(shù)方案是對于弱依賴組件, 將其鏡像到內(nèi)存中,當(dāng)弱依賴組件更新時,重新將更新后的弱依賴 組件鏡像到內(nèi)存中,得到更新后的對應(yīng)鏡像組件,當(dāng)需要調(diào)用該弱 依賴組件時,調(diào)用其對應(yīng)的鏡像組件;而對于強依賴組件,根據(jù)相 互依賴關(guān)系分為不同的組件組,將不同的組件組加載到不同的應(yīng)用 程序域中,當(dāng)一個強依賴組件更新時,卸載該強依賴組件所在的組 件組所對應(yīng)的應(yīng)用程序域,并將該更新后的強依賴組件所在的組件 組加載到新建的應(yīng)用程序域中,當(dāng)需要調(diào)用強依賴組件時,在其對 應(yīng)的應(yīng)用程序域中的調(diào)用該強依賴組件。本發(fā)明的技術(shù)方案,能夠
對應(yīng)用組件進行熱插拔,無需像現(xiàn)有技術(shù)那樣重啟ns,也無需中
斷客戶端的操作。
9圖l是本發(fā)明實施例一種實現(xiàn)應(yīng)用組件熱插拔方法的流程圖2是本發(fā)明實施例中的弱依賴組件的示意圖; 圖3是本發(fā)明實施例中的強依賴組件的示意圖4是本發(fā)明實施例中的對弱依賴組件進行熱插拔的示意圖; 圖5是本發(fā)明實施例中的對強依賴組件進行熱插拔的示意圖; 圖6是本發(fā)明實施例中的實現(xiàn)弱依賴組件和強依賴組件熱插拔
的綜合流程示意圖7是本發(fā)明一種實現(xiàn)應(yīng)用組件熱插拔的裝置的第一實施例結(jié)
構(gòu)框圖8是本發(fā)明一種實現(xiàn)應(yīng)用組件熱插拔的裝置的第二實施例結(jié) 構(gòu)框圖9是本發(fā)明一種實現(xiàn)應(yīng)用組件熱插拔的裝置的第三實施例結(jié) 構(gòu)框圖。
具體實施例方式
圖l是本發(fā)明實施例一種實現(xiàn)應(yīng)用組件熱插拔方法的流程圖。 如圖1所示,該方法包括
101、 將基于IIS的應(yīng)用組件分為弱依賴組件和強依賴組件;其 中,弱依賴組件是與其他應(yīng)用組件沒有依賴關(guān)系的應(yīng)用組件,強依 賴組件是與其他應(yīng)用組件有依賴關(guān)系的應(yīng)用組件。
102、 對于弱依賴組件,將弱依賴組件鏡像到內(nèi)存中,得到對 應(yīng)鏡像組件;當(dāng)在弱依賴組件更新時,重新將更新后的弱依賴組件 鏡像到內(nèi)存中,得到更新后的對應(yīng)鏡像組件。
103、 對于強依賴組件,根據(jù)強依賴組件之間的相互依賴關(guān)系, 將強依賴組件分為不同的組件組,將不同的組件組加載到不同的應(yīng) 用程序域中;當(dāng)一個強依賴組件更新時,卸載該強依賴組件所在的 組件組所對應(yīng)的應(yīng)用程序域,并將該更新后的強依賴組件所在的組 件組加載到新建的應(yīng)用程序域中;
104、 當(dāng)收到調(diào)用指定應(yīng)用組件的請求,判斷該指定應(yīng)用組件 是弱依賴組件還是強依賴組件;如果是弱依賴組件,則調(diào)用內(nèi)存中的與該指定應(yīng)用組件對應(yīng)的鏡像組件;如果是強依賴組件,則在對
應(yīng)的應(yīng)用程序域中調(diào)用該指定應(yīng)用組件。
通過圖l所示的技術(shù)方案,能夠?qū)贗IS的應(yīng)用組件進行熱插 拔,無需像現(xiàn)有技術(shù)那樣重啟IIS,也無需中斷客戶端的操作。
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合具 體實施例對本發(fā)明進行進一步的詳細(xì)描述。
在本發(fā)明中的對弱依賴組件和強依賴組件采用不同的方法實
現(xiàn)熱插拔。因此,首先對弱依賴組件和強依賴組件進行定義
弱依賴組件與其他應(yīng)用組件之間不存在依賴關(guān)系,但可能與
基礎(chǔ)組件存在依賴關(guān)系的應(yīng)用組件。這里的依賴關(guān)系具體指引用關(guān)
系,包括引用和被引用關(guān)系。
圖2是本發(fā)明實施例中的弱依賴組件的示意圖。如圖2所示,組
件A、組件B和組件C均只引用基礎(chǔ)組件,即依賴于基礎(chǔ)組件,但相 互之間沒有依賴關(guān)系。因此,組件A、組件B和組件C均為弱依賴組 件。弱依賴組件本身相對獨立,存在其自身的獨立性,比較容易在 組件上進行關(guān)系分離,使其不依賴其他的同類組件,僅依賴基礎(chǔ)組 件。如UI的Webpart組件就是弱依賴組件。
強依賴組件與其他應(yīng)用組件之間存在依賴關(guān)系的應(yīng)用組件。
圖3是本發(fā)明實施例中的強依賴組件的示意圖。如圖3所示,組 件X、組件Y和組件Z依賴基礎(chǔ)組件的同時,組件Z依賴組件Y,組 件Y依賴組件X。因此,組件X、組件Y和組件Z均為強依賴組件。 如后臺的實體業(yè)務(wù)組件一般是強依賴組件。
一般來說,后臺組件之間容易存在依賴關(guān)系,是強依賴組件, 而前臺組件之間沒有依賴關(guān)系,是弱依賴組件。
下面對弱依賴組件和強依賴組件實現(xiàn)熱插拔的方案分別進行 介紹。
一、弱依賴組件的熱插拔
在本發(fā)明實施例中,通過制作組件管理器和組件監(jiān)視器來統(tǒng)一 調(diào)用弱依賴組件,而不是像現(xiàn)有技術(shù)那樣直接通過HS進行弱依賴 組件的調(diào)用。組件管理器執(zhí)行本發(fā)明所述的組件調(diào)用處理,而不是直接調(diào)用組件,具體為由組件管理器先用字節(jié)流將前臺弱依賴組 件讀入到內(nèi)存中形成鏡像組件,并直接調(diào)用內(nèi)存中的鏡像組件;同 時組件監(jiān)視器對前臺的弱依賴組件的變化進行監(jiān)控,當(dāng)弱依賴組件 更新時,通知組件管理器;組件管理器收到組件監(jiān)視器的通知后, 重新加載更新后的弱依賴組件的內(nèi)存鏡像,并使用新的內(nèi)鏡像組件 來加載頁面。
圖4是本發(fā)明實施例中的對弱依賴組件進行熱插拔的示意圖。 如圖4所示,當(dāng)IIS通過Portal請求調(diào)用組件A (弱依賴組件)時,不 直接對組件A進行調(diào)用,而是通過組件管理器來將組件A的調(diào)用轉(zhuǎn) 換為鏡像組件A的調(diào)用。即調(diào)用組件A的請求發(fā)送到組件管理器時, 組件管理器轉(zhuǎn)為調(diào)用與組件A對應(yīng)的鏡像組件A。而組件監(jiān)視器實 時對弱依賴組件進行監(jiān)視,當(dāng)弱依賴組件有版本更新后,及時通知 組件管理器,組件管理器將更新后的組件讀為鏡像,得到新的鏡像 組件,并且之后的新的調(diào)用請求也會轉(zhuǎn)到新鏡像組件。
在圖4中,對圖2中的組件A的熱插拔方式進行了說明,而組件 B和組件C的熱插拔方式與組件A相同,這里不再復(fù)述。
可以看出,對于弱依賴組件,任何一個弱依賴組件的熱插拔, 均不影響其他組件的操作。但是,這里需要說明的是,對于基礎(chǔ)組 件,由于其被應(yīng)用組件所依賴,所以不能根據(jù)本方案進行熱插拔。
二、強依賴組件的熱插拔
由于內(nèi)存鏡像對于強依賴組件會導(dǎo)致類型上的不一致,因此內(nèi) 存鏡像的方式不能解決強依賴組件的熱插拔問題。
在本發(fā)明實施例中,使用.net的應(yīng)用程序域(APP Domain)來 分離一組強依賴組件。即有相互依賴關(guān)系的強依賴組件被分為一 組,形成組件組,例如,圖3中的組件X、 Y和Z就被劃分為一組。 應(yīng)用程序域之間的調(diào)用,使用類似跨進程的代理調(diào)用的方式來實現(xiàn) 隔離。當(dāng)需要更新一個強依賴組件時,將其所屬組件組的應(yīng)用程序 域卸載,然后重新建立新的應(yīng)用程序域,并將更新后的組件組加載 到的新建的應(yīng)用程序域中,則后續(xù)的新的調(diào)用轉(zhuǎn)為新的應(yīng)用程序的 調(diào)用,同時不影響其他組件的處理。由于要隔離調(diào)用方之間對于調(diào)用本身的技術(shù)實現(xiàn)隱藏,需要編 寫通用的代理層代碼,用來屏蔽內(nèi)部調(diào)用的區(qū)別,當(dāng)需要熱插拔時, 更換成代理調(diào)用,當(dāng)不使用熱插拔時,能走原有的正常的調(diào)用實現(xiàn) 方式。
圖5是本發(fā)明實施例中的對強依賴組件進行熱插拔的示意圖。
如圖5所示,強依賴組件X、 Y和Z相互之間有依賴關(guān)系,因此被分 為一組,稱為組件組l,而強依賴組件M、 L和N相互之間有依賴關(guān) 系,因此被分為一組,稱為組件組2。組件組l加載到應(yīng)用程序域l 中,組件組2加載到應(yīng)用程序域2中。當(dāng)IIS通過Portal請求調(diào)用某個 強依賴組件時(例如組件X)時,不直接對組件X進行調(diào)用,而是 通過代理請求管理器來進行轉(zhuǎn)發(fā)調(diào)用,代理請求管理器中有相應(yīng)的 判斷,對于非熱插拔或弱依賴組件的調(diào)用,不走代理方式,此時的 代理請求管理器僅僅負(fù)責(zé)轉(zhuǎn)發(fā),而對于強依賴組件,將原調(diào)用轉(zhuǎn)為 代理調(diào)用發(fā)送到域管理器,由域管理器在對應(yīng)的應(yīng)用程序域l中實 現(xiàn)對強依賴組件X的調(diào)用。而組件監(jiān)視器實現(xiàn)對各強依賴組件的監(jiān) 視,當(dāng)一個強依賴組件發(fā)生變化時,通知域管理器,由域管理器將 原有的對應(yīng)應(yīng)用程序域卸載,并創(chuàng)建新的對應(yīng)應(yīng)用程序域。域管理 模塊負(fù)責(zé)將之后的調(diào)用請求轉(zhuǎn)發(fā)到新的應(yīng)用程序域中去執(zhí)行,以達(dá) 到組件的更新。
前面分別介紹了弱依賴組件的熱插拔和強依賴組件的熱插拔。 在一個WEB管理系統(tǒng)即存在弱依賴組件,也存在強依賴組件,因此 下面給出實現(xiàn)弱依賴組件和強依賴組件熱插拔的綜合流程示意圖。
圖6是本發(fā)明實施例中的實現(xiàn)弱依賴組件和強依賴組件熱插拔 的綜合流程示意圖。參見圖6,當(dāng)IIS通過Portal請求調(diào)用組件某個 指定應(yīng)用組件時,代理請求管理器判斷該指定應(yīng)用組件是弱依賴組 件還是強依賴組件,如果是弱依賴組件則將調(diào)用請求轉(zhuǎn)發(fā)到組件管 理器,如果是強依賴組件則轉(zhuǎn)換為代理模式,則將調(diào)用請求轉(zhuǎn)發(fā)到 域管理器。
還需要說明的一點是在現(xiàn)有技術(shù)中,基于IIS應(yīng)用組件存放 在一個默認(rèn)的目錄中,當(dāng)IIS重啟時,會自動加載該默認(rèn)目錄中的
13應(yīng)用組件。本發(fā)明實施例中為了避免應(yīng)用組件隨著ns的啟動自動
開始加載,設(shè)置一個獨立加載目錄,所有的強依賴組件和弱依賴組 件被預(yù)先保存到所述獨立加載目錄中,這樣這些組件就不會隨著
ns本身的啟動就開始加載。
在基于IIS的大型WEB管理系統(tǒng)的開發(fā)測試過程中,使用本發(fā)
明提供的應(yīng)用組件熱插拔技術(shù),可以省去暫停當(dāng)前操作,以及重啟 iis并再次進入操作頁面錄入數(shù)據(jù)的操作,大大提高了開發(fā)測試過 程中的工作效率,同時,避免了客戶操作的中斷,提高了用戶的滿 息度。
在大型的管理系統(tǒng)中,其本身的組件非常龐大,在開發(fā)測試過 程中進行組件的更細(xì)測試,需要長達(dá)5-io分鐘的時間來重啟ns并再 次進入相應(yīng)的操作界面,并且正在使用ns服務(wù)器的應(yīng)用被中斷。 而經(jīng)過測試,使用本發(fā)明中的熱插拔技術(shù),對于弱依賴組件的熱插 拔,能達(dá)到無延遲的效果,更新立即生效;而對于強依賴組件的熱 插拔,只需要i分鐘左右的服務(wù)應(yīng)用程序域的重啟時間。
下面基于上述實施例給出本發(fā)明中的實現(xiàn)應(yīng)用組件熱插拔的裝 置的組成結(jié)構(gòu)。
圖7是本發(fā)明一種實現(xiàn)應(yīng)用組件熱插拔的裝置的第一實施例結(jié)
構(gòu)框圖。首先,基于iis的應(yīng)用組件被分為弱依賴組件和強依賴組
件,其中,弱依賴組件是與其他應(yīng)用組件沒有依賴關(guān)系的應(yīng)用組件,
強依賴組件是與其他應(yīng)用組件有依賴關(guān)系的應(yīng)用組件,則如圖7所 示,該裝置包括代理請求模塊701、組件管理模塊702、域管理模 塊703、第一監(jiān)控模塊704和第二監(jiān)控模塊705;
代理請求模塊701,用于在收到調(diào)用指定應(yīng)用組件的請求時, 判斷指定應(yīng)用組件是弱依賴組件還是強依賴組件;如果是弱依賴組 件,則將請求轉(zhuǎn)發(fā)給組件管理模塊,如果是強依賴組件,則將請求 轉(zhuǎn)發(fā)給域管理模塊;
組件管理模塊702,用于將弱依賴組件鏡像到內(nèi)存中,得到對 應(yīng)鏡像組件,并在收到來自第一監(jiān)控模塊的弱依賴組件更新通知 時,重新將更新后的弱依賴組件鏡像到內(nèi)存中;用于在接收到所述請求時,將所述請求轉(zhuǎn)換為鏡像組件調(diào)用請求,調(diào)用內(nèi)存中的與該
指定應(yīng)用組件對應(yīng)的鏡像組件;
第一監(jiān)控模塊,用于對弱依賴組件進行監(jiān)控,當(dāng)在弱依賴組件
更新時,向組件管理模塊發(fā)送弱依賴組件更新通知;
域管理模塊703,用于根據(jù)強依賴組件之間的相互依賴關(guān)系, 將強依賴組件分為不同的組件組,將不同的組件組加載到不同的應(yīng) 用程序域中;用于在接收到來自第二監(jiān)控模塊的強依賴組件更新通 知時,卸載該強依賴組件所在的組件組所對應(yīng)的應(yīng)用程序域,并將 該更新后的強依賴組件所在的組件組加載到新建的應(yīng)用程序域中; 用于在接收到所述請求時,將所述請求轉(zhuǎn)換為代理調(diào)用請求,在對 應(yīng)的應(yīng)用程序域中調(diào)用該指定應(yīng)用組件;
第二監(jiān)控模塊,用于對強依賴組件進行監(jiān)控,當(dāng)一個強依賴組 件更新時,向域管理模塊發(fā)送強依賴組件更新通知。
在圖7所示的裝置中,所有的強依賴組件和弱依賴組件被預(yù)先 保存到獨立加載目錄中。
這里,代理請求模塊對應(yīng)于前述是實施例中的代理請求管理 器,組件模塊對應(yīng)于組件管理器,域管理模塊對應(yīng)域管理器,監(jiān)控 模塊對應(yīng)組件監(jiān)視器。
圖8是本發(fā)明一種實現(xiàn)應(yīng)用組件熱插拔的裝置的第二實施例結(jié) 構(gòu)框圖。該裝置用于對基于IIS的弱依賴組件實現(xiàn)熱插拔,其中, 所述弱依賴組件是與其他應(yīng)用組件沒有依賴關(guān)系的應(yīng)用組件,如圖 8所示,該裝置包括組件管理模塊801和監(jiān)控模塊802;
組件管理模塊801,用于將弱依賴組件鏡像到內(nèi)存中,得到對 應(yīng)鏡像組件,并在收到來自監(jiān)控模塊802的弱依賴組件更新通知時, 重新將更新后的弱依賴組件鏡像到內(nèi)存中;用于在接收調(diào)用指定弱 依賴組件的請求時,將所述請求轉(zhuǎn)換為鏡像組件調(diào)用請求,調(diào)用內(nèi) 存中的與該指定弱依賴組件對應(yīng)的鏡像組件;
監(jiān)控模塊802,用于對弱依賴組件進行監(jiān)控,當(dāng)在弱依賴組件 更新時,向組件管理模塊801發(fā)送弱依賴組件更新通知。
在圖8所示的裝置中,所有的弱依賴組件被預(yù)先保存到獨立加圖9是本發(fā)明一種實現(xiàn)應(yīng)用組件熱插拔的裝置的第三實施例結(jié)
構(gòu)框圖。該裝置用于對基于ns的強依賴組件實現(xiàn)熱插拔,其中,
所述強依賴組件是與其他應(yīng)用組件有依賴關(guān)系的應(yīng)用組件,如圖9
所示,該裝置包括域管理模塊901和監(jiān)控模塊902;
域管理模塊901,用于根據(jù)強依賴組件之間的相互依賴關(guān)系,
將強依賴組件分為不同的組件組,將不同的組件組加載到不同的應(yīng)
用程序域中;用于在接收到來自監(jiān)控模塊902的強依賴組件更新通 知時,卸載該強依賴組件所在的組件組所對應(yīng)的應(yīng)用程序域,并將 該更新后的強依賴組件所在的組件組加載到新建的應(yīng)用程序域中; 用于在接收到調(diào)用指定強依賴組件的請求時,將所述請求轉(zhuǎn)換為代 理調(diào)用請求,在對應(yīng)的應(yīng)用程序域中調(diào)用該指定強依賴組件;
監(jiān)控模塊902,用于對強依賴組件進行監(jiān)控,當(dāng)一個強依賴組 件更新時,向域管理模塊901發(fā)送強依賴組件更新通知。
在圖9所示的裝置中,所有的強依賴組件被預(yù)先保存到獨立加 載目錄中。
綜上所述,本發(fā)明的技術(shù)方案是對于弱依賴組件,將其鏡像 到內(nèi)存中,當(dāng)弱依賴組件更新時,重新將弱依賴組件鏡像到內(nèi)存中, 得到更新后的對應(yīng)鏡像組件,當(dāng)需要調(diào)用該弱依賴組件時,調(diào)用其 對應(yīng)的鏡像組件;而對于強依賴組件,根據(jù)相互依賴關(guān)系分為不同 的組件組,將不同的組件組加載到不同的應(yīng)用程序域中,當(dāng)一個強 依賴組件更新時,卸載該強依賴組件所在的組件組所對應(yīng)的應(yīng)用程 序域,并將該強依賴組件所在的組件組加載到新建的應(yīng)用程序域 中,當(dāng)需要調(diào)用強依賴組件時,在其對應(yīng)的應(yīng)用程序域中的調(diào)用該 強依賴組件。本發(fā)明的技術(shù)方案,能夠?qū)?yīng)用組件進行熱插拔,無 需像現(xiàn)有技術(shù)那樣重啟IIS,也無需中斷客戶端的操作。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā) 明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、 改進等,均應(yīng)包含在本發(fā)明保護的范圍之內(nèi)。
權(quán)利要求
1、一種實現(xiàn)應(yīng)用組件熱插拔方法,其特征在于,該方法包括將基于互聯(lián)網(wǎng)信息服務(wù)IIS的應(yīng)用組件分為弱依賴組件和強依賴組件;其中,弱依賴組件是與其他應(yīng)用組件沒有依賴關(guān)系的應(yīng)用組件,強依賴組件是與其他應(yīng)用組件有依賴關(guān)系的應(yīng)用組件;對于弱依賴組件,將弱依賴組件鏡像到內(nèi)存中,得到對應(yīng)鏡像組件;當(dāng)在弱依賴組件更新時,重新將更新后的弱依賴組件鏡像到內(nèi)存中,得到更新后的對應(yīng)鏡像組件;對于強依賴組件,根據(jù)強依賴組件之間的相互依賴關(guān)系,將強依賴組件分為不同的組件組,將不同的組件組加載到不同的應(yīng)用程序域中;當(dāng)一個強依賴組件更新時,卸載該強依賴組件所在的組件組所對應(yīng)的應(yīng)用程序域,并將該更新后的強依賴組件所在的組件組加載到新建的應(yīng)用程序域中;當(dāng)收到調(diào)用指定應(yīng)用組件的請求,判斷該指定應(yīng)用組件是弱依賴組件還是強依賴組件;如果是弱依賴組件,則調(diào)用內(nèi)存中的與該指定應(yīng)用組件對應(yīng)的鏡像組件;如果是強依賴組件,則在對應(yīng)的應(yīng)用程序域中調(diào)用該指定應(yīng)用組件。
2、 根據(jù)權(quán)利要求l所述的方法,其特征在于,該方法進一步包 括預(yù)先將所有強依賴組件和弱依賴組件保存到獨立加載目錄中。
3、 一種實現(xiàn)應(yīng)用組件熱插拔方法,其特征在于,該方法適用 于基于IIS的弱依賴組件的熱插拔,所述弱依賴組件是與其他應(yīng)用 組件沒有依賴關(guān)系的應(yīng)用組件,該方法包括將弱依賴組件鏡像到內(nèi)存中,得到對應(yīng)鏡像組件;當(dāng)在弱依賴 組件更新時,重新將更新后的弱依賴組件鏡像到內(nèi)存中,得到更新 后的對應(yīng)鏡像組件;當(dāng)收到調(diào)用指定弱依賴組件的請求時,調(diào)用內(nèi)存中的與該指定 弱依賴組件對應(yīng)的鏡像組件。
4、 根據(jù)權(quán)利要求3所述的方法,其特征在于,該方法進一步包 括預(yù)先將所有弱依賴組件保存到獨立加載目錄中。
5、 一種實現(xiàn)應(yīng)用組件熱插拔方法,其特征在于,該方法適用 于基于IIS的強依賴組件的熱插拔,所述強依賴組件是與其他應(yīng)用組件有依賴關(guān)系的應(yīng)用組件,該方法包括根據(jù)強依賴組件之間的相互依賴關(guān)系,將強依賴組件分為不同 的組件組,將不同的組件組加載到不同的應(yīng)用程序域中;當(dāng)一個強 依賴組件更新時,卸載該強依賴組件所在的組件組所對應(yīng)的應(yīng)用程 序域,并將該更新后的強依賴組件所在的組件組加載到新建的應(yīng)用 程序域中;當(dāng)收到調(diào)用指定強依賴組件的請求時,在相應(yīng)的應(yīng)用程序域中 調(diào)用該指定強依賴組件。
6、 根據(jù)權(quán)利要求5所述的方法,其特征在于,該方法進一步包 括預(yù)先將所有強依賴組件保存到獨立加載目錄中。
7、 一種實現(xiàn)應(yīng)用組件熱插拔的裝置,其特征在于,基于IIS的 應(yīng)用組件被分為弱依賴組件和強依賴組件,其中,弱依賴組件是與 其他應(yīng)用組件沒有依賴關(guān)系的應(yīng)用組件,強依賴組件是與其他應(yīng)用 組件有依賴關(guān)系的應(yīng)用組件,該裝置包括代理請求模塊、組件管 理模塊、域管理模塊、第一監(jiān)控模塊和第二監(jiān)控模塊;代理請求模塊,用于在收到調(diào)用指定應(yīng)用組件的請求時,判斷 指定應(yīng)用組件是弱依賴組件還是強依賴組件;如果是弱依賴組件, 則將請求轉(zhuǎn)發(fā)給組件管理模塊,如果是強依賴組件,則將請求轉(zhuǎn)發(fā) 給域管理模塊;組件管理模塊,用于將弱依賴組件鏡像到內(nèi)存中,得到對應(yīng)鏡 像組件,并在收到來自第一監(jiān)控模塊的弱依賴組件更新通知時,重 新將更新后的弱依賴組件鏡像到內(nèi)存中;用于在接收到所述請求 時,將所述請求轉(zhuǎn)換為鏡像組件調(diào)用請求,調(diào)用內(nèi)存中的與該指定 應(yīng)用組件對應(yīng)的鏡像組件;第一監(jiān)控模塊,用于對弱依賴組件進行監(jiān)控,當(dāng)在弱依賴組件 更新時,向組件管理模塊發(fā)送弱依賴組件更新通知;域管理模塊,用于根據(jù)強依賴組件之間的相互依賴關(guān)系,將強 依賴組件分為不同的組件組,將不同的組件組加載到不同的應(yīng)用程 序域中;用于在接收到來自第二監(jiān)控模塊的強依賴組件更新通知 時,卸載該強依賴組件所在的組件組所對應(yīng)的應(yīng)用程序域,并將該更新后的強依賴組件所在的組件組加載到新建的應(yīng)用程序域中;用 于在接收到所述請求時,將所述請求轉(zhuǎn)換為代理調(diào)用請求,在對應(yīng) 的應(yīng)用程序域中調(diào)用該指定應(yīng)用組件;第二監(jiān)控模塊,用于對強依賴組件進行監(jiān)控,當(dāng)一個強依賴組 件更新時,向域管理模塊發(fā)送強依賴組件更新通知。
8、 如權(quán)利要求7所述的裝置,其特征在于,所有的強依賴組件 和弱依賴組件被預(yù)先保存到獨立加載目錄中。
9、 一種實現(xiàn)應(yīng)用組件熱插拔的裝置,其特征在于,該裝置用 于對基于IIS的弱依賴組件實現(xiàn)熱插拔,其中,所述弱依賴組件是 與其他應(yīng)用組件沒有依賴關(guān)系的應(yīng)用組件,該裝置包括組件管理 模塊和監(jiān)控模塊;組件管理模塊,用于將弱依賴組件鏡像到內(nèi)存中,得到對應(yīng)鏡 像組件,并在收到來自監(jiān)控模塊的弱依賴組件更新通知時,重新將 更新后的弱依賴組件鏡像到內(nèi)存中;用于在接收調(diào)用指定弱依賴組 件的請求時,將所述請求轉(zhuǎn)換為鏡像組件調(diào)用請求,調(diào)用內(nèi)存中的 與該指定弱依賴組件對應(yīng)的鏡像組件;監(jiān)控模塊,用于對弱依賴組件進行監(jiān)控,當(dāng)在弱依賴組件更新 時,向組件管理模塊發(fā)送弱依賴組件更新通知。
10、 如權(quán)利要求9所述的裝置,其特征在于,所有的弱依賴組 件被預(yù)先保存到獨立加載目錄中。
11、 一種實現(xiàn)應(yīng)用組件熱插拔的裝置,其特征在于,該裝置用 于對基于IIS的強依賴組件實現(xiàn)熱插拔,其中,所述強依賴組件是 與其他應(yīng)用組件有依賴關(guān)系的應(yīng)用組件,該裝置包括域管理模塊 和監(jiān)控模塊;域管理模塊,用于根據(jù)強依賴組件之間的相互依賴關(guān)系,將強 依賴組件分為不同的組件組,將不同的組件組加載到不同的應(yīng)用程 序域中;用于在接收到來自監(jiān)控模塊的強依賴組件更新通知時,卸 載該強依賴組件所在的組件組所對應(yīng)的應(yīng)用程序域,并將該更新后 的強依賴組件所在的組件組加載到新建的應(yīng)用程序域中;用于在接 收到調(diào)用指定強依賴組件的請求時,將所述請求轉(zhuǎn)換為代理調(diào)用請求,在對應(yīng)的應(yīng)用程序域中調(diào)用該指定強依賴組件;監(jiān)控模塊,用于對強依賴組件進行監(jiān)控,當(dāng)一個強依賴組件更新時,向域管理模塊發(fā)送強依賴組件更新通知。
12、如權(quán)利要求ll所述的裝置,其特征在于,所有的強依賴組件被預(yù)先保存到獨立加載目錄中。
全文摘要
本發(fā)明公開了實現(xiàn)應(yīng)用組件熱插拔的方法和裝置。所述方法包括對于弱依賴組件,將其鏡像到內(nèi)存中,當(dāng)弱依賴組件更新時,重新將更新后的弱依賴組件鏡像到內(nèi)存中,得到更新后的對應(yīng)鏡像組件,當(dāng)需要調(diào)用該弱依賴組件時,調(diào)用其對應(yīng)的鏡像組件;而對于強依賴組件,根據(jù)相互依賴關(guān)系分為不同的組件組,將不同的組件組加載到不同的應(yīng)用程序域中,當(dāng)一個強依賴組件更新時,卸載該強依賴組件所在的組件組所對應(yīng)的應(yīng)用程序域,并將該更新后的強依賴組件所在的組件組加載到新建的應(yīng)用程序域中,當(dāng)需要調(diào)用強依賴組件時,在其對應(yīng)的應(yīng)用程序域中的調(diào)用該強依賴組件。本發(fā)明的技術(shù)方案,能夠?qū)?yīng)用組件進行熱插拔,無需像現(xiàn)有技術(shù)那樣重啟IIS,也無需中斷客戶端的操作。
文檔編號G06F9/44GK101655789SQ20091009266
公開日2010年2月24日 申請日期2009年9月22日 優(yōu)先權(quán)日2009年9月22日
發(fā)明者祁宏偉 申請人:用友軟件股份有限公司