基于oracle8i的編程模型之比較(我認(rèn)為很經(jīng)典,就摘下來了)
發(fā)表時(shí)間:2024-02-06 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]第一類:以組件為基礎(chǔ)的開發(fā) vs. 存儲(chǔ)過程目前,“以組件為基礎(chǔ)的編程”很快成為許多人首選的應(yīng)用程序開發(fā)方案。它能將來自不同廠商的組件有機(jī)結(jié)合到一起,允許代碼重復(fù)使用,并易于維護(hù),易于展開,易于擴(kuò)展,從而快速開發(fā)出應(yīng)用程序。適合采用以組件為基礎(chǔ)的開發(fā)模型的應(yīng)用程序包括:■ 計(jì)算密集型應(yīng)用:假如一個(gè)...
第一類:
以組件為基礎(chǔ)的開發(fā) vs. 存儲(chǔ)過程
目前,“以組件為基礎(chǔ)的編程”很快成為許多人首選的應(yīng)用程序開發(fā)方案。它能將來自不
同廠商的組件有機(jī)結(jié)合到一起,允許代碼重復(fù)使用,并易于維護(hù),易于展開,易于擴(kuò)展,從
而快速開發(fā)出應(yīng)用程序。適合采用以組件為基礎(chǔ)的開發(fā)模型的應(yīng)用程序包括:
■ 計(jì)算密集型應(yīng)用:假如一個(gè)應(yīng)用程序需要進(jìn)行密集的邏輯運(yùn)算和算術(shù)計(jì)算,那么來自
第三方的組件,以及組件的重復(fù)利用能力,可使整個(gè)開發(fā)過程變得更加容易。
■ 復(fù)雜的多層次應(yīng)用:對(duì)O r a c l e 8 i內(nèi)運(yùn)行的E J B和C O R B A組件來說,它們通過I I O P,可自
I n t e r n e t瀏覽器、C O R B A客戶機(jī)以及純J a v a客戶機(jī)中方便地調(diào)用。D C O M客戶機(jī)(如
Microsoft Transaction Server上運(yùn)行的Visual Basic應(yīng)用程序)可通過一個(gè)D C O M→
C O R B A橋,方便地訪問C O R B A服務(wù)器。
另外,適合采用存儲(chǔ)過程開發(fā)的應(yīng)用程序包括:
■ S Q L密集型應(yīng)用:存儲(chǔ)過程與數(shù)據(jù)庫高度集成,所以特別適合經(jīng)常要通過S Q L訪問數(shù)
據(jù)的應(yīng)用程序。
■ 傳統(tǒng)雙層應(yīng)用:存儲(chǔ)過程為傳統(tǒng)雙層應(yīng)用程序提供一個(gè)簡單、直接的編程模型。
O r a c l e 8 i內(nèi)的存儲(chǔ)過程可用一系列數(shù)據(jù)庫客戶機(jī)方便地訪問,比如J D B C、S Q L J、
O D B C、O C I和O r a c l e開發(fā)客戶機(jī)等等。
第二類:
以組件開發(fā)為基礎(chǔ)的: EJB vs. CORBA
E J B技術(shù)使我們能更易在一個(gè)C O R B A基礎(chǔ)結(jié)構(gòu)的頂部,構(gòu)建J a v a應(yīng)用程序。如同本章
“E J B的優(yōu)點(diǎn)”一節(jié)詳細(xì)講述的那樣, E J B通過覆蓋一個(gè)更高級(jí)別的編程接口,從而實(shí)現(xiàn)對(duì)
C O R B A的引用。E J B是完全用J a v a寫成的,不必使用I D L。E J B事務(wù)處理和安全策略通過聲明
的方式加以指定,而不是以程序化的形式。
C O R B A對(duì)象可在需要良好;墓δ軙r(shí),進(jìn)行編寫。O r a c l e 8 i配套提供的C a ff e i n e(咖啡
因)工具可有效地降低用J a v a開發(fā)C O R B A服務(wù)器時(shí)牽涉到的一些復(fù)雜性。
注意盡管C O R B A對(duì)象可用任何語言寫成,但只有用J a v a寫成的對(duì)象,才能在
O r a c l e 8 i內(nèi)展開。
第三類:
存儲(chǔ)過程: PL/SQL vs. Java
P L / S Q L與數(shù)據(jù)庫緊密集成具有下述優(yōu)點(diǎn):
■ 對(duì)S Q L具有自動(dòng)可見性:在P L / S Q L中,毋需任何條件,所有進(jìn)程和函數(shù)在S Q L面前都
是顯露無遺的。而在J a v a中,首先必須編寫對(duì)應(yīng)的調(diào)用規(guī)范,發(fā)布那些希望S Q L“看見”
的方法。
■ 能有效地訪問S Q L:在S Q L密集型應(yīng)用中(亦即需要頻繁地讀寫數(shù)據(jù)表),P L / S Q L的表
現(xiàn)比J a v a存儲(chǔ)過程好。這是由于P L / S Q L支持與S Q L相同的固有數(shù)據(jù)類型。O r a c l e并未
在數(shù)據(jù)庫內(nèi)部直接提供對(duì)固有J a v a類型的支持。只有S Q L類型和與對(duì)象相關(guān)的類型才能
保存在數(shù)據(jù)庫內(nèi)。因此,假如需要從一個(gè)J a v a存儲(chǔ)過程中訪問數(shù)據(jù)庫, O r a c l e必須將
J a v a類型轉(zhuǎn)換成S Q L數(shù)據(jù)類型(反之亦然)。顯然,這會(huì)造成對(duì)執(zhí)行效率的影響。而且
在某些情況下,這樣的轉(zhuǎn)換還會(huì)造成精度的下降。
注意在J a v a存儲(chǔ)過程中,假如隨o r a c l e . s q l數(shù)據(jù)類型(而非標(biāo)準(zhǔn)J a v a類型)使用S Q L
數(shù)據(jù),那么應(yīng)注意到效率和精度的提高,詳情可參考第9章。但缺點(diǎn)在于: J a v a代碼
將喪失移植類型,因?yàn)閛 r a c l e . s q l類型僅適用于O r a c l e。
針對(duì)I n t e r n e t及I n t r a n e t應(yīng)用的開發(fā), J a v a正在快速成為一種流行的語言。除此以外, J a v a
也正在成為存儲(chǔ)過程開發(fā)的首選語言。對(duì)O r a c l e 8 i來說, J a v a和P L / S Q L存儲(chǔ)過程相互間是可
以“交互操作”的。因此,以前在P L / S Q L代碼上的投資不會(huì)被無謂地浪費(fèi)掉。
下面列出一系列典型屬性,正是由于它們,使得J a v a成為存儲(chǔ)過程開發(fā)的一種最佳語言:
■ 移植能力: J a v a存儲(chǔ)過程可在來自多家廠商的數(shù)據(jù)庫間自由移植。而在另一方面,
P L / S Q L僅適用于O r a c l e。從理論上說,我們可將來自另一個(gè)數(shù)據(jù)庫廠商的J a v a存儲(chǔ)過
程方便地移植到O r a c l e環(huán)境:只需在數(shù)據(jù)庫內(nèi)裝載J a v a源碼或二進(jìn)制數(shù)據(jù),然后將它們
發(fā)布給S Q L就可以了。
■ 真正的面向?qū)ο笾С郑?J a v a在設(shè)計(jì)之初,就被定義成一種真正的“面向?qū)ο蟆背绦蛟O(shè)
計(jì)語言。P L / S Q L則不同,它最開始的時(shí)候僅僅是一種程序化的編程語言,同數(shù)據(jù)庫緊
密集成,只是現(xiàn)在增加了部分面向?qū)ο蟮恼Z言特性。
■ 豐富的庫和工具支持: J a v a比P L / S Q L提供了多得多的函數(shù)庫,以及第三方的開發(fā)工具
支持。
■ 一種萬能語言,支持所有層面的開發(fā): J a v a是一種“萬能型”語言。一種語言便可適
用于所有層面的開發(fā):客戶前端的應(yīng)用程序和小程序( A p p l e t),服務(wù)器后端的服務(wù)器
小程序(S e r v l e t)和數(shù)據(jù)庫存儲(chǔ)過程等等。因此,采用J a v a編程,可有效降低培訓(xùn)和開
發(fā)成本。
■ 本地編譯好的庫:在那些計(jì)算密集型的應(yīng)用程序中,以及那些包含了少量數(shù)據(jù)庫讀寫
操作的應(yīng)用程序中, J a v a存儲(chǔ)代碼的運(yùn)行速度都要快于對(duì)等的P L / S Q L代碼。這是由于
j a v a . l a n g封裝和其他s y s所有的封裝是在“本地”編譯好的;或者說,是“固有”的。
J a v a存儲(chǔ)過程在調(diào)用本地編譯代碼時(shí),速度當(dāng)然比P L / S Q L的解釋型執(zhí)行方式快得多!