天天看點

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上。無論如何,我需要學習一門新語言和新架構。

微軟統治的年代

PHP 還是 ASP.NET:我做了正确選擇麼?

你需要記住2001年是微軟統治的年代。大型的網站是由linux和java建構開發的。如果你那時在矽谷,并且和别人說你是一個微軟開發者,你會被嘲笑的。(現在嘲笑的人更多了)

出了矽谷,對于任何企業,微軟就是答案。這些公司已經購買了微軟的window和office,而他們現在要網站。微軟是他們想當然的選擇。

不幸的是,(我的咨詢公司在it泡沫事件破産)我去了一家”the valley“的初創企業。這家企業的架構是由開源/java/emacs/eclipse組成的。我是唯一一個微軟程式員,服務一個全部采用微軟技術的重要客戶。

其他開發團隊需要數周來完成在客戶網站上的一個小改動。而我僅要幾個時辰就可以用sql伺服器和classic asp達到。對于他們本打算放棄的任務,我總能給客戶滿意的結果。

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

現在看來這實在很愚蠢,但如果你是當時的我,在那種工作環境之下,mvp的頭銜意味着一切。去問問你的.net朋友,他們會告訴你這些。

接下來的事

PHP 還是 ASP.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的一句話:

PHP 還是 ASP.NET:我做了正确選擇麼?

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

我的馬就是 asp.net。

原文連結: rob conery 翻譯: 伯樂線上 - diego