空間站

          北極心空

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
          我繼續(xù)寫(xiě)這個(gè)Post的時(shí)候,我專(zhuān)門(mén)到Mono的站點(diǎn)下載了Mono的運(yùn)行時(shí)和類(lèi)庫(kù)的完整源代碼。用來(lái)兩天的時(shí)間閱讀了一些類(lèi)庫(kù)如ASP.NET,XML等等的源代碼,必須承認(rèn),通過(guò)這兩天源代碼的閱讀讓我原先的一些想法有稍微的改變。

          從微軟的戰(zhàn)略來(lái)看,是希望將用戶(hù)毫無(wú)條件的鎖定在Windows操作系統(tǒng)之上,有人的地方就有計(jì)算機(jī),有計(jì)算機(jī)的地方就有Windows。這是微軟多年來(lái)傾其全力的追逐的夢(mèng)想。在桌面操作系統(tǒng)上除了Apple的茍延殘喘之外,還有一部分反微軟斗士使用的基于Linux的桌面系統(tǒng)之外,其他無(wú)一不是微軟帝國(guó)在統(tǒng)治。也許這里有人會(huì)攻擊我對(duì)于Linux的看法,也不止一次的聽(tīng)到有人對(duì)我說(shuō)“你根本不懂Linux”,所以一切的評(píng)論都是不夠公允的。不曾經(jīng)懷疑過(guò)Linux在服務(wù)器市場(chǎng)上的沖擊力,也正是在服務(wù)器領(lǐng)域的成就讓芬蘭大學(xué)生Linus Torvalds的無(wú)心之作在短短的10多年內(nèi)成為最流行的服務(wù)器操作系統(tǒng),但是在桌面領(lǐng)域呢?你可以告訴我已經(jīng)有很好的操作系統(tǒng),包括我們國(guó)內(nèi)那幾家扛著“振興民族軟件產(chǎn)業(yè)”大旗的企業(yè),從國(guó)家拿走大筆大筆的錢(qián),也做出了一個(gè)表面看起來(lái)像模像樣的“為中國(guó)人設(shè)計(jì)”的Linux操作系統(tǒng),但是有多少人真正在用,明眼人都會(huì)看明白的。當(dāng)然也有人會(huì)罵,用著D版的Windows在網(wǎng)上沖浪,然后憤恨不平的陳述微軟霸權(quán)。

          作為微軟,總會(huì)盡可能的將用戶(hù)鎖定在Windows之上,那么.NET也不會(huì)例外,為了確保不允許被“拷貝”到其他操作系統(tǒng)之上,在類(lèi)庫(kù)的設(shè)計(jì)上正如上面提到的會(huì)采用“底層API”。盡管微軟也提交了CLI,提交了C# Spec,但是遵循了ECMA標(biāo)準(zhǔn)的C#和微軟自己的標(biāo)準(zhǔn)有多少區(qū)別嗎?

          有,正因?yàn)闃?biāo)準(zhǔn),所以有了Mono這樣?xùn)|西的出現(xiàn)

          沒(méi)有,因?yàn)镸ono僅僅是Mono,而不是.NET。

          ?

          你可以質(zhì)疑我這樣自相矛盾的回答,也可以說(shuō)我不懂Linux,更加可以說(shuō)我不了解Mono。我的朋友Kaneboy告訴我越來(lái)越發(fā)現(xiàn)Mono是一個(gè)好東西,等我閱讀了部分的源代碼之后我也認(rèn)為Mono是一個(gè)好東西,但是它是.NET嗎?也許你可以從我下面的文字中找到一些答案。

          如果你是一個(gè).NET架構(gòu)師,那么我建議你一定要去閱讀Mono的源代碼,因?yàn)镸ono可以告訴你很多你之前不可能知道的東西,你會(huì)看到很多你一直想看到卻沒(méi)有機(jī)會(huì)看到的東西,就比如ASP.NET、ADO.NET。相信在VS.NET或者Web Matrix的幫助下你能夠?qū)懗龊苎5捻?yè)面,能夠?qū)懗龊芷恋目丶矔?huì)感覺(jué)到比之前的ASP更加得心應(yīng)手,但是你會(huì)發(fā)現(xiàn)一些東西你始終無(wú)法突破,比如很多文檔會(huì)告訴你ASP.NET Page對(duì)象模型,會(huì)告訴你頁(yè)面的在整個(gè)HttpApplication管道化過(guò)程中的遷移,會(huì)告訴你可以啟用Session,可以啟用片斷緩存,但是始終無(wú)法明白Web應(yīng)用中Session的底層是如何設(shè)計(jì)和考慮的,如何真正有效的提高你的緩存設(shè)計(jì)策略。一切盡在Mono,相信那些源代碼能夠解開(kāi)你一些困撓許久的疑惑。

          但是,目前的Mono僅僅是在跟Microsoft在走,如果你去閱讀過(guò)源代碼,然后也用Reflector看過(guò)微軟自身對(duì)于類(lèi)庫(kù)的實(shí)現(xiàn),你會(huì)發(fā)現(xiàn)作為追隨者真的很辛苦,對(duì)于一些核心的實(shí)現(xiàn),微軟僅僅是對(duì)于原有的技術(shù)做了一個(gè)包裝,然后通過(guò).NET統(tǒng)一編程接口,而Mono卻需要一切從零開(kāi)始。前文提到了微軟會(huì)不遺余力的將所有技術(shù)鎖定在Windows操作系統(tǒng)之上,那么從這個(gè)角度來(lái)說(shuō)他絕對(duì)不運(yùn)行有一個(gè)同樣的產(chǎn)品出現(xiàn)在非自己統(tǒng)計(jì)的操作系統(tǒng)平臺(tái)上,對(duì)于Mono,也如同對(duì)于Application Server的策略是一致的,因?yàn)槲④洷日l(shuí)都明白,如果讓框架運(yùn)行時(shí)(CLR)和應(yīng)用服務(wù)器獨(dú)立于操作系統(tǒng),那么Windows就失去了最后的技術(shù)壁壘,不知道大家是否記得當(dāng)年的Visual J++,為了將Java鎖定到Windows,微軟開(kāi)發(fā)了WFC,并且允許使用Visual J++開(kāi)發(fā)COM組件,Sun后來(lái)告發(fā)了微軟一把,理由很簡(jiǎn)單,因?yàn)槲④浀摹半U(xiǎn)惡用心”和破壞了Java世界的“純潔性”,平心而論,如果忽略微軟對(duì)于Java的改動(dòng),甚至僅僅將Visual J++當(dāng)著一門(mén)新的語(yǔ)言(比如Pre-C#,當(dāng)然了,這是我在胡扯),依托于WFC的強(qiáng)大,作為Anders加盟微軟之后打造的第一個(gè)產(chǎn)品,Visual J++在windows開(kāi)發(fā)上就我個(gè)人的感覺(jué)來(lái)看已經(jīng)超越Visual Basic。

          從文化而言,Mono是一個(gè)自由斗士,它打破了.NET只能夠在Windows上運(yùn)行的限制,同樣也幫忙微軟印證了.NET可以跨平臺(tái)。但是微軟真的系統(tǒng)跨平臺(tái)的.NET嗎?肯定不是的,如果所有的開(kāi)發(fā)商都使用.NET開(kāi)發(fā),而.NET同樣可以運(yùn)行于任何操作系統(tǒng),那么Windows就不是唯一的選擇,開(kāi)放源代碼、免費(fèi)(這里提及的可能不是特別準(zhǔn)確)的Linux會(huì)更加成為主流。如果你是商人,你將如何選擇?因此沒(méi)有任何一個(gè)理由讓微軟的.NET要去跨平臺(tái),當(dāng)然商業(yè)上標(biāo)榜的跨平臺(tái)是另外一個(gè)策略問(wèn)題了。

          鑒于上述,Mono注定是永遠(yuǎn)的追隨者,1.1的框架還沒(méi)有在Mono下面完全實(shí)現(xiàn),而.NET 2.0又快要推出,如果你稍微那么了解一點(diǎn)點(diǎn)的Whidbey(Visual Studio 2005的開(kāi)發(fā)代號(hào)),你知道.NET 2.0相對(duì)于1.1已經(jīng)改變很多很多,那么Mono究竟有多少力量能夠在時(shí)間上不被微軟甩開(kāi)太遠(yuǎn)。我這里沒(méi)有答案,也許誰(shuí)也沒(méi)有。如果你是學(xué)習(xí),那么有很多理由建議你去看看mono,如果是你研究,那么有更多的理由選擇Mono。如果你是一個(gè)商人或者架構(gòu)師,要找出在商業(yè)上選擇Mono的理由確實(shí)很難,真的,很難……

          Mono only is mono,not .net never

          posted on 2006-12-13 12:55 蘆葦 閱讀(324) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 其他.NET
          主站蜘蛛池模板: 油尖旺区| 紫金县| 阿城市| 辉县市| 黎川县| 遂溪县| 扎囊县| 彝良县| 云龙县| 镇坪县| 平山县| 余江县| 五常市| 屯留县| 翼城县| 敦煌市| 突泉县| 虎林市| 广平县| 晴隆县| 诸暨市| 玉树县| 来宾市| 华安县| 余庆县| 太原市| 梅州市| 通渭县| 文安县| 临桂县| 昔阳县| 保康县| 新平| 泰顺县| 全南县| 崇义县| 枝江市| 壤塘县| 新密市| 衡东县| 井冈山市|