第1章 ASP.NET概述
在微軟的.NET還是Beta 1版的時候,就受到了開發人員的極大關注。随着正式版的釋出,越來越多的人開始認識和了解它。相信你已經通過網絡或者其它媒體了解到微軟正在不遺餘力的推銷它的.NET政策。
你一定還在迷惑,“什麼是.NET?”從微軟的網站上我們得到如下的解釋:
Microsoft® .NET 是 Microsoft XML Web services 平台。XML Web services 允許應用程式通過 Internet 進行通訊和共享資料,而不管所采用的是哪種作業系統、裝置或程式設計語言。Microsoft .NET 平台提供建立 XML Web services 并将這些服務內建在一起之所需。對個人使用者的好處是無縫的、吸引人的體驗。
從這段文字中你可以看出,微軟是希望通過.NET技術把原來分散在Internet上的各種服務有機的組合起來。不論你什麼時候,在什麼地方,使用什麼裝置上網,也不論你使用什麼作業系統,使用什麼語言開發,你都可以通過.NET技術找到自己想要的服務。也許你還會問,“什麼是XML Web Service?”先不要着急,這個問題你将會在本書的第5章《XML WEB服務》中找到滿意的答案。
做為.NET架構中很重要的組成部分ASP.NET究竟給我們帶來了什麼新的内容?在使用這門新的語言之前我們需要準備些什麼?它在程式設計思想、開發方法上有些什麼新的内容?這些正是本章所要解決的問題。我們将會帶你去全面了解ASP.NET語言,盡快地用ASP.NET去開發和編寫程式。不論你以前是使用ASP、VB、Java,還是C或者C++,你都能夠快速地學會使用它。ASP.NET将會使你的程式設計生活變的更加簡單。
本章包括以下主要内容:
1. 什麼是ASP.NET;
2. 為什麼要使用ASP.NET;
3. .NET的安裝;
4. ASP.NET主要開發工具的介紹;
5. 豐富的Web控件和多語言支援。
下面我先向大家介紹什麼是ASP.NET。
1.1 什麼是ASP.NET
提到ASP.NET,就不得不首先搞清楚什麼是ASP。ASP的全稱是Active Server Pages,即活動伺服器頁面,為什麼稱之為活動伺服器頁面,這是因為以前的網際網路全部是由靜态的HTML頁面組成,如果需要更新你的網站内容,你不得不制作大量的HTML頁面。有了ASP以後,我們就能夠根據不同的使用者,在不同的時間向使用者顯示不同的内容。網站的内容更新也不再是一個乏味的重複過程,它開始變得簡單而有趣。也是以在國内掀起了一股學習ASP的熱潮。
但是由于ASP程式和網頁的HTML混合在一起,這就使得程式看上去相當的雜亂。在現在的網站設計過程中,通常是由程式開發人員做背景的程式開發,前面有專業的美工設計頁面,這樣,在互相配合的過程中就會産生各種各樣的問題。同時,ASP頁面是有腳本語言解釋執行的,使得其速度受到影響。受到腳本語言自身條件的限制,我們在編寫ASP程式的時候不得不調用COM元件來完成一些功能。由于以上種種限制,微軟推出了ASP.NET。
1.2 為什麼要使用ASP.NET
ASP.NET不僅僅隻是ASP 3的一個簡單更新,它更為我們提供了一個全新而強大的伺服器控件結構。從外觀上看,ASP.NET和ASP是相近的,但是從本質上是完全不同的。ASP.NET幾乎全是基于元件和子產品化,每一個頁,對象,和HTML元素都是一個運作的元件對象。在開發語言上,ASP.NET抛棄了VBSCRIPT和JSCRIPT,而使用.NET Framework所支援的VB.NET,C#.NET等語言做為其開發語言,這些語言生成的網頁在背景被轉換成了類并編譯成了一個DLL。由于ASP.NET是編譯執行的,是以它比ASP擁有了更高的效率。下面我們就向大家詳細介紹ASP.NET的這些優點。
1.2.1 ASP.NET的程式設計語言
現在ASP.NET支援的開發語言包括VB.NET、C#.NET、JSCRIPT.NET、VC++.NET以及其它.NET Framework所支援的語言。這裡我向大家介紹最常用的VB.NET和C#.NET。
1. Visual Basic.NET
Visual Basic.NET是Visual Basic在.NET中的最新版本。它和VB 6比較起來,增加了許多新的或者改進的特性――例如:繼承、接口、重載(Overloading)。這些使它成為一個強大的面向對象的語言。
Visual Basic.NET最大的新特征就是其利用了CLS(Common Language Specification,公共語言規範)和CLR(Common Language Runtime,公共語言運作時)。因為Visual Basic.NET遵從CLS,這就使得任何遵從CLS的語言都可以使用你用Visual Basic.NET編寫的類、對象群組件。同樣的,Visual Basic.NET開發人員也可以自由使用其它遵從CLS的語言編寫的類、對象群組件,而不用擔心語言之間的差異。
Visual Basic.NET支援許多新的面向對象的特性,例如,繼承、重載、接口、構造體等等。而且還包括異常處理、代表和一些新的資料類型。
1)繼承性
Visual Basic.NET允許你定義基類,派生類可以繼承基類的屬性和方法。你也可以用派生類的方法來覆寫基類的方法。VB.NET中的所有類預設情況下是可以繼承的。如你可以在一個表單中繼承現有的表單中的類,因為你所設計的表單本身就是一個類。
2)異常處理
VB.NET支援結構化的異常處理,你可以用下面的代碼來捕捉異常:
Try
' "Try" block.
Catch e As ClassLoadException
' "Catch" block.
Finally
' "Finally" block.
End Try
在Try塊中放上你的代碼,當發生異常時,程式會自動跳到Catch塊,在這裡,我們可以輸出錯誤資訊,或者給使用者一個友好的提示,而不會導緻程式崩潰。在Finally部分,我們可以用來釋放一些系統資源,如資料庫連結等。
3)重載(Overloading)
使用重載你可以讓允許具有不同的資料類型的方法、屬性或者過程使用相同的名字。如下面代碼所示:
Overloads Sub Display(ByVal theChar As Char)
' Add code that displays Char data.
End Sub
Overloads Sub Display(ByVal theInteger As Integer)
' Add code that displays Integer data.
End Sub
Overloads Sub Display(ByVal theDouble As Double)
' Add code that displays Double data.
End Sub
當向Display方法傳入不同的參數時,它會運作不同的過程。這在我們使用不同的資料類型時是非常有用的。
4)接口
接口和類一樣會定義方法和屬性,但是和類所不同的是,接口并不提供方法的實作。你可以在繼承接口的類中去編寫實作。
從上面這些新的特性,我們可以看出VB.NET已經完全變成了一門全新的語言。它還提供了對多線程的支援等等。由于其變化之大,許多VB的程式員也開始迷惑是學習VB.NET,還是學習C#。孰優孰劣的争論現在還在進行中,可以肯定的是,如果你能掌握.NET Framework,使用那種語言已經變得不再重要了。
2. C#.NET
C#語言是微軟公司針對.Net平台開發的一種全新的程式設計語言。盡管C#象是C,和C++語言的更新語言,但是他不象他的前身那樣,C#是一個完全面相對象的開發語言。它既有Visual Basic的快速開發的特點,又具有C++的強大的功能。它的風格類似與C、C++和Java。如果你是一個C、C++或者Java的程式員,你會發現你可以很快的使用C#進行開發。和VB.NET一樣,C#可以利用公共語言運作時給我們帶來的各種好處。例如:語言的互動性,垃圾回收機制,增強的安全性能,以及版本相容。
1)類
一個類可以從另一個類繼承,在C#中,類是不可以繼承多個類的,但是它可以繼承多個接口。
下面我們給大家建立一個類:
public class person
{
//在這裡面可以增加屬性和方法。
}
2) 屬性
使用屬性,我們可以通路類中的資料成員。我們現在給上面的person類增加一個姓名和年齡的屬性。
public class person
{
private string _Name;
private int _Age;
public string Name
{
get
{
return _Name;
}
set
{
_Name=value;
}
}
public int Age
{
get
{
return _Age;
}
set
{
_Age=value;
}
}
}
3) 方法
方法是類中執行運算或者其它行為的成員。我們現在給上面的類增加一個ToString()的方法。
public class person
{
private string _Name;
private int _Age;
public person()
{
//
// TODO: Add constructor logic here
//
}
public string Name
{
get
{
return _Name;
}
set
{
_Name=value;
}
}
public int Age
{
get
{
return _Age;
}
set
{
_Age=value;
}
}
public string ToString()
{
return "姓名:"+_name+",年齡:"+_Age;
}
}
和VB.NET一樣,C#也提供了繼承,接口等其它面向對象的特性。