專(zhuān)利名稱:一種c/s和b/s混合架構(gòu)模式實(shí)現(xiàn)方法和平臺(tái)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)應(yīng)用領(lǐng)域,涉及一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)方法和平臺(tái)。
技術(shù)背景C/S架構(gòu)模式和B/S架構(gòu)纟莫式是軟件應(yīng)用系統(tǒng)經(jīng)常釆用的架構(gòu)模式,二者各有優(yōu)缺點(diǎn), 可以滿足不同的應(yīng)用需求。C/S模式的優(yōu)點(diǎn)在于(1)專(zhuān)用性、交互性強(qiáng)。(2)存取數(shù)據(jù)安全。(3)執(zhí)行效率高, 速度快。(4)服務(wù)器運(yùn)行負(fù)荷較輕。C/S也存在著一些缺點(diǎn)(1)需要專(zhuān)門(mén)的客戶端安裝程 序,分布能力弱。(2)兼容性差,對(duì)于不同的開(kāi)發(fā)工具,具有較大的局限性。(3)開(kāi)發(fā)成本 較高,客戶使用維護(hù)成本高且投資較大。(4)對(duì)客戶端軟硬件配置要求較高。B/S模式有如下優(yōu)點(diǎn)(1)客戶端軟件要求簡(jiǎn)單,只需要一個(gè)網(wǎng)絡(luò)瀏覽器即可完成所有 的操作。(2)軟件硬件配置要求不高,能有效的降低系統(tǒng)的總體成本。(3)客戶端維護(hù)和升 級(jí)方便。(4)系統(tǒng)覆蓋范圍廣。與C/S模式相比較,B/S模式也有一定的局限性(1) B/S 模式客戶端的運(yùn)行環(huán)境是web瀏覽器,具有諸多限制,沒(méi)有集成有效的數(shù)據(jù)庫(kù)處理功能,難 以充分利用客戶機(jī)的硬件處理能力,從而難以實(shí)現(xiàn)傳統(tǒng)模式下的特殊功能要求。(2)個(gè)性化 特點(diǎn)明顯降低,無(wú)法實(shí)現(xiàn)具有個(gè)性化的功能要求。(3) B/S模式釆用開(kāi)放的HTTP協(xié)議和解 釋型的腳本語(yǔ)言編程,其安全性難以得到有效的保障。某些應(yīng)用系統(tǒng)既要求具有較高的效率和安全性,也要求便于部署和訪問(wèn),這樣就難以用 單獨(dú)的C/S或B/S模式滿足,因此往往采用兩者相結(jié)合的混合模式進(jìn)行開(kāi)發(fā)。對(duì)安全性和 交互性要求高、數(shù)據(jù)處理量大、處理復(fù)雜的功能邏輯釆用C/S模式,而諸如需要大范圍部署 的查詢、瀏覽的功能邏輯采用B/S模式。這樣能充分發(fā)揮各自的優(yōu)點(diǎn),使該系統(tǒng)有效、便捷 地運(yùn)行并實(shí)施應(yīng)用。隨著在web開(kāi)發(fā)領(lǐng)域中AJAX等技術(shù)的大量普及,B/S模式下富客戶端開(kāi)發(fā)技術(shù)日益 成熟,客戶端與服務(wù)器的交互方式也發(fā)生了很大的轉(zhuǎn)變。之所以叫富客戶端,是因?yàn)橄鄬?duì)于 傳統(tǒng)的B/S模式,把更多的邏輯處理從服務(wù)器端轉(zhuǎn)移到了客戶端,使客戶端功能更豐富,并 且交互能力更強(qiáng)。富客戶端一般會(huì)基于AJAX技術(shù)調(diào)用服務(wù)器端發(fā)布的服務(wù),即AJAX服務(wù), 這類(lèi)服務(wù)的開(kāi)發(fā)框架有Google Web Toolkit, ProjectZero等等。傳統(tǒng)的C/S和B/S混合架構(gòu)一般會(huì)為不同模式分別設(shè)計(jì)不同的客戶端和服務(wù)器,這樣 的軟件系統(tǒng)存在一定的不足,例如C/S模式系統(tǒng)和B/S模式系統(tǒng)分別開(kāi)發(fā)、分別部署,兩者缺少聯(lián)系,難以對(duì)兩種模式下公共的業(yè)務(wù)邏輯進(jìn)行復(fù)用,這樣不僅對(duì)開(kāi)發(fā)效率有不利影響,而且會(huì)降低系統(tǒng)整體的可擴(kuò)展性和可維護(hù)性。發(fā)明 內(nèi) 容本發(fā)明提供了一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)方法和平臺(tái),本方法基于web服務(wù)技 術(shù)和AJAX技術(shù)分別為C/S和B/S模式下不同的客戶端提供統(tǒng)一的服務(wù)器實(shí)現(xiàn),C/S模式 客戶端基于SOAP協(xié)議訪問(wèn)服務(wù),B/S模式富客戶端基于AJAX技術(shù)訪問(wèn)服務(wù),采用了面 向服務(wù)的設(shè)計(jì)思想,使得C/S模式客戶端和B/S模式富客戶端可以共享同一個(gè)服務(wù)器實(shí)現(xiàn)。 為不同模式客戶端提供統(tǒng)一的服務(wù)器實(shí)現(xiàn),從而改善軟件系統(tǒng)的可維護(hù)性、可擴(kuò)展性和可伸 縮性。本發(fā)明一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)方法,由如下步驟組成 步驟1:建立C/S模式客戶端和B/S模式富客戶端,服務(wù)器發(fā)布SOAP Web服務(wù)和 AJAX服務(wù);步驟2:判斷客戶端的服務(wù)訪問(wèn)方式,如果是C/S的訪問(wèn)方式,C/S模式客戶端基于 SOAP協(xié)議調(diào)用服務(wù)器發(fā)布的某SOAP Web服務(wù),通過(guò)SOAP Web服務(wù)接口訪問(wèn)相應(yīng)的服 務(wù)實(shí)例,如果是B/S的訪問(wèn)方式,則B/S模式富客戶端基于AJAX技術(shù)調(diào)用服務(wù)器發(fā)布的 某AJAX服務(wù),AJAX服務(wù)接口訪問(wèn)相應(yīng)的服務(wù)實(shí)例;步驟3:服務(wù)實(shí)例訪問(wèn)統(tǒng)一服務(wù)訪問(wèn)接口;步驟4:統(tǒng)一服務(wù)訪問(wèn)接口查看本地存儲(chǔ)的服務(wù)結(jié)果緩存,如果存在該服務(wù)實(shí)例的調(diào)用 結(jié)果,則從服務(wù)結(jié)果緩存獲取該服務(wù)實(shí)例的調(diào)用結(jié)果到統(tǒng)一服務(wù)訪問(wèn)接口;如果不存在該服 務(wù)實(shí)例的調(diào)用結(jié)果,統(tǒng)一服務(wù)訪問(wèn)接口從業(yè)務(wù)邏輯集中調(diào)用相應(yīng)的業(yè)務(wù)邏輯,完成這次服務(wù) 請(qǐng)求,并調(diào)用相應(yīng)的數(shù)據(jù)庫(kù)操作集的交互類(lèi),與數(shù)據(jù)庫(kù)操作集進(jìn)行必要的數(shù)據(jù)交互,用服務(wù) 請(qǐng)求的結(jié)果更新服務(wù)結(jié)果緩存;步驟5:服務(wù)器將SOAP Web服務(wù)通過(guò)SOAP Web服務(wù)接口傳遞給C/S模式客戶端, 由C/S模式客戶端的SOAP協(xié)議解析模塊解析;服務(wù)器將AJAX服務(wù)通過(guò)AJAX服務(wù)接口 傳遞給B/S模式客戶端,由B/S模式客戶端的AJAX服務(wù)調(diào)用模塊解析;轉(zhuǎn)到步驟2直至 調(diào)用過(guò)程結(jié)束。所述步驟2中SOAP Web服務(wù)接口將基于SOAP協(xié)議的服務(wù)調(diào)用方式轉(zhuǎn)換為基于函數(shù) 調(diào)用的服務(wù)調(diào)用方式,AJAX服務(wù)接口將基于AJAX技術(shù)的服務(wù)調(diào)用方式轉(zhuǎn)換為基于函數(shù)調(diào) 用的服務(wù)調(diào)用方式,從而實(shí)現(xiàn)不同的服務(wù)訪問(wèn)方式可以訪問(wèn)相同的服務(wù)實(shí)例。所述步驟4中統(tǒng)一服務(wù)訪問(wèn)接口為上層的服務(wù)實(shí)例提供統(tǒng)一的應(yīng)用邏輯訪問(wèn)功能,屏蔽訪問(wèn)服務(wù)結(jié)果緩存和調(diào)用業(yè)務(wù)邏輯集的差異性。所述步驟4中服務(wù)結(jié)果緩存保存在應(yīng)用服務(wù)器內(nèi)存中,當(dāng)服務(wù)結(jié)果存在于緩存中時(shí),省略訪問(wèn)數(shù)據(jù)庫(kù)的操作,降低響應(yīng)時(shí)間。一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)平臺(tái),包括如下模塊建立的C/S模式客戶端和B/S模式富客戶端;服務(wù)器,發(fā)布SOAP Web服務(wù)和AJAX 服務(wù);上述服務(wù)器包括SOAP Web服務(wù)接口、 AJAX服務(wù)接口、統(tǒng)一服務(wù)訪問(wèn)接口;其中 上述SOAP Web服務(wù)接口,用于如果客戶端的服務(wù)訪問(wèn)方式是C/S的訪問(wèn)方式,基于SOAP協(xié)議調(diào)用服務(wù)器發(fā)布的某SOAP Web服務(wù),通過(guò)其訪問(wèn)相應(yīng)的服務(wù)實(shí)例的C/S模式客戶端;上述AJAX服務(wù)接口 ,用于如果客戶端的服務(wù)訪問(wèn)方式是B/S的訪問(wèn)方式,基于AJAX 技術(shù)調(diào)用服務(wù)器發(fā)布的某AJAX服務(wù),訪問(wèn)相應(yīng)的服務(wù)實(shí)例的B/ S模式富客戶端; 上述統(tǒng)一服務(wù)訪問(wèn)接口,用于訪問(wèn)服務(wù)實(shí)例;上述統(tǒng)一服務(wù)訪問(wèn)接口,用于查看本地存儲(chǔ)的服務(wù)結(jié)果緩存,如果存在該服務(wù)實(shí)例的調(diào) 用結(jié)果,則從服務(wù)結(jié)果緩存獲取該服務(wù)實(shí)例的調(diào)用結(jié)果到統(tǒng)一服務(wù)訪問(wèn)接口;如果不存在該 服務(wù)實(shí)例的調(diào)用結(jié)果,則從業(yè)務(wù)邏輯集中調(diào)用相應(yīng)的業(yè)務(wù)邏輯,完成這次服務(wù)請(qǐng)求,并調(diào)用 相應(yīng)的數(shù)據(jù)庫(kù)操作集的交互類(lèi),與數(shù)據(jù)庫(kù)操作集進(jìn)行必要的數(shù)據(jù)交互,用服務(wù)請(qǐng)求的結(jié)果更 新服務(wù)結(jié)果緩存;上述C/S客戶端的SOAP協(xié)議解析模塊,用于解析由服務(wù)器將SOAP Web服務(wù)通過(guò) SOAP Web服務(wù)接口傳遞給C/S模式客戶端;上述B/S客戶端的AJAX服務(wù)調(diào)用模塊,用于解析由服務(wù)器將AJAX服務(wù)通過(guò)AJAX 服務(wù)接口傳遞給B/S模式客戶端。所述統(tǒng)一服務(wù)訪問(wèn)接口為上層的服務(wù)實(shí)例提供統(tǒng)一的應(yīng)用邏輯訪問(wèn)功能,屏蔽訪問(wèn)服務(wù) 結(jié)果緩存和調(diào)用業(yè)務(wù)邏輯集的差異性。所述服務(wù)結(jié)果緩存保存在應(yīng)用服務(wù)器內(nèi)存中,當(dāng)服務(wù)結(jié)果存在于緩存中時(shí),省略訪問(wèn)數(shù) 據(jù)庫(kù)的操作,降低響應(yīng)時(shí)間。本發(fā)明一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)方法和平臺(tái),為C/S模式和B/S模式提供 了統(tǒng)一的服務(wù)器實(shí)現(xiàn),在服務(wù)器端可以為類(lèi)似的功能提供不同類(lèi)型的服務(wù),從而對(duì)不同模式 的客戶端進(jìn)行支持。相對(duì)于傳統(tǒng)的設(shè)計(jì)方式,本發(fā)明的優(yōu)點(diǎn)在于(l體發(fā)明降低了系統(tǒng)架構(gòu)的復(fù)雜性。雖然系統(tǒng)提供了兩種部署方式截然不同的客戶端, 但服務(wù)器卻只有一個(gè)。簡(jiǎn)單的架構(gòu)可以使系統(tǒng)更容易理解,更容易測(cè)試。(2)本發(fā)明有助于提高系統(tǒng)的可維護(hù)性和可擴(kuò)展性。B/S模式和C/S模式的服務(wù)器邏輯 部署在同一個(gè)位置,避免了同樣功能因?yàn)椴渴鹞恢貌煌鴰?lái)的不一致性風(fēng)險(xiǎn),這對(duì)系統(tǒng)的 后續(xù)維護(hù)以及添加新的功能帶來(lái)了方便。(3) 本發(fā)明有助于對(duì)數(shù)據(jù)和資源進(jìn)行集中管理。本架構(gòu)可以在服務(wù)器提供緩存功能,把頻 繁調(diào)用的服務(wù)計(jì)算結(jié)果緩存在應(yīng)用服務(wù)器,這樣對(duì)于來(lái)自C/S或者B/S模式客戶端的大量 的重復(fù)請(qǐng)求就可以避免重復(fù)的數(shù)據(jù)庫(kù)訪問(wèn),從而有助于降低請(qǐng)求的平均響應(yīng)時(shí)間。此外,在 不同模式客戶端共享一個(gè)應(yīng)用服務(wù)器的情況下,通過(guò)在其與數(shù)據(jù)庫(kù)之間采用連接池機(jī)制管理 數(shù)據(jù)庫(kù)連接,可以相對(duì)于傳統(tǒng)架構(gòu)提高對(duì)系統(tǒng)資源的利用率。(4) 本發(fā)明有助于提高系統(tǒng)的分布性。由于是基于服務(wù)的設(shè)計(jì),客戶端可以跨越不同的局 域網(wǎng)段訪問(wèn)服務(wù)器,非常適合在大規(guī)模的企業(yè)Intranet內(nèi)部署。附圖說(shuō) 明
圖1為本發(fā)明一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)方法和平臺(tái)的軟件系統(tǒng)的架構(gòu)圖; 圖2為本發(fā)明一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)方法和平臺(tái)的服務(wù)調(diào)用的流程圖。
具體實(shí)施方式
下面將結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明。首先結(jié)合圖1對(duì)系統(tǒng)的架構(gòu)設(shè)計(jì)進(jìn)行介紹,對(duì)C/S和B/S混合模式軟件架構(gòu)進(jìn)行服務(wù) 器的一體化設(shè)計(jì)服務(wù)器發(fā)布SOAP Web服務(wù)和AJAX服務(wù);C/S模式客戶端基于SOAP協(xié)議調(diào)用服務(wù) 器發(fā)布的某SOAP Web服務(wù),SOAP Web服務(wù)接口訪問(wèn)相應(yīng)的服務(wù)實(shí)例;B/S模式富客戶 端基于AJAX技術(shù)調(diào)用服務(wù)器發(fā)布的某AJAX服務(wù),AJAX服務(wù)接口訪問(wèn)相應(yīng)的服務(wù)實(shí)例。 服務(wù)實(shí)例訪問(wèn)統(tǒng)一服務(wù)訪問(wèn)接口,并查看本地存儲(chǔ)的服務(wù)結(jié)果緩存,如果存在該服務(wù)實(shí)例的 調(diào)用結(jié)果,則從服務(wù)結(jié)果緩存獲取該服務(wù)實(shí)例的調(diào)用結(jié)果;否則統(tǒng)一服務(wù)訪問(wèn)接口從業(yè)務(wù)邏 輯中調(diào)用相應(yīng)的業(yè)務(wù)邏輯,并調(diào)用相應(yīng)的數(shù)據(jù)庫(kù)操作集中的交互類(lèi)進(jìn)行必要的數(shù)據(jù)交互;用 服務(wù)請(qǐng)求的結(jié)果更新服務(wù)結(jié)果緩存。服務(wù)器將SOAP Web服務(wù)通過(guò)SOAP Web服務(wù)接口傳 遞給C/S模式客戶端,由客戶端的SOAP協(xié)議解析模塊解析;并將AJAX服務(wù)通過(guò)AJAX 服務(wù)接口傳遞給B/S模式客戶端,由客戶端的AJAX服務(wù)調(diào)用模塊解析,直至調(diào)用過(guò)程結(jié) 束。C/S模式客戶端的SOAP協(xié)議解析模塊,負(fù)責(zé)調(diào)用服務(wù)器發(fā)布的SOAP Web服務(wù),解 析調(diào)用結(jié)果;SOAP協(xié)議解析模塊向SOAP Web服務(wù)接口發(fā)送SOAP請(qǐng)求報(bào)文,SOAP Web 服務(wù)接口向SOAP協(xié)議解析模塊返回SOAP響應(yīng)報(bào)文,從而完成C/S模式客戶端對(duì)服務(wù)器 服務(wù)的調(diào)用,為客戶端的應(yīng)用功能提供支持。B/S模式富客戶端的AJAX服務(wù)調(diào)用模塊,負(fù)責(zé)基于AJAX技術(shù)調(diào)用服務(wù)器發(fā)布的 AJAX服務(wù),解析調(diào)用結(jié)果;AJAX服務(wù)調(diào)用模塊向AJAX服務(wù)接口發(fā)送異步的XML HTTP 請(qǐng)求報(bào)文,AJAX服務(wù)接口向AJAX服務(wù)調(diào)用模塊返回XML HTTP響應(yīng)報(bào)文,從而完成B/S 模式富客戶端對(duì)服務(wù)器服務(wù)的調(diào)用,為客戶端的應(yīng)用功能提供支持。服務(wù)器的SOAP Web服務(wù)接口和AJAX服務(wù)接口 ,將服務(wù)實(shí)例發(fā)布為不同類(lèi)型的服務(wù), 供不同模式的客戶端調(diào)用;當(dāng)接收到不同形式的SOAP服務(wù)請(qǐng)求或者AJAX服務(wù)請(qǐng)求之后, 轉(zhuǎn)換為統(tǒng)一的請(qǐng)求方式調(diào)用下層的服務(wù)實(shí)例。服務(wù)器中的服務(wù)實(shí)例,代表了不同的服務(wù)實(shí)體,可以經(jīng)由不同的接口進(jìn)行發(fā)布;服務(wù)實(shí) 例需要通過(guò)訪問(wèn)統(tǒng)一服務(wù)訪問(wèn)接口進(jìn)行服務(wù)功能的實(shí)現(xiàn)。服務(wù)器中的統(tǒng)一服務(wù)訪問(wèn)接口 ,可以屏蔽調(diào)用本地服務(wù)結(jié)果緩存與調(diào)用業(yè)務(wù)邏輯實(shí)現(xiàn)類(lèi) 的差異性,從而降低系統(tǒng)設(shè)計(jì)的耦合性;當(dāng)接收到服務(wù)請(qǐng)求時(shí),首先查看服務(wù)結(jié)果緩存是否可用,不可用的話再調(diào)用業(yè)務(wù)邏輯集和數(shù)據(jù)庫(kù)操作集進(jìn)行具體實(shí)現(xiàn)。服務(wù)器中的服務(wù)結(jié)果緩存,負(fù)責(zé)根據(jù)一定的緩存更新算法(比如FIFO),在服務(wù)器的內(nèi)存中保存一些服務(wù)調(diào)用的結(jié)果,當(dāng)這些緩存的結(jié)果被命中時(shí),可以大大提高服務(wù)的處理效率。 服務(wù)器中的業(yè)務(wù)邏輯集,負(fù)責(zé)基于業(yè)務(wù)數(shù)據(jù)實(shí)現(xiàn)系統(tǒng)的應(yīng)用業(yè)務(wù)邏輯,當(dāng)需要進(jìn)行數(shù)據(jù)操作時(shí),通過(guò)訪問(wèn)數(shù)據(jù)庫(kù)操作集存取數(shù)據(jù)庫(kù)中的數(shù)據(jù)。服務(wù)器中的數(shù)據(jù)庫(kù)操作集,可以與后臺(tái)的數(shù)據(jù)庫(kù)進(jìn)行交互,對(duì)數(shù)據(jù)庫(kù)的連接資源和數(shù)據(jù)交互操作進(jìn)行集中管理?,F(xiàn)有一個(gè)航天領(lǐng)域內(nèi)的C/S和B/S混合架構(gòu)模式的應(yīng)用系統(tǒng),基于本發(fā)明提出的方法 對(duì)服務(wù)器進(jìn)行了一體化設(shè)計(jì)。該系統(tǒng)提供的主要功能包括對(duì)海量的航天器試驗(yàn)數(shù)據(jù)進(jìn)行管理 和應(yīng)用,用戶可以基于一系列復(fù)雜的查詢條件得到期望的試驗(yàn)結(jié)果,并可以通過(guò)二維曲線和 三維曲線的方式對(duì)試驗(yàn)結(jié)果進(jìn)行呈現(xiàn)和操作。目前假設(shè)C/S模式客戶端和B/S模式富客戶端先后對(duì)同一個(gè)試驗(yàn)結(jié)果進(jìn)行條件查詢和 曲線呈現(xiàn),如圖2所示,其實(shí)現(xiàn)步驟如下所示步驟一建立C/S模式客戶端和B/S模式富客戶端。C/S模式客戶端提供了豐富的條 件査詢和曲線操作功能,實(shí)現(xiàn)為Java桌面應(yīng)用程序,可以對(duì)用戶的操作進(jìn)行實(shí)時(shí)響應(yīng),方 便了研究人員對(duì)試驗(yàn)結(jié)果的分析。B/S模式富客戶端提供了有限的條件査詢和曲線呈現(xiàn)功能, 可以在Firefox瀏覽器中運(yùn)行,非常便于大規(guī)模部署和訪問(wèn)。在服務(wù)器,條件查詢、數(shù)據(jù)呈現(xiàn)和曲線呈現(xiàn)等業(yè)務(wù)功能被設(shè)計(jì)為若干服務(wù)實(shí)例,并以 SOAPWeb服務(wù)和AJAX服務(wù)的形式進(jìn)行發(fā)布,供不同的客戶端調(diào)用。SOAP協(xié)議的執(zhí)行引 擎采用Apache Axis2, AJAX技術(shù)的開(kāi)發(fā)包采用Google Web Toolkit,服務(wù)器的容器為 ApacheTomcat,數(shù)據(jù)庫(kù)操作集基于JDBC技術(shù)訪問(wèn)后臺(tái)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)管理系統(tǒng)為Oracle 9i數(shù)據(jù)庫(kù)。步驟二判斷客戶端的服務(wù)訪問(wèn)方式,如果是C/S的訪問(wèn)方式,C/S模式客戶端構(gòu)建 SOAP請(qǐng)求報(bào)文,發(fā)送給服務(wù)器發(fā)布的某SOAP Web服務(wù),SOAP Web服務(wù)接口解析SOAP 請(qǐng)求報(bào)文中包含的服務(wù)調(diào)用參數(shù),訪問(wèn)相應(yīng)的服務(wù)實(shí)例;首先是C/S客戶端對(duì)服務(wù)器的條件査詢服務(wù)進(jìn)行調(diào)用。通過(guò)其SOAP協(xié)議解析模塊發(fā)送SOAP請(qǐng)求到條件查詢服務(wù)的SOAP Web服務(wù)接口,該接口會(huì)觸發(fā)條件査詢服務(wù)的實(shí)例,進(jìn)入步驟三;如果是B/S的訪問(wèn)方式,B/S模式富客戶端基于AJAX技術(shù)構(gòu)建XMLHTTP請(qǐng)求報(bào)文, 發(fā)送給服務(wù)器發(fā)布的某AJAX服務(wù),AJAX服務(wù)接口解析XMLHTTP請(qǐng)求報(bào)文中包含的服務(wù) 調(diào)用參數(shù),訪問(wèn)相應(yīng)的服務(wù)實(shí)例;B/S富客戶端對(duì)服務(wù)器的條件查詢服務(wù)進(jìn)行調(diào)用。通過(guò) AJAX服務(wù)調(diào)用模塊將服務(wù)請(qǐng)求發(fā)送到條件查詢服務(wù)的AJAX服務(wù)接口 ,該接口會(huì)觸發(fā)條件 査詢服務(wù)的實(shí)例,進(jìn)入步驟三;步驟三服務(wù)實(shí)例訪問(wèn)統(tǒng)一服務(wù)訪問(wèn)接口,該接口是基于Fa ade設(shè)計(jì)模式設(shè)計(jì)的一些 Java類(lèi)的集合,隔離了服務(wù)的發(fā)布與服務(wù)的具體實(shí)現(xiàn);步驟四統(tǒng)一服務(wù)訪問(wèn)接口査看本地存儲(chǔ)的服務(wù)結(jié)果緩存,查看緩存中是否有具有相同 調(diào)用參數(shù)的査詢服務(wù)的調(diào)用結(jié)果可供利用。如果存在該服務(wù)實(shí)例的調(diào)用結(jié)果,統(tǒng)一服務(wù)訪問(wèn)接口根據(jù)服務(wù)調(diào)用參數(shù)的具體值,從服 務(wù)結(jié)果緩存獲取該服務(wù)實(shí)例的調(diào)用結(jié)果;由于服務(wù)結(jié)果緩存中存在該服務(wù)實(shí)例的調(diào)用結(jié)果, 因此査找到上一次的調(diào)用結(jié)果后,統(tǒng)一服務(wù)訪問(wèn)接口直接返回該結(jié)果,得到了期望的試驗(yàn)結(jié) 果的配置信息,并依據(jù)緩存的刷新算法進(jìn)行刷新,接著以這些配置信息為參數(shù)繼續(xù)調(diào)用曲線 呈現(xiàn)服務(wù)。特別是B/S富客戶端的AJAX服務(wù)的調(diào)用結(jié)果可以與C/S客戶端的SOAP Web服務(wù) 的調(diào)用結(jié)果在服務(wù)結(jié)果緩存中相互替代,這樣可以使響應(yīng)速度大大提高。本實(shí)施例中,B/S 富客戶端的AJAX服務(wù)調(diào)用利用了 C/S客戶端的SOAP Web服務(wù)的調(diào)用結(jié)果。如果不存在該服務(wù)實(shí)例的調(diào)用結(jié)果,統(tǒng)一服務(wù)訪問(wèn)接口^艮據(jù)服務(wù)調(diào)用參數(shù)的具體值,調(diào) 用相應(yīng)的業(yè)務(wù)邏輯實(shí)現(xiàn)類(lèi),完成這次服務(wù)請(qǐng)求,并調(diào)用相應(yīng)的數(shù)據(jù)庫(kù)交互類(lèi),與數(shù)據(jù)庫(kù)進(jìn)行 必要的數(shù)據(jù)交互;用服務(wù)請(qǐng)求的結(jié)果更新服務(wù)結(jié)果緩存。本實(shí)施例中,通過(guò)其SOAP協(xié)議解析模塊發(fā)送SOAP請(qǐng)求到曲線呈現(xiàn)服務(wù)的SOAP Web 服務(wù)接口,該接口會(huì)觸發(fā)曲線呈現(xiàn)服務(wù)的實(shí)例,該實(shí)例會(huì)調(diào)用統(tǒng)一服務(wù)訪問(wèn)接口。由于這是 曲線呈現(xiàn)服務(wù)的首次調(diào)用,因此緩存中沒(méi)有相應(yīng)的結(jié)果,于是統(tǒng)一服務(wù)訪問(wèn)接口調(diào)用業(yè)務(wù)邏 輯集對(duì)服務(wù)進(jìn)行處理,業(yè)務(wù)邏輯集會(huì)通過(guò)數(shù)據(jù)庫(kù)操作集訪問(wèn)數(shù)據(jù)庫(kù)獲得曲線相關(guān)數(shù)據(jù)。處理 完成之后,返回曲線呈現(xiàn)服務(wù)的調(diào)用結(jié)果,并把該結(jié)果放入緩存,如果緩存已滿,則根據(jù)緩 存的刷新算法進(jìn)行替換,刷新算法選用簡(jiǎn)便高效的FIFO算法。步驟五服務(wù)器的SOAP Web服務(wù)接口將服務(wù)的調(diào)用結(jié)果寫(xiě)入SOAP響應(yīng)報(bào)文,傳遞 給C/S模式客戶端,由客戶端的SOAP協(xié)議解析模塊解析,C/S客戶端獲得這次曲線呈現(xiàn) 服務(wù)的調(diào)用結(jié)果后,就可以在客戶端展示試驗(yàn)曲線,并允許用戶對(duì)曲線進(jìn)行操作,進(jìn)行試驗(yàn) 結(jié)果分析。服務(wù)器的AJAX服務(wù)接口將服務(wù)的調(diào)用結(jié)果寫(xiě)入XMLHTTP響應(yīng)報(bào)文,傳遞給B/S模 式客戶端,由客戶端的AJAX服務(wù)調(diào)用模塊解析;B/S富客戶端獲得這次曲線呈現(xiàn)服務(wù)的調(diào) 用結(jié)果后,就可以在客戶端展示試驗(yàn)曲線,允許用戶對(duì)曲線瀏覽。判斷這個(gè)調(diào)用過(guò)程是否結(jié)束,如果沒(méi)有結(jié)束則轉(zhuǎn)到步驟二,否則整個(gè)方法結(jié)束。 在本實(shí)施例中,不同模式的客戶端可以共享緩存,提高了執(zhí)行效率;同樣的服務(wù)實(shí)例可 以發(fā)布成不同的服務(wù)接口,從而提高了代碼的復(fù)用性,改善了開(kāi)發(fā)效率;同樣的應(yīng)用邏輯, 比如條件查詢和曲線呈現(xiàn),可以部署在唯一的位置,從而提高了系統(tǒng)的可維護(hù)性;對(duì)數(shù)據(jù)庫(kù) 連接等系統(tǒng)資源進(jìn)行集中管理,改善了系統(tǒng)的可伸縮性。
權(quán)利要求
1. 一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)方法,其特征在于,由如下步驟組成步驟一建立C/S模式客戶端和B/S模式富客戶端,服務(wù)器發(fā)布SOAP Web服務(wù)和AJAX服務(wù);步驟二判斷客戶端的服務(wù)訪問(wèn)方式,如果是C/S的訪問(wèn)方式,C/S模式客戶端基于SOAP協(xié)議調(diào)用服務(wù)器發(fā)布的某SOAP Web服務(wù),通過(guò)SOAP Web服務(wù)接口訪問(wèn)相應(yīng)的服務(wù)實(shí)例,如果是B/S的訪問(wèn)方式,則B/S模式富客戶端基于AJAX技術(shù)調(diào)用服務(wù)器發(fā)布的某AJAX服務(wù),AJAX服務(wù)接口訪問(wèn)相應(yīng)的服務(wù)實(shí)例;步驟三服務(wù)實(shí)例訪問(wèn)統(tǒng)一服務(wù)訪問(wèn)接口;步驟四統(tǒng)一服務(wù)訪問(wèn)接口查看本地存儲(chǔ)的服務(wù)結(jié)果緩存,如果存在該服務(wù)實(shí)例的調(diào)用結(jié)果,則從服務(wù)結(jié)果緩存獲取該服務(wù)實(shí)例的調(diào)用結(jié)果到統(tǒng)一服務(wù)訪問(wèn)接口;如果不存在該服務(wù)實(shí)例的調(diào)用結(jié)果,統(tǒng)一服務(wù)訪問(wèn)接口從業(yè)務(wù)邏輯集中調(diào)用相應(yīng)的業(yè)務(wù)邏輯,完成這次服務(wù)請(qǐng)求,并調(diào)用相應(yīng)的數(shù)據(jù)庫(kù)操作集的交互類(lèi),與數(shù)據(jù)庫(kù)操作集進(jìn)行必要的數(shù)據(jù)交互,用服務(wù)請(qǐng)求的結(jié)果更新服務(wù)結(jié)果緩存;步驟五服務(wù)器將SOAPWeb服務(wù)通過(guò)SOAPWeb服務(wù)接口傳遞給C/S模式客戶端,由C/S模式客戶端的SOAP協(xié)議解析模塊解析;服務(wù)器將AJAX服務(wù)通過(guò)AJAX服務(wù)接口傳遞給B/S模式客戶端,由B/S模式客戶端的AJAX服務(wù)調(diào)用模塊解析;轉(zhuǎn)到步驟二直至調(diào)用過(guò)程結(jié)束。
2、 根據(jù)權(quán)利要求1所述一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)方法,其特征在于所述步驟 二中SOAP Web服務(wù)接口將基于SOAP協(xié)議的服務(wù)調(diào)用方式轉(zhuǎn)換為基于函數(shù)調(diào)用的服務(wù)調(diào) 用方式,AJAX服務(wù)接口將基于AJAX技術(shù)的服務(wù)調(diào)用方式轉(zhuǎn)換為基于函數(shù)調(diào)用的服務(wù)調(diào)用 方式,從而實(shí)現(xiàn)不同的服務(wù)訪問(wèn)方式可以訪問(wèn)相同的服務(wù)實(shí)例。
3、 根據(jù)權(quán)利要求1所述一種C/S和B/S混合架構(gòu)纟莫式實(shí)現(xiàn)方法,其特征在于所述步驟 四中統(tǒng)一服務(wù)訪問(wèn)接口為上層的服務(wù)實(shí)例提供統(tǒng)一的應(yīng)用邏輯訪問(wèn)功能,屏蔽訪問(wèn)服務(wù)結(jié)果 緩存和調(diào)用業(yè)務(wù)邏輯集的差異性。
4、 根據(jù)權(quán)利要求1所述一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)方法,其特征在于所述步驟 四中服務(wù)結(jié)果緩存保存在應(yīng)用服務(wù)器內(nèi)存中,當(dāng)服務(wù)結(jié)果存在于緩存中時(shí),省略訪問(wèn)數(shù)據(jù)庫(kù) 的操作,降低響應(yīng)時(shí)間。
5、 一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)平臺(tái),其特征在于,包括如下模塊建立的C/S模式客戶端和B/S模式富客戶端;服務(wù)器,發(fā)布SOAP Web服務(wù)和AJAX 服務(wù);上述服務(wù)器包括SOAP Web服務(wù)接口、 AJAX服務(wù)接口、統(tǒng)一服務(wù)訪問(wèn)接口;其中 上述SOAP Web服務(wù)接口,用于如果客戶端的服務(wù)訪問(wèn)方式是C/S的訪問(wèn)方式,基于SOAP協(xié)議調(diào)用服務(wù)器發(fā)布的某SOAP Web服務(wù),通過(guò)其訪問(wèn)相應(yīng)的服務(wù)實(shí)例的C/S模式客戶端;上述AJAX服務(wù)接口,用于如果客戶端的服務(wù)訪問(wèn)方式是B/S的訪問(wèn)方式,基于AJAX 技術(shù)調(diào)用服務(wù)器發(fā)布的某AJAX服務(wù),訪問(wèn)相應(yīng)的服務(wù)實(shí)例的B/S模式富客戶端; 上述統(tǒng)一服務(wù)訪問(wèn)接口,用于訪問(wèn)服務(wù)實(shí)例;上述統(tǒng)一服務(wù)訪問(wèn)接口,用于査看本地存儲(chǔ)的服務(wù)結(jié)果緩存,如果存在該服務(wù)實(shí)例的調(diào) 用結(jié)果,則從服務(wù)結(jié)果緩存獲取該服務(wù)實(shí)例的調(diào)用結(jié)果到統(tǒng)一服務(wù)訪問(wèn)接口;如果不存在該 服務(wù)實(shí)例的調(diào)用結(jié)果,則從業(yè)務(wù)邏輯集中調(diào)用相應(yīng)的業(yè)務(wù)邏輯,完成這次服務(wù)請(qǐng)求,并調(diào)用 相應(yīng)的數(shù)據(jù)庫(kù)操作集的交互類(lèi),與數(shù)據(jù)庫(kù)操作集進(jìn)行必要的數(shù)據(jù)交互,用服務(wù)請(qǐng)求的結(jié)果更 新服務(wù)結(jié)果緩存;上述C/S客戶端的SOAP協(xié)議解析模塊,用于解析由服務(wù)器將SOAP Web服務(wù)通過(guò) SOAP Web服務(wù)接口傳遞給C/S模式客戶端;上述B/S客戶端的AJAX服務(wù)調(diào)用模塊,用于解析由服務(wù)器將AJAX服務(wù)通過(guò)AJAX 服務(wù)接口傳遞給B/S模式客戶端。
6、 根據(jù)權(quán)利要求5所述一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)平臺(tái),其特征在于所述SOAP Web服務(wù)接口將基于SOAP協(xié)議的服務(wù)調(diào)用方式轉(zhuǎn)換為基于函數(shù)調(diào)用的服務(wù)調(diào)用方式, AJAX服務(wù)接口將基于AJAX技術(shù)的服務(wù)調(diào)用方式轉(zhuǎn)換為基于函數(shù)調(diào)用的服務(wù)調(diào)用方式,從 而實(shí)現(xiàn)不同的服務(wù)訪問(wèn)方式可以訪問(wèn)相同的服務(wù)實(shí)例。
7、 根據(jù)權(quán)利要求5所述一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)平臺(tái),其特征在于所述統(tǒng)一 服務(wù)訪問(wèn)接口為上層的服務(wù)實(shí)例提供統(tǒng)一的應(yīng)用邏輯訪問(wèn)功能,屏蔽訪問(wèn)服務(wù)結(jié)果緩存和調(diào) 用業(yè)務(wù)邏輯集的差異性。
8、 根據(jù)權(quán)利要求5所述一種C/S和B/S混合架構(gòu);模式實(shí)現(xiàn)平臺(tái),其特征在于所述服務(wù) 結(jié)果緩存保存在應(yīng)用服務(wù)器內(nèi)存中,當(dāng)服務(wù)結(jié)果存在于緩存中時(shí),省略訪問(wèn)數(shù)據(jù)庫(kù)的操作, 降低響應(yīng)時(shí)間。
全文摘要
本發(fā)明一種C/S和B/S混合架構(gòu)模式實(shí)現(xiàn)方法和平臺(tái),基于web服務(wù)技術(shù)和AJAX技術(shù)分別為C/S和B/S模式下不同的客戶端提供統(tǒng)一的服務(wù)器實(shí)現(xiàn),C/S模式客戶端基于SOAP協(xié)議訪問(wèn)服務(wù),B/S模式富客戶端基于AJAX技術(shù)訪問(wèn)服務(wù),采用了面向服務(wù)的設(shè)計(jì)思想,使得C/S模式客戶端和B/S模式富客戶端可以共享同一個(gè)服務(wù)器實(shí)現(xiàn)。對(duì)于來(lái)自C/S或者B/S模式客戶端的大量的重復(fù)請(qǐng)求就可以避免重復(fù)的數(shù)據(jù)庫(kù)訪問(wèn),從而有助于降低請(qǐng)求的平均響應(yīng)時(shí)間。為不同模式客戶端提供統(tǒng)一的服務(wù)器實(shí)現(xiàn),從而改善軟件系統(tǒng)的可維護(hù)性、可擴(kuò)展性和可伸縮性。
文檔編號(hào)H04L29/06GK101267441SQ20081010471
公開(kāi)日2008年9月17日 申請(qǐng)日期2008年4月23日 優(yōu)先權(quán)日2008年4月23日
發(fā)明者波 劉, 李先軍, 李重文, 雯 鄭 申請(qǐng)人:北京航空航天大學(xué)