.NET Framework開源好處分析
.NET Framework終于將面向大眾進行開源。對于.NET Framework開源,究竟能給我們帶來一些什么好處呢?一些.NET Framework的源代碼開放了,基于MS-RL許可,并提供調試整合到VS 2008當中了。從旁觀者的角度來說,這是Microsoft邁向開放與社區化合作的一大步,很多人也把這當作歷史性事件,然而對于一般的開發者而言呢?這事情到底有多大影響力呢?#t#
我認為對于開發者來說,不同角色的開發者遭受的影響是不同的,并且整體影響是導致分工繼續細化。.NET最內層的本質是什么?Microsoft曾經非常引以為豪的COM,.NET只是這種思想一路實踐并且進化而來的結果。
.NET最開始設計為滿足RAD的需求,以便吸引使用其他語言、框架的程序員轉移過來,然而開放源代碼后RAD的程序員仍然是RAD的,這對他們幾乎沒有任何影響。想象你是一個習慣于拖放一切的ASP.NET開發者,基本上不想寫任何業務邏輯之外的代碼,數據訪問層用Typed DataSet或者Linq to Sql搞定,界面用現成的Control和Extender,Microsoft這次提供的源代碼對你有什么意義嗎?
因為你不需要自己編寫Control或者Extender,自然你不會花時間去了解有關的模式,也無須查看內置控件的代碼。如果你調用內置控件出問題了,在Google以及調試內置控件之間,你顯然會選擇前者。因此,對于習慣于RAD的程序員來說,開放源代碼這件事是沒有任何直接影響的。
然而,.NET Framework開源有些間接影響是不能忽略的。前面提到了使用Google搜索問題的解決方案,然而Google自身并不懂得解決問題,答案其實來自于其他已經把問題解決了的程序員,因此這些源代碼如果確實幫助了其他類型的程序員解決了問題,那么也就間接幫助了RAD程序員。
那么,還有哪些類型的程序員呢?例如,做稍微底層一些工作的,編寫Control、Extender、HttpHandler、HttpModule等可復用組件以便為自己或別人提供方便的。編寫可復用組件最糟糕的地方就在于它是可復用的——你永遠不知道別人會將它以什么樣的方式用在什么樣的環境,因此按照一定的模式開發這些組件以便保證兼容性就很有必要,而模式本身***就參考自.NET Framework內置的同類組件,除非你想更大范圍地研究.NET Framework并重新發明輪子。
因此研究與模仿內置組件的行為是組件開發者的必修課,而從ScottGu文章(Releasing the Source Code for the .NET Framework Libraries)中的截圖看來,內置組件豐富的注釋將有助于程序員更輕松地理解其原本的設計方式,從而更輕松地在自己的組件中模仿內置組件的行為。事實上,有很多內置組件是設計為對另外一些內置組件特別照顧的,這類型的耦合在Reflector中閱讀代碼時是最難以理解的,如果閱讀有注釋的代碼相信會輕松不少。
***,.NET Framework開源可能將會導致對.NET Framework進行純粹思想或理論作研究的人數增加。事實上,無論.NET Framework多么傾向于實用型,如果Microsoft需要獲取來自社區的創新思想,還是必須吸引一群思想家的,否則大多數的社區創新都只是應用與應用方法,Microsoft還是獨攬.NET Framework前進方向的控制權。這種中央集權有它高效的地方,特別是發展初期,Microsoft能夠根據自己的實力戰略性地安排新特性的研發順序。
然而Microsoft也曾經因此吃虧,例如ASP.NET 2.0沒能引入AJAX支持,直到***才急忙補上一個Callback特性,并承諾日后開發完整的AJAX庫。因此,傾聽來自社區的觀點很重要,而要求社區有觀點就必須先提供素材給他們討論,開放源代碼將能夠激發社區對.NET Framework開源的研究熱情并且提供更多能夠作為反饋信息的新觀點。
因此,就.NET Framework開放源代碼這樣一件事情而言,對于不同的開發者其影響的大小是不同的。同時我們也能預期Microsoft本身肯定也是***的受惠者之一,否則以其智慧絕對不會做這樣一個決策。