亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: 面向?qū)ο蟮亩鄬哟谓Y(jié)構(gòu)開發(fā)模式 [打印本頁]

作者: feiyang10086    時間: 2011-03-15 15:26
標題: 面向?qū)ο蟮亩鄬哟谓Y(jié)構(gòu)開發(fā)模式
面向?qū)ο蟮亩鄬哟谓Y(jié)構(gòu)開發(fā)模式






◆傳統(tǒng)的開發(fā)結(jié)構(gòu)

直至九十年代初,大部分商業(yè)應用系統(tǒng)的開發(fā)都是采用集中式開發(fā)架構(gòu)。這種集中式開發(fā)結(jié)構(gòu)一般都屬于特定的專有體系結(jié)構(gòu),缺乏開放性,且其處理方式基本上是非分布式的,中央主機的負擔很重。另外,一些規(guī)模不大的mis系統(tǒng)采用的是文件服務器開發(fā)方式。在這種方式下,工作站與文件服務器之間相互傳輸?shù)氖钦麄文件,隨著數(shù)據(jù)的積累,網(wǎng)絡負擔越來越重。當網(wǎng)絡用戶增加,超出網(wǎng)絡并發(fā)響應能力時,便會產(chǎn)生數(shù)據(jù)傳輸瓶頸,整個網(wǎng)絡性能就會嚴重下降。

九十年代中期,隨著微型機計算能力的大大增強和網(wǎng)絡技術的迅速發(fā)展,一種新的計算架構(gòu)——客戶機/服務器模式應運而生。對于數(shù)據(jù)庫系統(tǒng),客戶機/服務器體系結(jié)構(gòu)體現(xiàn)為:數(shù)據(jù)的應用和數(shù)據(jù)的存取分別由客戶機和服務器執(zhí)行,客戶機用來把數(shù)據(jù)“表現(xiàn)”給用戶,主要處理界面的功能;而服務器則作為后臺,集中于完成數(shù)據(jù)的處理、存儲、檢索等功能。當用戶需要訪問數(shù)據(jù)庫時,通過系統(tǒng)提供的應用程序接口(api),把數(shù)據(jù)庫訪問請求提交給服務器。駐留在服務器的dbms接到請求后,負責完成數(shù)據(jù)庫的訪問,并將訪問結(jié)果返回給客戶機。這種計算結(jié)構(gòu)在網(wǎng)上傳輸?shù)闹皇强蛻粽埱竺、服務響應以及?shù)據(jù)記錄,而不是整個文件,因此網(wǎng)絡上的信息流量大大減少,有利于解決數(shù)據(jù)處理和數(shù)據(jù)傳輸?shù)钠款i問題,在一定程度上也減輕了服務器的負擔,使服務器得以充分利用其較強的計算能力和數(shù)據(jù)存儲能力。sybase系統(tǒng)就是基于這種標準客戶機/服務器體系結(jié)構(gòu)的典范。圖1給出了標準客戶機/服務器結(jié)構(gòu)的示意圖。



圖1 標準客戶機/服務器結(jié)構(gòu)

標準的客戶機/服務器體系結(jié)構(gòu)在傳統(tǒng)商用領域得到了許多應用,但也存在一些局限。比如說,目前大多數(shù)mis系統(tǒng)普遍存在這樣一個問題:一旦系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)因需求變化而不得不有所改動時,前端的應用程序往往要進行大的修改。當系統(tǒng)較大時,前端應用程序需要很多人來寫,這時,僅僅是一個表結(jié)構(gòu)的變動也常常導致多個開發(fā)人員對多個模塊進行修改,可以說是“牽一發(fā)而動全身”。而且,采用傳統(tǒng)的開發(fā)結(jié)構(gòu),無論是在系統(tǒng)的分析設計階段,還是在代碼編寫階段,都要求每個開發(fā)人員對系統(tǒng)有較深的了解,這樣每個開發(fā)人員不僅要熟練掌握開發(fā)工具,還要熟悉業(yè)務,開發(fā)的難度大,要求高。此外,這種結(jié)構(gòu)的服務器端一般都只是在一臺機器上進行處理,服務器的負擔比較重。

◆多層次結(jié)構(gòu)開發(fā)

事實上,大多數(shù)的應用程序都能夠概括成三個不同的元素:用戶界面元素、信息處理元素和數(shù)據(jù)存儲元素。用戶界面元素與用戶進行交互,為用戶顯示信息、響應用戶生成的事件;信息處理元素根據(jù)從用戶那里接收到的命令和信息來完成程序數(shù)據(jù)的處理;數(shù)據(jù)存儲元素則檢索、存儲以及管理由用戶界面元素和信息處理元素所生成和使用的數(shù)據(jù)。圖2表明了這些元素之間的相互作用關系。



圖2 分布式應用程序元素

分布式應用程序?qū)⒁陨先齻元素適當分配到多臺計算機上進行處理。一方面,程序的模塊化程度更高;另一方面,資源可以得到更有效的利用(web就是分布式應用程序的一個例子)。

到了九十年代末,隨著面向?qū)ο蠹夹g的日益成熟和internet技術、分布式計算技術的不斷發(fā)展,出現(xiàn)了一種新的開發(fā)模式——多層次開發(fā)模式。多層次開發(fā)模式的顯著特點是推出了專門的應用程序服務器來完成獨立于用戶界面端和數(shù)據(jù)庫服務器端的信息處理工作。作者曾以面向?qū)ο髷?shù)據(jù)庫versant、corba的實現(xiàn)軟件orbix和orbixweb,以及前端的java開發(fā)工具jbuider建立了多層次的分布式開發(fā)環(huán)境,并在此基礎上開發(fā)了“sdh長途電路管理系統(tǒng)”。

◆versant+orbix開發(fā)模式及其特點

versant是業(yè)界領先的面向?qū)ο髷?shù)據(jù)庫系統(tǒng),orbix則是corba標準在業(yè)界的最好實現(xiàn)。二者都提供了在一致的、面向?qū)ο蟮沫h(huán)境下建立易于管理、功能強大的應用程序開發(fā)方法。orbix提供了靈活的分布式模型,主要是對象動作行為的分布。orbix完全遵循corba標準,可以遠程激活服務器程序和遠程調(diào)用對象,但是基本上不提供對象的持久性支持。versant作為一個數(shù)據(jù)庫管理系統(tǒng)對對象的持久性提供了強有力的支持,而且實現(xiàn)了從數(shù)據(jù)庫服務器到應用程序地址空間之間的高效對象傳送,但其提供對象的分布式能力非常有限。

將orbix和versant兩種技術結(jié)合起來,就可以實現(xiàn)分布式的corba對象在面向?qū)ο髷?shù)據(jù)庫中的持久性存儲。結(jié)合這兩種技術,一方面,由于利用了corba服務器程序的可遠程激活的特點以及corba對象的可遠程調(diào)用執(zhí)行的特點,用戶界面端可以與corba服務器靈活地通信;另一方面,corba技術和versant技術的結(jié)合可以實現(xiàn)corba對象的持久性存儲,同時,corba對象的分布式計算能力使應用程序的處理功能可以在多個服務器上進行分布。因此,利用corba分布式對象技術,我們就可以在傳統(tǒng)的客戶機/服務器模式中再加入一層專門用于信息處理的應用程序服務器,從而形成三層的開發(fā)結(jié)構(gòu)(如圖3所示)。

在圖3所示的利用versant 和orbix開發(fā)的三層結(jié)構(gòu)模式中,用戶接口層作為orbix 的客戶端進程,它可以遠程激活服務器程序,也能遠程調(diào)用orbix 服務器進程提供的對象。該層只需安裝orbix的客戶端軟件,而不需要安裝數(shù)據(jù)庫的客戶端軟件。用戶接口層的開發(fā)語言可以任意選擇,不受其他層的影響,如采用c++、java、powerbuider和visual basic等。它與中間層的通信采用corba的標準通信協(xié)議——iiop協(xié)議,因此,盡管前臺與中間層的開發(fā)語言不同,使用平臺也可能不同,卻不需要進行復雜的網(wǎng)絡編程。



中間的應用程序?qū)蛹茸鳛閛rbix的服務器進程,同時又是versant的客戶端,它利用versant來提供對象的持久性支持。該層需要安裝orbix的多線程版本——orbix mt以及集成了orbix和versant的適配器軟件——orbix+versant adapter(ova)。當用戶接口層的程序接收到用戶通過交互式界面發(fā)出的數(shù)據(jù)請求時,用戶接口層的程序就通過標準的idl接口去調(diào)用中間服務器提供的corba對象及其標準接口函數(shù)。中間服務器的corba進程探測某服務器程序的corba對象是否被調(diào)用,如果該服務器程序尚未啟動,便會啟動可能運行在另外一臺機器上的服務器進程。因此,用戶接口層無需知道該服務器程序具體在哪臺機器上以及是否已啟動,而只需根據(jù)標準接口去調(diào)用就可以了,從而實現(xiàn)中間層服務器程序的平臺無關性和位置無關性。調(diào)用corba對象的接口函數(shù)就像調(diào)用一般的c++對象的函數(shù)一樣,通過調(diào)用該corba對象的其他函數(shù)(包括該corba對象的接口函數(shù)和內(nèi)部函數(shù)),實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的查詢和其他的處理,再將結(jié)果通過標準接口返回給用戶接口層。

存儲層是versant數(shù)據(jù)庫服務器,中間層應用程序?qū)Υ鎯訑?shù)據(jù)的存取是通過ova適配器軟件來實現(xiàn)的,它可以使corba對象作為versant的持久性對象,對corba對象的屬性修改可以透明地存儲在數(shù)據(jù)庫中。對于其他的數(shù)據(jù)庫,orbix也有相應的適配器軟件,用戶自己也可以開發(fā)。

這種三層的開發(fā)模式能夠更好地利用計算機資源,也使得開發(fā)分布式應用更加方便。

1) 用戶接口層只是普通的corba 客戶程序,完全與數(shù)據(jù)庫無關。

對orbix客戶端而言,它并不清楚也不必關心它所調(diào)用的orbix對象是否是持久的。因此,不像客戶機/服務器結(jié)構(gòu)那樣,用戶接口層不需要安裝客戶端的數(shù)據(jù)庫連接工具。在傳統(tǒng)的客戶機/服務器結(jié)構(gòu)的客戶端開發(fā)中,一般要求開發(fā)人員對系統(tǒng)有較深的了解。當然,如果系統(tǒng)設計做得很好,分工很細,開發(fā)人員也可以不需要對系統(tǒng)有太多的了解,但是,系統(tǒng)設計工作要做到這種程度是非常困難的。而三層結(jié)構(gòu)開發(fā)模式從邏輯上就已經(jīng)很清楚地描述了各個層次的編程人員的分工。不同層次的編程人員對系統(tǒng)可以有不同的了解程度,用戶界面的編程就基本不需要對系統(tǒng)有多少了解,而中間層ova應用程序的編寫者事實上只負責面向?qū)ο竽P偷木唧w實現(xiàn),對象模型中的一個對象類大體上對應idl標準接口的一個用戶界面接口。中間層應用程序服務器的編寫者只需負責對象模型的具體實現(xiàn),無需考慮界面的問題,也無需考慮用戶接口層采用什么語言以及什么平臺去訪問它。用戶接口層的編寫者則只需考慮界面的編程,至于所調(diào)用的標準接口是如何實現(xiàn)的,根本不必關心。

一旦idl標準接口根據(jù)對象模型定義好了,用戶接口層的程序就可以去調(diào)用,即使這些接口還根本沒有具體的實現(xiàn)代碼;而中間層應用程序服務器的編寫者可以同步編寫這些接口的具體實現(xiàn)代碼。在開發(fā)工作的逐步展開過程中,兩個層次的開發(fā)者可以合作調(diào)試。這種并行開發(fā)可以大大提高開發(fā)的速度。

由于面向?qū)ο蠹夹g的類和對象的封裝特性,即使對象的屬性和方法的實現(xiàn)有些改變,用戶接口層也基本不受影響,不會像傳統(tǒng)的開發(fā)方法那樣,有很大的耦合關系。此外,由于用戶端只能通過中間層訪問數(shù)據(jù),本身并不直接與數(shù)據(jù)庫打交道,從而可以屏蔽很多危險事件,所以系統(tǒng)具有更好的安全性。在本地,如果需要的話,作為corba客戶端程序的用戶接口層也可以連接自己的數(shù)據(jù)庫,如圖3中第三層的java程序,就可以通過jdbc驅(qū)動程序直接連接到sybase等數(shù)據(jù)庫上。

2)由于中間層ova應用程序利用corba技術,應用系統(tǒng)具有很強的跨平臺和跨語言能力。

中間層的ova應用程序負責處理用戶接口層的用戶請求,從存儲層獲取數(shù)據(jù),并將必要的數(shù)據(jù)傳送給用戶接口層。每個應用程序服務器對于orbix 客戶端而言,是一個orbix服務器,同時又是versant數(shù)據(jù)庫服務器的客戶端。ova是把orbix 和versant集成起來的軟件,它可以使分布式的corba應用程序使用versant持久性對象和數(shù)據(jù)庫,使ova應用程序的對象既是分布式的corba對象,又是持久性的versant對象。中間層的一個應用程序服務器也可以向另一個應用程序服務器發(fā)出服務請求。

這些中間層的ova應用程序可以在不同的平臺上用不同語言(如java或c++)來編寫,也可以在多臺機器上運行,甚至不同的應用程序還可以連接到不同的數(shù)據(jù)庫,實現(xiàn)多個數(shù)據(jù)源的集成,這種實現(xiàn)對客戶端是完全透明的,客戶端只需按標準的idl接口去調(diào)用就可以,而且對orba對象的調(diào)用是不受操作平臺和語言的限制的。

3)存儲層維護數(shù)據(jù)的完整性、安全性,響應中間層的請求,實現(xiàn)數(shù)據(jù)的存儲。

versant的面向?qū)ο髷?shù)據(jù)庫技術提供了對象的直接存取、快速響應的功能。此外,versant能進行有規(guī)則的備份,并提供容錯服務以確保系統(tǒng)的持續(xù)可用。

另外,我們知道,powerbuider對sybase數(shù)據(jù)庫進行直接訪問。當10個powerbuider用戶同時訪問sybase數(shù)據(jù)庫時,sybase數(shù)據(jù)庫至少需要10個用戶的license。然而,采用corba軟件作為中間件時,客戶端對數(shù)據(jù)庫的訪問是間接的,它通過corba 的應用程序服務器去訪問數(shù)據(jù)庫。現(xiàn)在假設只有一個corba應用程序服務器程序,有10個corba的客戶端。當10個corba的客戶同時進行數(shù)據(jù)查詢時,事實上都是向該corba服務器進程發(fā)送請求,corba服務器進程再去訪問數(shù)據(jù)庫。當一個corba應用程序服務器應付不了這樣繁忙的客戶端請求時,可以再啟動一個同樣的應用程序服務器進程去分擔負荷。corba提供了一個可伸縮的服務器到服務器的體系結(jié)構(gòu)。服務器的事務對象庫可以通過corba orb進行通信,它們可以運行在多個服務器上,從而動態(tài)地平衡客戶器端請求的負載。orb能夠迅速地將請求交給當時可用的對象,并隨著請求的增多調(diào)用更多的對象,使服務器對象協(xié)調(diào)地運行。這樣,通過應用程序服務器的引入就可以節(jié)約一定量的數(shù)據(jù)庫用戶license。對同一個應用程序服務器的訪問,也可以要求一個客戶端進程或者一個客戶對應一個該應用程序服務器的進程來專門處理其請求,這時的情況,就類似powerbuider用戶對sybase的訪問,一個客戶進程就需要一個用戶license。

◆面向?qū)ο蟮南到y(tǒng)分析、設計與建模

在采用多層次的開發(fā)結(jié)構(gòu)時,我們可以注意到,無論是前端的java客戶程序、中間層的corba服務器程序,還是后臺的versant數(shù)據(jù)庫,都采用面向?qū)ο蟮乃枷牒头椒。如果開始階段的系統(tǒng)分析、設計和建模再采用傳統(tǒng)的結(jié)構(gòu)化系統(tǒng)分析與設計方法,就會顯得不太協(xié)調(diào)和自然。為了避免在開發(fā)階段進行不同意義上的轉(zhuǎn)化,多層次結(jié)構(gòu)的開發(fā)最好采用面向?qū)ο蟮姆椒。通過對現(xiàn)實世界的分析,構(gòu)造出適當?shù)拿嫦驅(qū)ο竽P,使應用域和計算機域的對象都使用統(tǒng)一的概念,使系統(tǒng)分析、設計和各個階段實現(xiàn)都使用同一概念表示,實現(xiàn)全過程的面向?qū)ο箝_發(fā)。在采用面向?qū)ο蟮姆椒ㄟM行設計和編碼過程中,系統(tǒng)開發(fā)人員強調(diào)的是圍繞對象而不是圍繞功能構(gòu)造系統(tǒng)。當系統(tǒng)中的功能發(fā)生變化時,一般來說原來的對象還是存在的,且只是圍繞這些對象的一些屬性和操作發(fā)生變化,這時,只需要修改和增加一些對象的屬性和操作就可以,對象的基本結(jié)構(gòu)并不發(fā)生變化。對用戶而言,對象內(nèi)部方法的實現(xiàn)和一些變化并不重要,他只需通過確定的輸入或命令對對象進行操作,獲取所需的結(jié)果,從而增強了系統(tǒng)的靈活性。

在傳統(tǒng)的客戶機/服務器結(jié)構(gòu)的基礎上引入專門的應用程序服務器,從而構(gòu)成多層次結(jié)構(gòu)開發(fā)模式,這是一種全新的開發(fā)模式。隨著面向?qū)ο蠹夹g、分布式計算、分布式對象技術的日益成熟和發(fā)展,這種新型的多層次結(jié)構(gòu)開發(fā)模式必將具有更廣闊的應用前景。
作者: coolhzz    時間: 2011-09-05 14:37
好資料,學習了




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2