上個(gè)月,,JavaEye創(chuàng)始人范凱robbin的一篇博客《對(duì).NET系統(tǒng)架構(gòu)改造的一點(diǎn)經(jīng)驗(yàn)和教訓(xùn)》引起了大討論,里面提到了京東“去.Net化”,、“CSDN去.Net化”之類的詞刺激到了一些人的神經(jīng),,有的人在評(píng)論中破口大罵“.Net最牛逼,.Net搞不好是你技術(shù)不行”,,有的人則罵“.Net就是垃圾,,上不了大臺(tái)面”。有些朋友還在微博上at我,,問我“楊老師,,.net是不是不行了,聽說大網(wǎng)站都‘去.Net化’了”,、“楊老師,,關(guān)于‘去.Net化’你怎么看?”,所以我還是來談?wù)勊^的“去.Net化”吧,。 其實(shí)只要認(rèn)真看robbin的文章,,就會(huì)知道他并不是在說“去.Net化”而是在說“怎樣搭建合適的網(wǎng)站框架”。注意看這段話:
熟悉大型互聯(lián)網(wǎng)技術(shù)架構(gòu)的人應(yīng)該很容易的發(fā)現(xiàn),這個(gè)重構(gòu)過程其實(shí)就是一個(gè)“讓合適的東西干合適的事情”這樣一項(xiàng)工作:
其實(shí)任何一個(gè)大型互聯(lián)網(wǎng)基本都是這樣一個(gè)架構(gòu):前端使用nginx等做負(fù)載均衡,,使用Redis、memcached等做分布式緩存,,使用數(shù)據(jù)庫集群進(jìn)行讀寫分離之類的優(yōu)化,,使用分布式文件系統(tǒng)處理圖片等靜態(tài)文件。 請(qǐng)問,,使用PHP,、Java等做web服務(wù)器開發(fā)的大型互聯(lián)網(wǎng),哪個(gè)使用JSP內(nèi)置的Session對(duì)象做Session的,,不都要換用redis嗎,?哪個(gè)把圖片和php放到一個(gè)服務(wù)器的,不都放到文件服務(wù)器中嗎,?哪個(gè)一個(gè)apache服務(wù)器就可以扛起來的,,不都是nginx之類的擋在前面做負(fù)載均衡的嗎? 怎么不說“去php化”,、“去java化”呢,?要知道redis、memcached,、ngix之類的可都不是java,、php寫的呀,一個(gè)java項(xiàng)目竟然用其他語言寫的東西,,難道不丟面子,? 其實(shí)一個(gè)大型的系統(tǒng)中,根據(jù)項(xiàng)目的不同特點(diǎn)來組合搭配不同的產(chǎn)品,、組件是一個(gè)必然的過程,,去了解一下這些系統(tǒng)中“混搭”是常見的現(xiàn)象。單一產(chǎn)品中提供能的功能只能滿足普通項(xiàng)目的需求,,要想滿足復(fù)雜的項(xiàng)目,,必須把這些產(chǎn)品中提供的一些傻瓜化的簡(jiǎn)單組件用更專業(yè)的組件來替換,就像做小項(xiàng)目php中的Session足夠了,,但是大項(xiàng)目必須用c/c++開發(fā)的memcached來替換,。 我前陣子我發(fā)了一個(gè)帖子《【分享】.Net有哪些大型項(xiàng)目、大型網(wǎng)站的案例?》 ,,這個(gè)帖子中提到的.Net技術(shù)的大型網(wǎng)站絕大部分都是“混搭結(jié)構(gòu)”的(這些網(wǎng)站中至少有10個(gè)有傳智播客.Net培訓(xùn)班的學(xué)生,,我都跟他們交流過他們的技術(shù)架構(gòu))。很奇怪的一件事情是,,在Java,、PHP社區(qū)中經(jīng)常可以看到討論這些“架構(gòu)”的文章,,但是在.Net社區(qū)中則很少見到有人分享這些東西,。希望.Net社區(qū)中的技術(shù)大牛們以后能把這些經(jīng)驗(yàn)多多分享,讓更多的人能夠了解這些技術(shù)并且在項(xiàng)目中應(yīng)用這些技術(shù),,提升.Net社區(qū)討論技術(shù)的層次,,不要讓.Net社區(qū)的人總是在討論一些很初級(jí)的問題,最起碼不要只是為了不同網(wǎng)頁頭尾統(tǒng)一就使用又笨又重的MasterPage(其實(shí)用一下shtml就可以了),、不要討論個(gè)三層架構(gòu)就認(rèn)為是架構(gòu)師了,、不要弄個(gè)代碼生成器就是高科技了……咱們也要真正的擁抱Best Practice、擁抱混搭,。 不希望這個(gè)博文又成為不同語言相互攻擊的月經(jīng)貼,,希望大家討論一些真正有用的東西。 |
|