企業(yè)級應(yīng)用開發(fā)架構(gòu)的現(xiàn)狀與趨勢 - Part 1

目錄

  1. 單頁面Web應(yīng)用以及Java企業(yè)應(yīng)用的問題
  2. API、SOA洪囤、ESB之通俗解釋
  3. 什么是BPM灵莲,我們需要它嗎潮秘?
  4. 我是程序員,我只寫Java或者JavaScript养交,有必要學(xué)習(xí)CSS嗎精算?

緣起

隨著互聯(lián)網(wǎng)近年來的迅猛發(fā)展,尤其是單頁面Web應(yīng)用(Single Page Web Application)以及Node.js的興起碎连,使得客戶端和服務(wù)器端的界限越來越模糊了灰羽。

客戶端從原來僅僅是展示頁面和簡單的校驗邏輯轉(zhuǎn)變?yōu)橐粋€擁有完全狀態(tài)的由JavaScript驅(qū)動的應(yīng)用程序。
服務(wù)器端從原來的All-In-One(取數(shù)據(jù),執(zhí)行業(yè)務(wù)邏輯谦趣,渲染頁面)到僅僅負責(zé)取數(shù)據(jù)和執(zhí)行業(yè)務(wù)邏輯的無狀態(tài)的Restful Service Provider疲吸。

未來的企業(yè)級應(yīng)用的架構(gòu)的方向以及技術(shù)實現(xiàn)可能會有非常大的改變,這個系列文章是我對于Java企業(yè)級應(yīng)用現(xiàn)狀的理解以及未來的展望前鹅。

把渲染頁面的功能從服務(wù)器端剝離出來之后摘悴,帶來的以下主要的優(yōu)勢

  • 服務(wù)器端無需保存任何客戶端的狀態(tài)從而使得Cluster變得平凡,提升了服務(wù)器的處理容量
  • 一個服務(wù)器端的實現(xiàn)能夠支撐不同類型的客戶端比如瀏覽器舰绘,IOS蹂喻,Android
  • 使得切換服務(wù)器端技術(shù)棧的成本降低,原先所有的頁面都可以復(fù)用捂寿。比如我有l(wèi)egacy的Java系統(tǒng)有非常復(fù)雜的功能口四,我新的系統(tǒng)想用其它平臺開發(fā)比如Node.js,我不會損失任何東西秦陋,原先的Java系統(tǒng)的接口都可以調(diào)用蔓彩。如果按照以前的做法,整個頁面都是用JSP或者JSF開發(fā)驳概,那么基本上只有推倒重來了
  • 開發(fā)頁面的和開發(fā)服務(wù)器端的可以并行進行赤嚼,互不干擾
  • 使得在頁面中寫SQL和寫業(yè)務(wù)邏輯變得不可能,一些老的Java系統(tǒng)經(jīng)常有人圖省事顺又,把SQL直接寫在JSP里面

開發(fā)人員和管理人員的困惑

在一次和項目內(nèi)部開發(fā)人員的交流的過程中更卒,我介紹了這個思路,不出所料的稚照,得到了很多問題蹂空,比如

  • JavaScript作為一個弱類型語言,能夠支撐大的代碼量嗎果录?
  • JavaScript沒有Eclipse上枕,沒有自動完成,叫我怎么寫代碼弱恒?
  • 聽說Twitter已經(jīng)從Client Side渲染轉(zhuǎn)向Server Side渲染了姿骏,是不是說還是Server Side渲染性能好?
  • 聽說FaceBook已經(jīng)在手機上放棄HTML5了斤彼,是不是出了什么狀況分瘦?
  • 公司已經(jīng)在JSF上投入了這么多了精力,難道要放棄琉苇?
  • 停止搗鼓新玩意嘲玫,都是沒有經(jīng)過考驗的東西,放在生產(chǎn)上能行嗎并扇?

我認為這些都是很好的問題去团,而且都不是一兩句話能夠說清楚的。有一點是確定的,人都是不太愿意改變的土陪,尤其是自己已經(jīng)非常熟悉的東西昼汗。我個人也是這樣走過來的,再認識到這些之前鬼雀,我用過JSF顷窒,Vaddin等等Server Driven的框架,當(dāng)時由于我的背景以及當(dāng)時項目的緊迫性源哩,沒有足夠的能力來做完整的評估鞋吉。后來慢慢的在項目發(fā)展中,碰到了種種困難励烦,現(xiàn)在看來谓着,雖然說當(dāng)時的選擇從現(xiàn)在來看是錯誤的,但是正是因為有失敗才讓我有動力去尋找正確的東西坛掠,正當(dāng)我毫無頭緒的時候赊锚,AngularJS進入了我的視線

AngularJS

在接觸這個框架之前,我一直認為JavaScript只是個玩具語言屉栓,在加上網(wǎng)上各種對于這門語言的口誅筆伐舷蒲,我一直對于它嗤之以鼻。但是在深入了解AngularJS之外系瓢,我徹底改變了想法阿纤。Module句灌、Directive夷陋、Data Binding等等,直到現(xiàn)在胰锌,我仍然不能忘記當(dāng)初的驚喜骗绕。
如果說AngularJS讓我有了前面所說的思路,那么更為重要的是资昧,它為我打開了更加精彩的Node世界的大門酬土。沒有了語言的障礙,Node很自然的成為了我今年最為重要學(xué)習(xí)主題之一格带。

Java企業(yè)應(yīng)用的問題

如果說AngularJS完成了客戶端問題撤缴,那么我們?nèi)匀恍枰环N方法來解決服務(wù)器開發(fā)效率和端性能問題。在這個方面叽唱,以Spring為主的主流框架幾乎已經(jīng)壟斷了企業(yè)級應(yīng)用的開發(fā)屈呕。如果你去問一個Java開發(fā)人員,也許5年前和現(xiàn)在相比沒有本質(zhì)的區(qū)別棺亭。如果說Java企業(yè)應(yīng)用最大的優(yōu)勢是什么虎眨,很多架構(gòu)師都會告訴你有非常成熟的框架和架構(gòu),而且Java語言就像普通話,外面到招人很好招嗽桩,照此說來岳守,Java解決方案就一點問題也沒有了嗎?

肯定不是B狄薄J !Java現(xiàn)有架構(gòu)最大的問題就是种樱,雖然Java是一個完全OO面向?qū)ο蟮恼Z言蒙袍,但是我們開發(fā)過程卻只把它當(dāng)作是過程式語言來用!D奂贰害幅!你一定會問這是為什么呢?那請你看看你的代碼岂昭,你的所有的POJO只是用來作為Hibernate Annotation的載體而已以现,而所有的業(yè)務(wù)邏輯都在所謂的Service類和Dao類中,那些類都是由一堆方法構(gòu)成的约啊,所有的這些其實都是與所謂的OO設(shè)計背道而馳的邑遏。

但是OO真的是解決問題的銀彈嗎,答案還是否定的恰矩。OO用來建模一個小范圍的概念沒有問題记盒,但是如果想要用來描述現(xiàn)實世界中真正復(fù)雜的業(yè)務(wù)就有點力不從心了。想著過去多少次大家為模型應(yīng)該是什么樣子來爭論不休外傅,到頭來誰也說服不了誰纪吮,我們都在尋找完美的模型,但是不幸的是萎胰,這樣的模型要么不存在碾盟,要么就過于復(fù)雜,導(dǎo)致一般人無法理解技竟。

另外舉一個簡單例子冰肴,每個稍微用過Spring都知道Dependency Injection,依賴反轉(zhuǎn)榔组,但是即使是很資深的開發(fā)人員仍然從來沒有用過構(gòu)造函數(shù)注入熙尉。

Java應(yīng)用到最后都趨向一個大一統(tǒng)的野獸,大家回想一下搓扯,有多少次检痰,因為一個無關(guān)緊要的Service配置問題,導(dǎo)致整個Web應(yīng)用啟動不了擅编。有多少次你修改了一個函數(shù)甚至頁面攀细,結(jié)果要求完全重啟JVM箫踩,要花個幾分鐘的時間重啟Tomcat。

有多少次上面管理人員讓你寫單元測試谭贪,然后你發(fā)現(xiàn)境钟,要寫一個單元測試,必須加載整個Spring環(huán)境俭识,跑一個單元測試要花幾分鐘時間等Spring幫你初始化好一大堆無關(guān)緊要的beans慨削。到頭來,你不得不放棄套媚,因為寫一個單元測試的成本太高了缚态。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市堤瘤,隨后出現(xiàn)的幾起案子玫芦,更是在濱河造成了極大的恐慌,老刑警劉巖本辐,帶你破解...
    沈念sama閱讀 212,686評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桥帆,死亡現(xiàn)場離奇詭異,居然都是意外死亡慎皱,警方通過查閱死者的電腦和手機老虫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茫多,“玉大人祈匙,你說我怎么就攤上這事√煲荆” “怎么了夺欲?”我有些...
    開封第一講書人閱讀 158,160評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宝剖。 經(jīng)常有香客問我洁闰,道長歉甚,這世上最難降的妖魔是什么万细? 我笑而不...
    開封第一講書人閱讀 56,736評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮纸泄,結(jié)果婚禮上赖钞,老公的妹妹穿的比我還像新娘。我一直安慰自己聘裁,他們只是感情好雪营,可當(dāng)我...
    茶點故事閱讀 65,847評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著衡便,像睡著了一般献起。 火紅的嫁衣襯著肌膚如雪洋访。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,043評論 1 291
  • 那天谴餐,我揣著相機與錄音姻政,去河邊找鬼。 笑死岂嗓,一個胖子當(dāng)著我的面吹牛汁展,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播厌殉,決...
    沈念sama閱讀 39,129評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼食绿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了公罕?” 一聲冷哼從身側(cè)響起器紧,我...
    開封第一講書人閱讀 37,872評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎楼眷,沒想到半個月后品洛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,318評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡摩桶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,645評論 2 327
  • 正文 我和宋清朗相戀三年桥状,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硝清。...
    茶點故事閱讀 38,777評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡辅斟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芦拿,到底是詐尸還是另有隱情士飒,我是刑警寧澤,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布蔗崎,位于F島的核電站酵幕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏缓苛。R本人自食惡果不足惜芳撒,卻給世界環(huán)境...
    茶點故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望未桥。 院中可真熱鬧笔刹,春花似錦、人聲如沸冬耿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亦镶。三九已至日月,卻和暖如春袱瓮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背爱咬。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工懂讯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人台颠。 一個月前我還...
    沈念sama閱讀 46,589評論 2 362
  • 正文 我出身青樓褐望,卻偏偏與公主長得像,于是被迫代替她去往敵國和親串前。 傳聞我的和親對象是個殘疾皇子瘫里,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,687評論 2 351

推薦閱讀更多精彩內(nèi)容