- 相關(guān)推薦
J2EE Web架構(gòu)與CS架構(gòu)命名上的差異
J2EE平臺(tái)由一整套服務(wù)(Services)、應(yīng)用程序接口(APIs)和協(xié)議構(gòu)成。下面是小編整理的關(guān)于J2EE Web架構(gòu)與CS架構(gòu)命名上的差異,歡迎大家參考!
J2EE Web架構(gòu)與CS架構(gòu)命名上的差異
與傳統(tǒng)的CS(客戶端與服務(wù)器端)架構(gòu)相比,J2EE Web程序服務(wù)器提供了很多額外的技術(shù)支持。而且這些技術(shù)是一般Web應(yīng)用程序都需要用到的,但是Web程序開發(fā)人員不需要再另行開發(fā),只需要直接拿過來使用即可。具體的來說,在Web應(yīng)用中主要通過調(diào)用現(xiàn)成的API來完成這個(gè)功能。而且使用這些技術(shù)時(shí),基本上沒有什么技術(shù)含量。因?yàn)樵诰唧w工作中使用這些技術(shù)都是采用基本固定的格式。命名技術(shù)就是其中一個(gè)典型的代表。在這篇文章中,筆者根據(jù)自己的經(jīng)驗(yàn),談?wù)勥@方面使用過程中的注意點(diǎn)。
一、 與傳統(tǒng)架構(gòu)之間的區(qū)別。
在使用這個(gè)技術(shù)之前,筆者認(rèn)為開發(fā)人員至少需要知道,在Web架構(gòu)與CS架構(gòu)之間的區(qū)別。只有如此,才能夠更加全面的了解采用新技術(shù)所能夠帶來的優(yōu)勢(shì)。故筆者一開始就著重強(qiáng)調(diào)兩者之間的差異。
在應(yīng)用程序開發(fā)中,如果一個(gè)類A需要調(diào)用另外一個(gè)類B,則類A需要知道類B的源程序,然后在其中新建一個(gè)類B的實(shí)例,才能夠?qū)崿F(xiàn)調(diào)用。而且當(dāng)一個(gè)程序改變時(shí),還需要重新編譯。從這可以看出,類與類之間的連接需要通過實(shí)例來完成,他們之間的連接就比較混亂。
而采用J2EE命名服務(wù)則不需要這么麻煩。簡(jiǎn)單的說,JE22命名服務(wù)器提供了應(yīng)用構(gòu)件程序的命名環(huán)境。如果采用了這種技術(shù)的話,那么實(shí)現(xiàn)類調(diào)用時(shí),就可以不通過實(shí)例來完成。做一個(gè)形象的比喻,命名服務(wù)就好像是一個(gè)地址簿。當(dāng)開發(fā)人員在程序開發(fā)時(shí)采用了新的構(gòu)件或者新建了某個(gè)類,那么相關(guān)的信息就會(huì)都在這個(gè)地址簿中登記。作為開發(fā)人員的話,就不需要再去查找原始的類,只需要在這個(gè)地址簿中查找即可。顯然這方面了我們?nèi)粘5拈_發(fā)工作,可以縮短開發(fā)的周期,同時(shí)簡(jiǎn)化類之間的引用。最重要的是,如果以后被引用的類有變化時(shí),不需要編譯整個(gè)應(yīng)用程序,而只需要重編譯有變化的類即可。
二、 命名服務(wù)的核心環(huán)節(jié)解析。
J2EE命名服務(wù)提供各種應(yīng)用構(gòu)件程序的統(tǒng)一命名環(huán)境。其英文簡(jiǎn)稱是JNDI。從這個(gè)英文名字中可以看到,這個(gè)命名服務(wù)包括兩層含義:命名和目錄接口。我們?cè)诹私膺@個(gè)技術(shù)的時(shí)候,如果從這兩個(gè)角度去理解,可能會(huì)更加簡(jiǎn)單一點(diǎn)。JNDI簡(jiǎn)化了高級(jí)Web程序類之間的查找調(diào)用。
從技術(shù)上來說,JNDI主要是通過API來實(shí)現(xiàn)的。JNDI API提供了Web構(gòu)件進(jìn)行標(biāo)準(zhǔn)目錄操作的方法。舉一個(gè)簡(jiǎn)單的例子,可以將對(duì)象屬性和Java對(duì)象聯(lián)系在一起,或者通過對(duì)象屬性來查找Java對(duì)象。當(dāng)我們?cè)陔娫挷局胁檎夷硞(gè)電話的時(shí)候,會(huì)現(xiàn)在索引中找到某個(gè)人的名字。然后再?gòu)倪@個(gè)索引中打開對(duì)應(yīng)的記錄,查找這個(gè)人的電話、住址等聯(lián)系信息。JNDI核心的工作思路就是如此。在上面筆者談到過,這些技術(shù)都是采用基本固定的調(diào)用格式。也就是說,JNDI已經(jīng)被標(biāo)準(zhǔn)化。為此應(yīng)用程序可以通過使用JNDI來訪問其他通用的命名服務(wù)。如支持常用的We命名協(xié)議、DNS等命名架構(gòu)。筆者認(rèn)為這點(diǎn)非常的重要。因?yàn)槠渲С侄喾N命名結(jié)構(gòu),則可以與其他平臺(tái)的應(yīng)用系統(tǒng),如C++等進(jìn)行很好的系統(tǒng)的整合。
三、 使用命名服務(wù)的注意事項(xiàng)。
JNDI命名服務(wù)支持多種命名結(jié)構(gòu),如Web命名協(xié)議、DNS命名架構(gòu)等等。那么到底該采用什么樣的命名結(jié)構(gòu)呢?這里面還是有比較大的學(xué)問。因?yàn)樵谝院笙到y(tǒng)維護(hù)中,可能要與其它應(yīng)用程序進(jìn)行整合。此時(shí)如果整合的系統(tǒng)采用相同或者類似的命名架購(gòu),那么以后整合的工作就會(huì)相對(duì)簡(jiǎn)單許多。一般來說,一家公司開發(fā)的產(chǎn)品,其采用的都是統(tǒng)一的命名架購(gòu)。不管開發(fā)人員喜歡使用什么樣的命名結(jié)構(gòu),公司都會(huì)要求其在后續(xù)的開發(fā)時(shí)采用公司規(guī)定命名架購(gòu),這也主要是為了方便后續(xù)與自己公司產(chǎn)品的集成,F(xiàn)在主要的問題是,如果公司接受的是客戶委托授權(quán)的開發(fā),同時(shí)又有與其他軟件集成的內(nèi)容在里面。那么對(duì)于這個(gè)命名架購(gòu)可能需要特別的考慮。如要分析一下,企業(yè)現(xiàn)有軟件所采用的命名架構(gòu)。然后根據(jù)其采用的形式,來確定自己最終需要采用的命名結(jié)構(gòu)。一般來說,在一個(gè)應(yīng)用軟件或者一個(gè)項(xiàng)目中,最好采用同一種命名架購(gòu),如采用的都是Web命名協(xié)議等等。這就好像在不同版本的電話簿中,采用的是同一個(gè)目錄格式。這就會(huì)在很大程度上方便用戶的查詢。
其次需要注意的是,雖然JNDI命名服務(wù)采用都是基本固定的格式,即已經(jīng)采用了標(biāo)準(zhǔn)化的手段。但是從實(shí)際工作來看,開發(fā)人員往往需要結(jié)合實(shí)際情況,做出適當(dāng)?shù)恼{(diào)整。如需要考慮,命名的合理性。包括可讀性、命名的長(zhǎng)度等問題。雖然在具體的命名規(guī)則上,沒有很嚴(yán)格的限制。但是如果設(shè)計(jì)合理、細(xì)節(jié)考慮周到,那么在很大程度上可以減少后續(xù)維護(hù)的壓力。如在一個(gè)項(xiàng)目團(tuán)隊(duì)開發(fā)中,命名的規(guī)則需要經(jīng)過項(xiàng)目成員的討論通過,然后再進(jìn)行強(qiáng)化培訓(xùn)。這對(duì)于后續(xù)項(xiàng)目成員按規(guī)則辦事會(huì)有很大的幫助。再如,現(xiàn)在不少應(yīng)用軟件都是按模塊來開發(fā)的。此時(shí)在命名規(guī)則設(shè)計(jì)時(shí),也需要考慮到模塊的分類。簡(jiǎn)單的說,一個(gè)模塊一個(gè)目錄。不要將不同模塊的類存放在一起。這有利于后續(xù)應(yīng)用軟件的升級(jí)、二次開發(fā)等等作業(yè)。總之,雖然命名服務(wù)的使用比較簡(jiǎn)單,但是具體在設(shè)計(jì)時(shí),還是有一定的難度。需要項(xiàng)目管理人員具有比較豐富的經(jīng)驗(yàn)。一個(gè)合理的命名規(guī)則,對(duì)于應(yīng)用程序的開發(fā)很有幫助。
最后筆者需要強(qiáng)調(diào)的是,應(yīng)用服務(wù)器定義的對(duì)象與用戶自己定義的對(duì)象的區(qū)別。為了保障應(yīng)用程序的正常運(yùn)行,應(yīng)用服務(wù)器往往會(huì)自動(dòng)定義一些對(duì)象,如控制對(duì)象等等。而程序開發(fā)人員也會(huì)根據(jù)需要自定義相關(guān)的對(duì)象。這兩種不同的對(duì)象對(duì)于JNDI命名服務(wù)來說,有什么區(qū)別呢?這里需要注意的是,JNDI在后臺(tái)其采用的是多目錄的形式,如其最上一層的目錄是Java:Comp/env。后續(xù)的各種對(duì)象(包括應(yīng)用服務(wù)器創(chuàng)建的和開發(fā)人員自己創(chuàng)建的),都放在這個(gè)目錄下面。不過這里需要注意的是,兩種不同形式創(chuàng)建的對(duì)象其所存放的目錄是不同的。應(yīng)用服務(wù)器創(chuàng)建的對(duì)象一般是存放在頂級(jí)目錄中,一般目錄的位置不能夠改變。相反,用戶自定義的對(duì)象,則可以分別根據(jù)所建立對(duì)象的特點(diǎn)來分門別類的建立目錄。最常見的還是根據(jù)構(gòu)件的類別和源代碼所處的模塊來建立目錄。這方便了用戶的查找。例如Ejb對(duì)象可以放在env/ejb目錄中。然后在這個(gè)目錄下面,再根據(jù)應(yīng)用系統(tǒng)的模塊創(chuàng)建幾個(gè)子目錄,來進(jìn)行分門別類的管理。
總之,JNDI命名服務(wù)采用了標(biāo)準(zhǔn)化與固定格式的手段,降低了技術(shù)門檻。與傳統(tǒng)的開發(fā)架購(gòu)相比,簡(jiǎn)化了類之間連接的管理,不需要通過很多的源代碼就可以實(shí)現(xiàn)類之間的調(diào)用。不過如果要使用好這個(gè)技術(shù),也有不少的難度。筆者這里講的難度,不是指技術(shù)上的。而是指經(jīng)驗(yàn)上的。如如果選擇合適的命名架構(gòu)、設(shè)計(jì)合理的命名規(guī)則等等,這些都需要開發(fā)人員具有一定的項(xiàng)目背景。否則的話,很難做出正確的判斷。
【J2EE Web架構(gòu)與CS架構(gòu)命名上的差異】相關(guān)文章:
J2EE與.NET技術(shù)架構(gòu)的比較10-28
J2EE架構(gòu)環(huán)境監(jiān)控系統(tǒng)設(shè)計(jì)10-22
云計(jì)算架構(gòu)技術(shù)與實(shí)踐08-28
紅帽認(rèn)證體系架構(gòu)介紹10-01
托?谡Z(yǔ)的邏輯架構(gòu)方法10-13
IMS系統(tǒng)中PCC架構(gòu)及引入07-17
企業(yè)考勤系統(tǒng)架構(gòu)建設(shè)08-20
流媒體系統(tǒng)架構(gòu)的應(yīng)用07-24