国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.NET和J2EE該相互學(xué)習(xí)什么?

2024-07-10 13:11:26
字體:
供稿:網(wǎng)友

[前言] 寫這篇post源于我既做過.net開發(fā)又做過j2ee開發(fā)的經(jīng)歷。在這樣的轉(zhuǎn)變過程中,我對單一平臺開發(fā)所帶來的思維局限性有了很多清晰卻零散的想法。在看了振河兄的頁面間傳遞變量的方法及使用范圍的討論之后,我更能體會到在不同的平臺進(jìn)行開發(fā),思維方式會是如此之不同,原來那些零散的想法也隨之不斷在腦海中涌現(xiàn),讓我有了寫下這篇post的沖動。其實(shí)我一直都在宣揚(yáng)一種觀點(diǎn):技術(shù)之間是相通的,精于觸類旁通,善于聯(lián)想是我們程序員應(yīng)有的優(yōu)勢。我們在專注.net技術(shù)的時候,不妨在工作間隙休息的時候看看.net外面的世界。

提到.net和j2ee,一般都會想到它們之間兵戎相見,水火不容的關(guān)系,畢竟兩者都在努力地去虜獲程序員的青睞,占領(lǐng)更多的市場份額。我無意去鼓吹.net是如何如何之強(qiáng)大,j2ee是如何如何的成熟,也無意去探究nhibernate,spring.net等等project的起源,只想從一個程序員的角度去看待兩者在互相競爭的過程當(dāng)中到底相互借鑒了什么,同時探討一下同時了解兩個領(lǐng)域知識的必要性。好,讓我們言歸正傳。

還記得2003年初,我到了dell公司實(shí)習(xí),所承擔(dān)的工作任務(wù)就是建立一個web application供多個有密切聯(lián)系的部門使用,以提高部門間的協(xié)作程度。在選擇用什么技術(shù)來做這個web application的時候,我放棄了比較熟悉的asp,進(jìn)而選擇了asp.net。正是做這個project,我跟asp.net乃至.net結(jié)下了不解之緣。當(dāng)時第一次接觸到asp.net,第一個感覺就是,它比asp好多了,再也不用像寫asp那樣在html嵌套著一堆堆的scriptlet,動態(tài)內(nèi)容的呈現(xiàn)都包含在一個個方法中,如page.oninit()和page.onload()等等,這些方法讓我看到client端js方法的影子。在開發(fā)asp.net頁面的過程中,我需要做的就是在頁面中引入不同的web control或者是html control,這些controls與html標(biāo)簽是何等的類似,除了它有asp的prefix和那時看起來如magic一般的runat="server"。這樣的相似性讓熟悉html和js的我很快掌握了asp.net的基本應(yīng)用,而我也以極高的效率完成了公司分配給我的任務(wù),盡管我對諸如request、response、session和application這樣的對象并不是十分了解。asp.net所帶來的進(jìn)步是革命性的,難怪有朋友認(rèn)為asp.net是.net家族中最為成功的產(chǎn)品了。我當(dāng)時只是拿asp.net來跟asp作對比,其優(yōu)越性自然顯露無遺,尤其是在控件設(shè)計(jì)方面的優(yōu)勢。事實(shí)上直到后來進(jìn)入j2ee的開發(fā)領(lǐng)域,我依然對asp.net的開發(fā)方式贊賞有加。microsoft在技術(shù)的創(chuàng)新上一直秉持削弱領(lǐng)域開發(fā)特性的原則,讓開發(fā)人員能夠在不同的開發(fā)領(lǐng)域中都可以輕松上手,游刃有余。asp.net的出現(xiàn)帶來了webform,而在桌面程序開發(fā)中則有winform,兩者相通的地方隨處可見,這讓原有的桌面程序開發(fā)人員可以平滑的過渡到web application開發(fā)中來;asp.net對于控件在設(shè)計(jì)以及使用上的支持堪稱完美,也為網(wǎng)頁設(shè)計(jì)人員進(jìn)入asp.net開發(fā)領(lǐng)域掃除了不少的障礙。反觀j2ee領(lǐng)域,做swing開發(fā)的人員,如果要學(xué)習(xí)web的開發(fā),原有的知識幾乎無用武之地了。在這個人氣就是財(cái)富的年代,在一定層面上求同存異,讓開發(fā)人員能夠一通百通,無疑是一個十分明智的做法。j2ee領(lǐng)域也開始意識到了這一點(diǎn),將swing概念應(yīng)用到的wicket framwork的發(fā)布著實(shí)是一個極大的進(jìn)步啊。j2ee在降低的難度,吸引入門級開發(fā)人員方面需要向.net好好請教一番了。

好,個人經(jīng)歷接著說。2003年底,我進(jìn)入了一家軟件公司從事j2ee的開發(fā)工作。當(dāng)時公司技術(shù)部門負(fù)責(zé)人在面試我的時候提到了我缺乏j2ee的開發(fā)經(jīng)驗(yàn)的問題,我信心滿滿的告訴他,我做過.net的項(xiàng)目,而.net和j2ee都是專注在企業(yè)級應(yīng)用上的,因此肯定會很快上手,不會有什么問題。然而后來的工作證明了平臺之間的差異性是很大的,從.net過渡到j(luò)2ee并不是一件輕松的事情。沒有了熟悉的web control,取而代之的是簡陋的tag library;沒有了簡單易用的event-driven的方法,呈現(xiàn)眼前的是doget、dopost、dohead和service這樣看似丑陋的面孔。蛻變的過程是痛苦的,但是蛻變帶來了進(jìn)化。開發(fā)方式的改變讓我可以從一個更加深入的層面去看待,而我開始重新認(rèn)識web application。的復(fù)雜性在很大程度上源于http是一個無狀態(tài)的連接協(xié)議,web server不管你是michael,還是jordon,只要你在瀏覽器上使用了相同的url,就會得到相同的資源。在這里,你必須清楚url到底是什么的縮寫。也許你會站出來反駁我剛才所說的結(jié)論,但是這種情況在只有靜態(tài)html網(wǎng)頁的年代是絕對正確的。隨著時代的發(fā)展,資源已經(jīng)不再局限于靜態(tài)的html網(wǎng)頁,隨之出現(xiàn)了所謂的動態(tài)網(wǎng)頁。這里的動態(tài)不是指充滿flash動畫的網(wǎng)頁,而是指網(wǎng)頁的內(nèi)容會根據(jù)不同的request而發(fā)生變化。雖然web的內(nèi)容開始個性化了,但是仍然沒有脫離client發(fā)送request,server返回response這樣的模式。由于http是一個無狀態(tài)的連接協(xié)議,為了能夠識別用戶訪問同一資源的狀態(tài),在j2ee的世界里,我們就得從request、response和session這樣的對象入手,控制這些對象的life cycle。因此,我們哪怕要進(jìn)行最為簡單的web應(yīng)用程序,都必須對request、response和session這樣的對象有充分的了解。關(guān)注這些基本的對象,讓我們對于應(yīng)用程序的flow有更為準(zhǔn)確的把握,能夠更好地進(jìn)行模塊地劃分,便于開發(fā)人員進(jìn)行協(xié)作。然而在.net的世界里,對request和session這樣的對象關(guān)注遠(yuǎn)不如對page的關(guān)注,從振河兄的post就可見一斑了。asp.net開發(fā)降低了開發(fā)難度,卻在一定程度上阻礙了開發(fā)人員對web application的整體把握,正如春魚兄的feedback中提到的,過分糾纏頁面之間關(guān)系,“不利于系統(tǒng)整體架構(gòu)的良好設(shè)計(jì)”。j2ee的應(yīng)用程序可以讓程序員在web application的整體架構(gòu)上有一個很好的體現(xiàn),.net還是得好好努力啊!建議.net的程序員能夠嘗試著利用j2ee的技術(shù)來開發(fā)一個簡單的web application,我相信這樣的一個過程會讓你對有進(jìn)一步的認(rèn)識。

進(jìn)入了j2ee的領(lǐng)域,除了開發(fā)方式變了,buzz words也跟著改變了。兩個使用頻率極高的詞匯充斥著每天的工作,一個是mvc,另一個則是framework。我感慨于pattern在j2ee中使用的廣泛性,感慨于應(yīng)用實(shí)現(xiàn)了mvc模式的framework竟然可以讓龐大的團(tuán)隊(duì)協(xié)同開發(fā)一個project。那時的我開始相信pattern的廣泛應(yīng)用給軟件開發(fā)帶來的變化是巨大而深遠(yuǎn)的,也開始閱讀《core j2ee patterns》并從中獲益。而在.net的世界里,對pattern的重視則遠(yuǎn)不如j2ee,盡管這樣的情況在改變。說到了mvc,不得不對這樣一個份量很重的詞匯做些陳述了。jsp的發(fā)展經(jīng)歷了兩個階段:jsp model1和jsp model2。在model1中是jsp和javabean的結(jié)合,在一定程度上實(shí)現(xiàn)了mvc,但是model與control之間的耦合仍然普遍存在;而model2則真正實(shí)現(xiàn)了mvc:jsp作為presentation層,負(fù)責(zé)數(shù)據(jù)的顯示;servlet充當(dāng)著一個request dispatcher的角色,將request分發(fā)至不同的處理business的模塊中,它就是一個指揮官,扛著controller這面大旗;而vo則是一個數(shù)據(jù)的載體,是mvc三角中的model。mvc的概念是進(jìn)入j2ee開發(fā)領(lǐng)域必備的,從你做第一個簡單的應(yīng)用程序開始,從你看第一篇關(guān)于j2ee開發(fā)的文章開始,而豐富的開源mvc framework也成為了我們學(xué)習(xí)mvc pattern的良好教材。對j2ee有了初步的認(rèn)識之后,就可以選擇一些優(yōu)秀的mvc framework來研究了,例如webwork和spring。這對于學(xué)習(xí)系統(tǒng)整體架構(gòu)設(shè)計(jì)方面是大有裨益的。

也許物極必反真的是一條不變的真理,j2ee領(lǐng)域中對于開發(fā)framework的追求可謂之瘋狂,大家朝這里看:wicket - introduction。你會發(fā)現(xiàn)可以用來開發(fā)web application的framework竟然達(dá)到了55個,并且還在日益增加。事實(shí)上j2ee開發(fā)的軟肋不在于control這個層面,而是在view。許多天才的精力都耗在重復(fù)制造輪子上,卻沒有想辦法去完善一個或者多個framework,這不得不讓人感到痛心啊!在這一點(diǎn),j2ee是不是得向.net好好學(xué)習(xí)一下呢?在.net的世界里,最受關(guān)注的應(yīng)該是控件的開發(fā)了,一個設(shè)計(jì)良好,功能強(qiáng)大的控件對于提高開發(fā)效率無疑是極好的助推器。很多.net的開發(fā)人員都將精力花在設(shè)計(jì)控件上,.net就像一個聚寶盆一樣,不斷匯聚開發(fā)人員智慧結(jié)晶。在j2ee的世界里,為了減少這種資源浪費(fèi)的情況,wicket framework的出現(xiàn)了。它強(qiáng)調(diào)組件設(shè)計(jì)和組件重用,讓開發(fā)人員集中精力于組件的開發(fā),從而增強(qiáng)framework的功能已經(jīng)易用性。但愿,wicket framework能夠?yàn)閖2ee世界帶來少許的改變吧!

說著說著,真的有點(diǎn)野馬脫韁的感覺了。不知道說了半天,大家是否明白我真正的用意呢? 在這個技術(shù)如此open的年代,.net的程序員應(yīng)該去了解j2ee,反之亦然。我想,相互學(xué)習(xí),共同進(jìn)步這句再普通不過的話可以概括這羅羅嗦嗦的數(shù)千字吧。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 军事| 喀什市| 滁州市| 怀化市| 理塘县| 博乐市| 商河县| 黔南| 木里| 女性| 泾源县| 通河县| 富民县| 聂拉木县| 福州市| 桐庐县| 太原市| 西安市| 通河县| 大余县| 长兴县| 尼玛县| 乌拉特后旗| 浮梁县| 察雅县| 兴海县| 台东县| 茂名市| 叙永县| 沅江市| 叙永县| 健康| 昌乐县| 濮阳县| 塔河县| 福贡县| 嘉定区| 万荣县| 长子县| 英吉沙县| 安庆市|