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