EJB的開(kāi)發(fā)優(yōu)勢(shì)
EJB是sun的服務(wù)器端組件模型,最大的用處是部署分布式應(yīng)用程序當(dāng)然,還有許多方式可以實(shí)現(xiàn)分布式應(yīng)用,類(lèi)似微軟的.net技術(shù)。憑借java跨平臺(tái)的優(yōu)勢(shì),用EJB技術(shù)部署的分布式系統(tǒng)可以不限于特定的平臺(tái)。下面主要介紹采用EJB開(kāi)發(fā)的三個(gè)優(yōu)勢(shì)。
JAVA語(yǔ)言已經(jīng)慢慢的在成為主流的開(kāi)發(fā)語(yǔ)言之一,或者說(shuō)現(xiàn)在已經(jīng)成為了主流的開(kāi)發(fā)語(yǔ)言。在JAVA語(yǔ)言平臺(tái)上,也出現(xiàn)了多種開(kāi)發(fā)模型。對(duì)于剛?cè)腴T(mén)的JAVA程序員來(lái)說(shuō),也許面對(duì)這么多的開(kāi)發(fā)模型,會(huì)眼花繚亂,不知道該如何選擇。筆者剛開(kāi)始接觸JAVA語(yǔ)言的時(shí)候沒(méi)有多少的開(kāi)發(fā)模型可以選擇。而前幾年筆者也遇到了這個(gè)問(wèn)題。
可選的開(kāi)發(fā)模型比較多,筆者必須選擇一個(gè)開(kāi)發(fā)模型作為未來(lái)自己的主攻方向。因?yàn)槿说木κ怯邢薜,特別是我們做程序開(kāi)發(fā)的。我們要把有限的精力花在刀口上。筆者在這里向大家推薦EJB開(kāi)發(fā)模型。
這個(gè)EJB本質(zhì)上就是一個(gè)被管理的組件,存在于J2EE容器中,由J2EE容器進(jìn)行創(chuàng)建、控制和銷(xiāo)毀。J2EE容器復(fù)雜控制當(dāng)前存在的EJB數(shù)目和EJB所使用的資源。在重負(fù)載的情況下,即使是客戶(hù)端正在使用的EJB,也將被返回到實(shí)例池,如此的話(huà),這個(gè)EJB實(shí)例還可以供其他客戶(hù)端使用,從而提高EJB實(shí)例的利用率。
雖然J2EE官方也是推薦使用EJB,但是這并不是一個(gè)強(qiáng)制性的措施。程序開(kāi)發(fā)人員除了利用EJB之外,還可以利用JSP或者單機(jī)版的JAVA應(yīng)用程序等等。但是如果應(yīng)用程序需要不斷的升級(jí)、性能要求比較高等等,那么筆者就向大家推薦使用EJB,主要有如下三個(gè)方面的原因。
一、可以隱藏管道代碼。
現(xiàn)在音樂(lè)噴泉在各地迅速的被采用,成為高科技景觀的一個(gè)代表之作。程序員在開(kāi)發(fā)這個(gè)應(yīng)用程序的時(shí)候,程序人員需要用到這些管道,但是并不需要知道這些水管的具體走向。這不是程序開(kāi)發(fā)人員所需要關(guān)注的內(nèi)容。程序開(kāi)發(fā)人員之需要直接使用這些現(xiàn)成的管道即可。我們把這些管道就叫做“管道代碼”。其實(shí)程序開(kāi)發(fā)人員有時(shí)候就好像一個(gè)工業(yè)設(shè)計(jì)師。工業(yè)設(shè)計(jì)師在設(shè)計(jì)洗澡用的花撒水籠頭的時(shí)候,其根本不用關(guān)心自來(lái)水管道。
為什么呢?因?yàn)樽詠?lái)水管道都是采用同一的標(biāo)準(zhǔn),水壓的話(huà)也是國(guó)家有一個(gè)強(qiáng)制性的標(biāo)準(zhǔn)。為此在需要使用管道的時(shí)候,設(shè)計(jì)者之需要直接引用這些標(biāo)準(zhǔn)化的參數(shù)即可。在早期的一些開(kāi)發(fā)模型中,如最原始的 CORBA開(kāi)發(fā)模型,程序開(kāi)發(fā)人員不得不便寫(xiě)大量的代碼來(lái)完成同Corba環(huán)境的交互、連接、注冊(cè)過(guò)程。其實(shí)這些代碼就是通常所說(shuō)的管道代碼。而如果采用 EJB模型的話(huà)則可以最大限度的減少這些管道代碼的編寫(xiě)工作。
如程序開(kāi)發(fā)人員通過(guò)聲明屬性就可以無(wú)需要編寫(xiě)代碼來(lái)控制這些功能即可指定組件的事務(wù)性為;不用通過(guò)編寫(xiě)管道代碼來(lái)定義EJB組件之間的關(guān)系以及所需要用到的資源,因?yàn)榭刹渴鸬腏2EE應(yīng)用程序在部署描述信息中定義了多個(gè)EJB組件之間的關(guān)系同時(shí)定義了EJB組件所需要用到的資源;如每個(gè)Bean 都遵循一個(gè)定義的聲明周期和一套規(guī)則,為此程序開(kāi)發(fā)人員不需要知道“管道”的'設(shè)計(jì),而只需要知道管道接口的參數(shù)即可,如此的話(huà)系統(tǒng)代碼與應(yīng)用程序代碼之間就是兩個(gè)互相獨(dú)立的內(nèi)容。
顯然,通過(guò)J2EE提供的EJB組件,可以讓程序開(kāi)發(fā)人員將精力集中在業(yè)務(wù)代碼的編寫(xiě)上,而盡量減少編寫(xiě)管道代碼。這不僅可以提高應(yīng)用程序的開(kāi)發(fā)效率,而且把管道代碼與應(yīng)用程序代碼獨(dú)立開(kāi)來(lái),也利于后續(xù)的調(diào)試與維護(hù)。這就是筆者推薦使用EJB模型來(lái)開(kāi)發(fā)JAVA應(yīng)用程序的第一個(gè)原因。
二、EJB預(yù)定義了一些復(fù)雜的處理機(jī)制。
在應(yīng)用程序開(kāi)發(fā)的過(guò)程中,或多或少有一些共性的內(nèi)容。如需要進(jìn)行應(yīng)用程序的生命周期管理,需要進(jìn)行命名和注冊(cè),需要進(jìn)行事務(wù)管理等等。如果每次在開(kāi)發(fā)應(yīng)用程序的時(shí)候,都需要從零開(kāi)始來(lái)開(kāi)發(fā)這些功能,那么工作量就會(huì)很大,而且代碼的重復(fù)利用性也會(huì)比較差。為了解決這些問(wèn)題,EJB提供了一些預(yù)定義的服務(wù),把一些應(yīng)用程序開(kāi)發(fā)中要用到的服務(wù)集成到J2EE開(kāi)發(fā)環(huán)境中。需要用到這些服務(wù)的時(shí)候,程序開(kāi)發(fā)人員之需要聲明一下或者通過(guò)少量的代碼就可以調(diào)用這些服務(wù),實(shí)現(xiàn)一些復(fù)雜的控制管理機(jī)制。
如在應(yīng)用程序開(kāi)發(fā)中,為了保持?jǐn)?shù)據(jù)的一致性事務(wù)管理機(jī)制是必須要實(shí)現(xiàn)的一個(gè)機(jī)制。如果在應(yīng)用程序?qū)用鏇](méi)有實(shí)現(xiàn)事務(wù)管理機(jī)制的話(huà),則當(dāng)同一個(gè)業(yè)務(wù)涉及到多條記錄的時(shí)候,很容易破壞數(shù)據(jù)的一致性。而如果從零開(kāi)始來(lái)編寫(xiě)事務(wù)處理機(jī)制代碼的話(huà),那么工作量會(huì)很大。在EJB的容器服務(wù)中就預(yù)先提供了事務(wù)管理的解決方式,程序開(kāi)發(fā)人員可以憑借這個(gè)預(yù)定義地解決方案輕松的創(chuàng)建事務(wù)、處理與控制事務(wù)等等。
如在應(yīng)用程序開(kāi)發(fā)中命名與注冊(cè)也是很麻煩的一件工作。而EJB也提供另一個(gè)命名與注冊(cè)的容器,EJB容器和服務(wù)器為 EJB提供了對(duì)命名服務(wù)的訪(fǎng)問(wèn)。遠(yuǎn)程和本地客戶(hù)端使用這些服務(wù)來(lái)尋找EJB;EJB組件本身也使用這些服務(wù)來(lái)查詢(xún)自身所需要的資源。也就好說(shuō),程序開(kāi)發(fā)人員在應(yīng)用程序開(kāi)發(fā)中不用通過(guò)代碼來(lái)實(shí)現(xiàn)命名與注冊(cè)服務(wù),而直接調(diào)用EJB組件中的命名與注冊(cè)容器即可。這個(gè)容器會(huì)自動(dòng)生成相關(guān)的代碼來(lái)完成所需要實(shí)現(xiàn)的功能。
另外,EJB組件還提供了生命周期管理容器、安全性和訪(fǎng)問(wèn)控制容器、持久性容器等等,通過(guò)這些容器可以讓程序開(kāi)發(fā)人員少寫(xiě)大量的代碼,不僅可以提高程序的開(kāi)發(fā)效率,而且同意了這些基礎(chǔ)性?xún)?nèi)容解決方案。這也有利于后來(lái)的人員了解源代碼,有利于應(yīng)用管理軟件的后續(xù)升級(jí)。
三、用戶(hù)接口與底層業(yè)務(wù)功隔離。
在企業(yè)管理中共性與個(gè)性是并存的,這也體現(xiàn)在了企業(yè)的管理軟件上。如同一家企業(yè),如果管理者的文化背景不同,其或許多同一個(gè)業(yè)務(wù)具有不同的管理方式。這個(gè)用我們程序開(kāi)發(fā)人員專(zhuān)業(yè)的術(shù)語(yǔ)來(lái)講就是用戶(hù)接口不同。但是其背后的管理模型是相同的,也就是說(shuō)其業(yè)務(wù)功能是相同的。
如利用JAVA語(yǔ)言開(kāi)發(fā)的一個(gè)訂單管理系統(tǒng),其訂單的處理機(jī)制是相同的,都在數(shù)據(jù)庫(kù)中建立相關(guān)的紀(jì)錄并在保存記錄之前進(jìn)行數(shù)據(jù)有效性的審核。但是不同的訂單類(lèi)型其處理方式可能稍有不同。如對(duì)于預(yù)付訂單,必須要先收到客戶(hù)的款項(xiàng)才能夠下訂單給生產(chǎn)部門(mén)安排生產(chǎn)或者倉(cāng)庫(kù)部門(mén)準(zhǔn)備出貨;如對(duì)于倉(cāng)庫(kù)訂單,則在流程處理上不需要經(jīng)過(guò)生產(chǎn)而直接轉(zhuǎn)到倉(cāng)庫(kù)出貨等等。
也就說(shuō)是,10種不同類(lèi)型的訂單,其80%的功能是相同的,而又20%的內(nèi)容由于管理方式或者其他的原因而有所不同。在這種情況下難道要寫(xiě)十個(gè)不同的代碼來(lái)實(shí)現(xiàn)這十種不同的需求嗎?
在EJB開(kāi)發(fā)模型中不用這么復(fù)雜,因?yàn)镋JB允許獨(dú)立于表達(dá)層開(kāi)發(fā)和部署業(yè)務(wù)功能。如上面這個(gè)訂單管理需求,程序開(kāi)發(fā)人員可以利用EJB模型來(lái)實(shí)現(xiàn)底層的功能(80%的共性?xún)?nèi)容),然后再無(wú)需重新設(shè)計(jì)或者開(kāi)發(fā)整個(gè)應(yīng)用程序或者銷(xiāo)售訂單管理模塊的情況下,可以利用不同的用戶(hù)接口來(lái)實(shí)現(xiàn)用戶(hù)的不同需求。
這就好像父母與子女的關(guān)系,F(xiàn)把父母的特性定義好,然后再根據(jù)不同的需要生養(yǎng)不同的子女即可(用戶(hù)接口)。由于子女繼承了父母的全部特性。那么只需要把用戶(hù)需要實(shí)現(xiàn)的一些個(gè)性特點(diǎn)嫁接到子女身上即可。
所以這種業(yè)務(wù)需求與業(yè)務(wù)功能相分離,各自獨(dú)立的特征,是EJB開(kāi)發(fā)模型的最大優(yōu)勢(shì)。程序開(kāi)發(fā)人員可以利用EJB實(shí)現(xiàn)分布式應(yīng)用程序,將用戶(hù)接口與底層業(yè)務(wù)功能隔離開(kāi)來(lái)。
【EJB的開(kāi)發(fā)優(yōu)勢(shì)】相關(guān)文章:
留學(xué)愛(ài)爾蘭軟件開(kāi)發(fā)專(zhuān)業(yè)的優(yōu)勢(shì)07-19
淺析使用struts框架開(kāi)發(fā)web應(yīng)用的優(yōu)勢(shì)11-11
網(wǎng)絡(luò)營(yíng)銷(xiāo)的優(yōu)勢(shì)有哪些優(yōu)勢(shì)11-15
Java開(kāi)發(fā)web的幾種開(kāi)發(fā)模式06-12
俄羅斯留學(xué)的優(yōu)勢(shì)及教育的優(yōu)勢(shì)介紹06-28