很多人錯誤地認為ASP是簡單、低效的代名詞,認為ASP是低能的,不足掛齒的,也很簡單,一學就會,一琢磨就精通。
有人講ASP不安全,寫ASP的程式的時候如果嚴格按照書寫安全的代碼的規範去寫,寫出來的程式也沒有什麼理由不安全。那些人說ASP不安全,好像PHP、JSP的程式就不會出現SQL Injection似的。
有人講ASP不高效,真的想要高效的話你可以結合COM,在Win32平台下COM的效率Java是永遠追不上的。單純講速度有什麼意義呢?Java的速度絕對算不上高,論速度的話好多技術方案的速度都比Java高,這一點學Java的人最清楚了,可是誰在乎過這一點了?Java的勝出絕對不是因為它的速度。拋開具體的應用環境單純地講速度是不理性的。
有人講ASP這個不能做,那個做不了,功能很局限。其實只要你明白Web的原理的話你就會明白,寫ASP程式表面看是在玩一種指令碼語言,但你指揮的是Web Server,有很多複雜的功能ASP也照樣能完成的很好,有些功能ASP假如因為Web應用的先天局限做不了,你不要以為JSP、PHP就能做到。
再提到功能。要說功能的話ASP+SQL Server肯定比PHP+MySQL強百倍,MySQL不支援交易處理,就這一條讓PHP開發人員吃了多少虧,沒有視圖,沒有預存程序和觸發器,沒有資料庫端的使用者自訂函數,不能完全使用標準的SQL文法,這都是MySQL的缺點。可是PHP程式員在乎這一點了嗎?沒有!因為他們最在乎的是MySQL很快。(注意,是MySQL很快,不是PHP很快。同樣,是MySQL不支援交易處理,而不是PHP的過錯。)在面對PHP+MySQL的時候,人們就如此的理性。面對ASP的時候很多人就缺乏這種理性的認識。
還有人提到MVC,是的我知道JSP可以把MVC發揮得很好。但是MVC這種編程思想不是Java或某種方案的專利,只要掌握了MVC的程式構架思想,你一樣能寫出這樣的ASP程式、PHP程式。
許多人單純地做一些語言本身的比較,有什麼意義呢?就好像你談JSP的時候不談JavaBeans,不談EJB,那麼你談JSP有什麼意義呢?同理談ASP的時候你不談COM,有什麼意義呢?不要忘了ASP的核心就是COM。談PHP的時候如果不談它強大的平台——Unix/Linx,PHP照樣什麼也不是。
不過有一點是可以肯定的,那就是:ASP的入門門檻最低。這按理說應該算ASP的優點,它秉承了微軟技術一貫的作風——簡單,入門門檻低。也正是因為這一點,使得大量的Web開發領域的新手能夠很快地開發網站。但也正因為這一點,使許多掌握了ASP的一點皮毛知識的人自認為對ASP很懂,結果寫出很垃圾的程式,讓別人看了ASP的笑話。其實我接觸過的一些JSP程式員也很垃圾,他們處理資料庫操作的時候低級錯誤百出,但是因為他們是用Java開發的,所以給別人的感覺好像就高人一等。其實真的優秀的程式員如果明白了ASP的一些原理的話也能把ASP駕馭得很好。有些人玩不轉ASP,你不能因此說這是ASP的問題。玩不轉ASP的人大多是沒有正確理解Web,而不是沒有正確理解ASP中的文法。
ASP的文法很簡單,Java的文法也複雜不到哪裡去,C++和C雖然複雜但是只要是一個智力正常的人也沒有理由學不會。
問題是文法本身很簡單,但是Web很複雜。我們不是在這裡淺嘗輒止地玩弄一下某種指令碼語言,我們是在做Web開發。
Web開發雖然有不同的解決方案,但是基本的原理是相通的。如果你清楚Web端程式的一些運行原理,你就會明白你使用的開發技術的文法難度只不過是一種入門級的難度,真正的難度不在於你用什麼技術方案去開發Web應用程式,真正的難度在於錯綜複雜的Web應用自身。