選擇PHP還是 ASP.NET:你做了正確選擇麼?(個人觀點,但是也是受了行業內大多數人得影響吧)

設想一下,如果你可以回到過去,改寫你的技術生涯。哪些重要的時刻,你會想改變? 在2001年,我曾作爲一家成功的網站諮詢公司的共同合夥人,去處理有關 Classic ASP 的事情。當時,這些事情是很了不起的。我們是一家微軟產品的經銷商,並且爲此感到自豪!但是……在那時,我曾面臨一個選擇,去學PHP或者ASP.NET。 我最終選了後者,但我依然懷疑這個選擇其實並不好。


  在2001年,我是一家成功的網站諮詢公司的共同合夥人,去處理有關 Classic ASP 的事情。當時,這些事情是很了不起的。我們是一家微軟產品的經銷商,並且爲此感到 自豪!但是……

  我曾用過早期的.NET 並且很痛恨它。我討厭Visual Studio。我不知道 C#,而 VB.NET 看起來就像一個笑話。我記得我坐在奧克蘭到舊金山的船上,決定學習 ASP.NET的基礎來應對工作,而一邊又不停的問自己一個問題。你究竟要多努力才能搞懂這些?


  那天我去工作,並且和我的合作人坐在一起。我告訴他 “.NET” 已經脫軌了。他笑了笑,然後那天,我們有了一次關於我們公司和我的未來 的談話。我熟悉classic ASP,IIS SQL 服務器,windows NT/2000 – 我知道如何處理這些事 情。我並不知道 Linux 或者 MySQL,但是我通過閱讀代碼可以發現:新的框架其實 基本上照搬Classic ASP,但有些針對MySQL和Apache的改動。我本可以預料到這些,並且這本可能成爲一個有趣的挑戰。我一直喜歡學習直到現在。我可以回去買書並且在一個月內掌握這些新技術。


  但是我們有一些不能流失的顧客。我必須立刻服務他們,不能中斷。這種情況下,學習 一個新技術平臺會非常困難,尤其是我們顧客找我們的理由是因爲我們是微軟專家。(就像毒癮一樣,難以割捨。)“繼續做自己熟悉的事情“是個想當然的選擇。問題是我過去的知識和經驗並不能很好 應用到.NET上。無論如何,我需要學習一門新語言和新框架。


  你需要記住2001年是微軟統治的年代。大型的網站是由Linux和Java構建開發的。如果你那時在硅谷,並且和別人說你是一個微軟開發者,你會被嘲笑的。(現在嘲笑的人更多了)出了硅谷,對於任何企業,微軟就是答案。這些公司已經購買了微軟的Window和 Office,而他們現在要網站。微軟是他們想當然的選擇。


  不幸的是,(我的諮詢公司在IT泡沫事件破產)我去了一家”The Valley“的初創企 業。這家企業的架構是由開源/Java/Emacs/Eclipse組成的。我是唯一一個微軟程序 員,服務一個全部採用微軟技術的重要客戶。其他開發團隊需要數週來完成在客戶網站上的一個小改動。而我僅要幾個時辰就可以用 SQL服務器和Classic ASP達到。對於他們本打算放棄的任務,我總能給客戶滿意的結果。


  這就是我選擇成爲一個微軟專家和一個.NET的開發者的原因。除此之外,我曾拼命地 去成爲一個微軟認證工程師。(我曾經做到了!)最終,我貌似成爲了一個微軟方面的 MVP。或者說,我認爲我成爲了。


  現在看來這實在很愚蠢,但如果你是當時的我,在那種工作環境之下,MVP的頭銜意味着一切。去問問你的.NET朋友,他們會告訴你這些。接下來的事,因爲對象數據源不能同數據列表綁定,所以Entity Framework不能被使用。

  雖然我現在發了這條Tweet,但是很多ASP.NET的程序員依然對這個問題很茫然。這不是惡搞,這是一個微軟官方的教程。

  這就是我決定轉行之前,我職業生涯的真實寫照。


  從2002到2008年,微軟網站產品曾經是(現在很大程度上依然是)“可視化組件開 發”。這意味着你只需要不斷地拖放組件,然後讓組件實現你的功能。(生成HTML, 連接服務器,CSS代碼等等)

  這項技術使得表格必須用“數據源”這種原始方式去生成。我需要麻煩的寫出一些 XML文件去映射“數據源”。

  這事從來沒有順利過,但我還是堅持去做。請不要問我爲什麼。


  但這些也發生了......

  2008年,我開始用Rails,並且立刻喜歡上了它。但這並不意味着我從此“義無反顧”的轉向了。Rails令我可以,像以前開發時一樣,擁有全面的反饋。HTML和CSS不再可怕。(它們對ASP.net開發者而言很可怕)代碼重新成爲你的朋友。


  在.NET的環境下,在某種程度上,我們處理後臺代碼和服務器組件,而水平最高的開發者僅用最少的代碼來完成程序。不知何故,在這一情形的驅使下,我們背離了我們原 本的目標:網站開發者。

  這一切想法向我涌來。我清楚地記得我想遠離.NET的想法。但當我冷靜下來,我有了個想法:如果我將我在Rails學到的帶回ASP.NET,那麼會發生什麼?


  從此我啓動了”亞聲波“項目(受ruby的”活動記錄“啓發而寫的ORM),並且嘗試了5 種不同的方法去構建一個基於.NET的MVC的框架。 我喜歡C#,而且微軟的產品市場 很大。爲什麼要依賴微軟的研究室來決定如何寫堆棧?這構成我接下來5年的職業生 涯。我被認爲是一個”麻煩製造者“,”攪罐器“,”抱怨者”,並且被認爲是個“巨魔”。或許這些看法確實有點適合我。 “改革推動者”對我而言是個新角色。 (Twitter也是)因此… 我覺得我的公關技巧還需要改善。這有些跑題了(但還是有聯繫)。我真正想知道的是…


  如果當時我不這麼做,會發生什麼?

  今天提起這件事情是因爲我有一次我被邀請去看一個”Ghost Blog“的模塊。(作 爲一次隨意討論的一部分)而這個Node程序看起來就像用PHP寫。這不禁讓我想到”如果我堅持用PHP,是否我會用同樣的方式寫Node程序“?我很可 能通過一個腳本開發者的角度去看網站,並且錯過了一些我從.NET開發中學到的”高 級概念“。這種想法很正常,我應該會這麼寫Node。


  這當然引發了另一個問題:我寫Node程序是否和.NET開發者類似?

  或許有一些。我知道我寫ruby程序就是這樣…那麼這是個糟糕的事情?這些影響是否令 我更容易扭曲我的Node代碼?

  我知道我將會習得很多有關Linux或MySQL的知識,並且我確定我將會參加一些有趣的 開源項目,如同我寫.NET時一樣。我可能會迷上Rails,並且嘗試將一些Rails優點帶到PHP中。好似歷史就會重新聚焦到此刻,但有一個重大的不同:我將不會陷入ASP.NET的泥潭 長達五年。


  我認爲我應該能做到:更加了解Linux系統 更加了解MySQL和其他開源服務器。我不會像4年前一樣害怕Javascript不再依賴開發工具喜歡HTML和CSS。

  這裏有一個明顯的缺點:.NET阻礙我增加關於HTML/CSS/Javascript的知識。我無須告訴你這些知識是如何重要,永遠不需要。另外,我被迫使用”Visual工具“,而且現在每天還同它作鬥爭。在網站項目上,我習慣於用TreeView控件來看數據庫和文件裏的表格。Visual開發已經被燒錄進我的大腦!啊哈!


  或許當我最終決定進入Rails的世界時,這些挫折迫使我不斷的學習。這團火始終和我在一起,鼓勵我發了這條博文。借用Lewis Black的一句話:

  要不是因爲我的馬,我纔不花時間上大學呢!

  我的馬,就是 ASP.NET。


發佈了42 篇原創文章 · 獲贊 78 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章