2009/9/21

ASP.NET 細說從頭

如果不使用 ASP.NET,你可以用來寫網頁的程式語言其實並不算太多。在 ASP.NET 出現以前,大家最常見的莫過於 ASP/VB、Java 和 PHP,至於幾乎沒人使用的 CGI、Perl 等就先略過。不過從 ASP.NET 之後,又多出了 Visual Basic.NET、C# 和 J# 等等。你或許會覺得奇怪,什麼叫做「從 ASP.NET 之後,又多出了 Visual Basic.NET、C# 和 J# 等等」?難道 ASP.NET 本身並不是一種程式語言嗎?

對,可以這麼說。ASP.NET 本身並不是程式語言,而是一個執行環境,算是 Microsoft .NET Framework 的一部份。那 .NET Framework 又是什麼呢?它是一組附加於作業系統的底層程式庫(Library)。所以基本上,你只要安裝了 .NET Framework 1.X 或 2.0/3.0/3.5/4.0,再加上 IIS 網站伺服器,你就能執行 ASP.NET,就能啟動作業系統中的網站功能。

不過就算你的系統中已經裝好具備 ASP.NET 功能的網站伺服器,並不表示你就有網站。就好比你去買了一塊地,並不表示人就可以住在上面一樣。你要蓋房子。你可以蓋茅草屋、鐵皮屋,或高樓大厦;你要自己選擇。

所以如果你要學習 ASP.NET,那麼基本上你真正要學的是撰寫呼叫 .NET Framework 所提供的程式庫的程式語言,以及用來開發和編譯這些程式的整合性工具。ASP.NET 號稱可以支援任何程式語言,但實際上大家常用的不外乎 Visual Basic、C#、J# 和 Visual C++ 等等。而開發工具不外乎 Visual Studio、Dreamweaver 和 Borland Developer Studio 等等。

當然,你也可以不使用開發工具來開發程式。因為這些程式都是文字檔,你可以使用 NotePad 或 FrontPage 來寫所有的程式,完全沒問題。但是市售的整合性開發工具(IDE)具備強大的編輯輔助、On Demand 的即時編譯、大量輔助文章、專案樣版和超方便的除錯功能,所以為了不找自己麻煩,還是拿現成的 IDE 來用比較好。我過去有很長的時間都是使用 NotePad 來寫 ASP.NET 程式的,所以請相信我,那絕對是事倍功半的痛苦折磨。

在 ASP.NET 1.0/1.1 的時代,如果你要寫 ASP.NET 程式,那麼幾乎所有能用的 IDE 都要錢。不要錢的 IDE 不是沒有,但是難用,而且支援又少。

從 ASP.NET 2.0 以後,微軟陸續推出了六套免錢又能合法使用的網頁/資料庫工具:Visual Basic Express、Visual C# Express、Visual Web Developer、Visual C++ Express、Visual J# Express 和 SQL Server Express。微軟一方面為了阻絕盜版,一方面為了推廣 .NET 技術,這六套免錢的產品實在不能說不夠大手筆。

在這六套產品裡面,你只需要用到一套,那就是 Visual Web Developer。如果你用不到資料庫, 那麼你可能也不需要 SQL Server Express。至於 Visual Basic Express 或 Visual C# Express 都是用來撰寫視窗應用程式而不是網頁的。(註: 最新版免費版本請參考 http://www.microsoft.com/express/product/)

當你開始使用 Visual Web Developer 之後,你又可以隨自己高興挑選所要使用的語言。我個人習慣使用 Visual Basic 或 C#。

不管你最後決定使用 Visual Basic 來撰寫你的網頁程式或是 C#,你心裡都要先打個底,那就是在你的學習過程中,要學會至少能看得懂彼此的程式碼。例如學 VB 的看得懂 C#,學 C# 的看得懂 VB。為什麼要這麼麻煩?這是因為當未來你要參考網路上眾多的資訊時,你無法保證他們全部使用 VB 或 C#;除了一家 MSDN 以外,絕大多數都不會提供兩種語言給你對照。

此外,或許你曾經聽過一種謠言,像是用 VB 來寫程式比較遜,用 C# 比較好之類的。如果你聽到什麼人對你這樣講,那只表示那個人不管使用什麼語言來寫程式,恐怕都寫不好。為什麼?因為一知半解。

在 Apple II 和早期 IBM PC 的年代,BASIC 語言是所謂的解譯式語言(via Interpreter),而稍後出現的 C 或 Java 則是編譯式語言(via Compiler)。學過計算機原理的都知道,解譯式語言的效能確實遜於編譯式語言。

但是隨著時代演變,今天不管是 Visual Basic 或是 C#,甚至 J#、C++ 等等,全部都是編譯式語言。由這些語言所撰寫的程式,經過編譯之後,通通變成相同的 CLR(Common Language Runtime,.NET Framework 所使用的中介語言),所以在效能上是毫無差異的。

如果 Visual Basic 還有讓人垢病之處,可能在於它對於型別宣告的彈性較大。如果你沒有強制指定型別而讓語言來替你判斷並進行轉換的話,可能會使得程式的效能下降。但是我認為這根本是寫程式有沒有條理(Principle)的問題,而不是語言本身的問題!如果你寫程式的風格是這麼的隨便,那麼就算你使用 C# 來編寫程式,效能依然不會好。

Telligent(就是發行 Community Server 的公司)創辦人 Rob Howard(也曾是微軟的資深員工)就曾在 MSDN 上公開駁斥所謂 C# 效能優於 VB 的迷思。他在「常見的效能迷思」文中提到:「如果遵循良好的程式設計習慣的話,沒有理由 Visual Basic 和 C# 不能夠擁有幾乎相同的執行效果」。因此,未來如果你再聽到有人散播這種不實謠言的話,你大可以引述 Rob Howard 所說的話來予以澄清。

Technorati 的標籤:,,,,,

沒有留言:

張貼留言