以前有人說(shuō)OA軟件的技術(shù)含量比較低,所以競(jìng)爭(zhēng)很混亂,確實(shí)有點(diǎn)道理,但現(xiàn)在有實(shí)力的OA廠商們?cè)絹?lái)越注重對(duì)先進(jìn)技術(shù)的使用,逐漸提升了自己的產(chǎn)品實(shí)力,拉開(kāi)了與競(jìng)爭(zhēng)者之間的差距。 本文將從發(fā)展的角度探討近年來(lái)應(yīng)用在
OA軟件上的一系列熱門(mén)技術(shù),這些技術(shù)對(duì)用戶(hù)的使用將發(fā)揮重要價(jià)值。
MVC(Model/View/Controller)架構(gòu)并不是一種新興技術(shù)或者新興思想,它是Xerox PARC在八十年代為編程語(yǔ)言Smalltalk-80發(fā)明的一種軟件設(shè)計(jì)模式,最近幾年被推薦為Sun公司J2EE平臺(tái)的設(shè)計(jì)模式,并且受到越來(lái)越多的使用,在國(guó)內(nèi),尤其是OA軟件領(lǐng)域也得到了充分的應(yīng)用。
先簡(jiǎn)要介紹一下MVC架構(gòu)的內(nèi)容和工作過(guò)程:
1、模型(Model): 模型是應(yīng)用程序的主體部分。模型表示業(yè)務(wù)數(shù)據(jù),或者業(yè)務(wù)邏輯。在MVC的三個(gè)部件中,模型擁有最多的處理任務(wù)。例如它可能用象EJBs和ColdFusion Components這樣的構(gòu)件對(duì)象來(lái)處理數(shù)據(jù)庫(kù)。被模型返回的數(shù)據(jù)是中立的,就是說(shuō)模型與數(shù)據(jù)格式無(wú)關(guān),這樣一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫(xiě)一次就可以被多個(gè)視圖重用,所以減少了代碼的重復(fù)性。
2、視圖(View): 視圖是應(yīng)用程序中用戶(hù)界面相關(guān)的部分,是用戶(hù)看到并與之交互的界面。如何處理應(yīng)用程序的界面變得越來(lái)越有挑戰(zhàn)性。MVC一個(gè)大的好處是它能為你的應(yīng)用程序處理很多不同的視圖。在視圖中其實(shí)沒(méi)有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機(jī)存儲(chǔ)的還是一個(gè)雇員列表,作為視圖來(lái)講,它只是作為一種輸出數(shù)據(jù)并允許用戶(hù)操縱的方式。
3、控制器(controller): 控制器工作就是根據(jù)用戶(hù)的輸入,控制用戶(hù)界面數(shù)據(jù)顯示和更新model對(duì)象狀態(tài)??刂破鹘邮苡脩?hù)的輸入并調(diào)用模型和視圖去完成用戶(hù)的需求。所以當(dāng)單擊Web頁(yè)面中的超鏈接和發(fā)送HTML表單時(shí),控制器本身不輸出任何東西和做任何處理。它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求,然后用確定用哪個(gè)視圖來(lái)顯示模型處理返回的數(shù)據(jù)。
簡(jiǎn)單來(lái)說(shuō)MVC的工作過(guò)程,首先控制器接收用戶(hù)的請(qǐng)求,并決定應(yīng)該調(diào)用哪個(gè)模型來(lái)進(jìn)行處理,然后模型用業(yè)務(wù)邏輯來(lái)處理用戶(hù)的請(qǐng)求并返回?cái)?shù)據(jù),最后控 制器用相應(yīng)的視圖格式化模型返回的數(shù)據(jù),并通過(guò)表示層呈現(xiàn)給用戶(hù)。
通過(guò)實(shí)例來(lái)看看MVC架構(gòu)的好處:
華天軟件作為一個(gè)注重技術(shù)優(yōu)勢(shì)的公司,是國(guó)內(nèi)最早采用MVC架構(gòu)的OA廠商之一,通過(guò)在其網(wǎng)站上(
myjourneytoamillion.com)公布的DEMO版本,我們可以看出采用該體系結(jié)構(gòu)的最大的好處是:數(shù)據(jù)與控制層與界面相互分離。
1、這是最重要的,多個(gè)視圖能共享一個(gè)模型,現(xiàn)在需要用越來(lái)越多的方式來(lái)訪(fǎng)問(wèn)你的應(yīng)用程序。對(duì)此,一個(gè)好的辦法就是使用MVC,無(wú)論用戶(hù)想要Flash界面或是 WAP 界面,用一個(gè)模型就能處理它們。由于已經(jīng)將數(shù)據(jù)和業(yè)務(wù)規(guī)則從表示層分開(kāi),所以你可以最大化的重用你的代碼了,這就大大提升了對(duì)用戶(hù)個(gè)性化需求的響應(yīng)速度。 華天OA系統(tǒng)比傳統(tǒng)的MVC更進(jìn)一步,界面層沒(méi)有一行程序代碼。不象傳統(tǒng)的JAVA程序,前端是JSP,后端是Java Bean。實(shí)現(xiàn)了界面層與控制層的完全分離,用戶(hù)即使不懂程序開(kāi)發(fā)也能更改界面。華天
OA系統(tǒng)前端沒(méi)有一行JAVA和JSP代碼,是純HTML和文本文件。所以,界面的改動(dòng)將異常簡(jiǎn)單。他們?cè)谧约旱姆桨咐锩娉兄Z:換掉所有的界面,僅需要10天。
2、因?yàn)槟P褪亲园?,并且與控制器和視圖相分離,所以很容易改變你的應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則。比如你想把你的數(shù)據(jù)庫(kù)從MySQL移植到Oracle,或者改變你的基于RDBMS數(shù)據(jù)源到LDAP,只需改變你的模型即可。由于運(yùn)用MVC的應(yīng)用程序的三個(gè)部件是相互對(duì)立,改變其中一個(gè)不會(huì)影響其它兩個(gè),所以依據(jù)這種設(shè)計(jì)思想能構(gòu)造良好的松偶合的構(gòu)件。
在華天OA的數(shù)據(jù)層,可通過(guò)中間件進(jìn)行溝通,這樣不需要書(shū)寫(xiě)任何一行代碼,通過(guò)簡(jiǎn)單的類(lèi)與數(shù)據(jù)庫(kù)表的映射實(shí)現(xiàn)數(shù)據(jù)庫(kù)表的增刪改。整個(gè)程序中沒(méi)有一條SQL語(yǔ)句,不修改代碼就可實(shí)現(xiàn)自動(dòng)切換到各種數(shù)據(jù)庫(kù)類(lèi)型(如MySQL/SQLSERVER/ORACLE)。
3、可以使用控制器來(lái)聯(lián)接不同的模型和視圖去完成用戶(hù)的需求,這樣控制器可以為構(gòu)造應(yīng)用程序提供強(qiáng)有力的手段,這樣能夠極大的提升開(kāi)發(fā)效率,并且保證系統(tǒng)的穩(wěn)定性。
4、通過(guò)標(biāo)簽定義實(shí)現(xiàn)與業(yè)務(wù)層的連接。在HTML頁(yè)面中,沒(méi)有一行程序代碼,只有標(biāo)簽定義。如果頁(yè)面需要變更,只須更改標(biāo)簽與業(yè)務(wù)層的連接關(guān)系。
5、內(nèi)部通過(guò)獨(dú)立的子工程管理,這樣既能保證各個(gè)子工程的系統(tǒng)獨(dú)立性,又能確保對(duì)系統(tǒng)的整體管理。
6、通過(guò)頁(yè)面與程序的分離,實(shí)現(xiàn)了多語(yǔ)言和多風(fēng)格的不同展示系統(tǒng)。