PHP 還是 ASP.NET:我做了正確選擇么?
在2001年, 我曾面臨一個選擇,去學PHP或者ASP.NET。 我最終選了后者,但我依然懷疑這個選擇其實不好。
那是2001年,我面臨一個選擇。
設 想一下,如果你可以回到過去,改寫你的技術生涯。哪些重要的時刻,你會想改變?在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年的職業生涯。我被認為是一個”麻煩制造者“,”攪罐 器“,”抱怨者”,并且被認為是個“巨魔”。或許這些看法確實有點適合我。 “改革推動者”對我而言是個新角色。(推ter也是)因此… 我覺得我的公關技巧還需要改善。
這有些跑題了(但還是有聯系)。我真正想知道的是…
如果當時我不這么做,會發生什么?
今天提起這件事情是因為我有一次我被邀請去看一個”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。
原文鏈接: Rob Conery 翻譯: 伯樂在線 - Diego
譯文鏈接: http://blog.jobbole.com/62935/