第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#也提供了继承,接口等其它面向对象的特性。
1.2.2内容和代码分离
现在的网站建设通常要求开发人员做后台的程序设计,前面有专业的美工做界面设计。虽然有时候开发人员也会做些界面设计,但是通常都无法达到专业的要求。上面说过,在以前的ASP中,由于代码和HTML页面语言混杂在一起,这就使得网站的建设变得相当的困难。在ASP.NET中,微软使用代码后置很好的解决了这个问题。
我们现在建立一个HTML页面,如下:
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs"
AutoEventWireup="false" Inherits="AspCool.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 47px; POSITION: absolute; TOP: 23px" runat="server"></asp:TextBox>
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 53px; POSITION: absolute; TOP: 76px" runat="server" Text="Button"></asp:Button></FONT>
</form>
</body>
从第一行中我们可以看出,该页面的后台代码全都在WebForm1.aspx.cs文件中。我们可以在这个文件中编写程序,如下所示:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace AspCool
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Button Button1;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
}
}
}
通过代码后置,开发人员可以直接修改.cs文件(在Visual Basic.NET中是.vb文件)。而页面设计人员可以修改HTML页面,这样就大大简化了网站的建设过程。
1.2.3 ASP.NET丰富的Web控件
ASP.NET的另外一个优点就是给我们提供了大量的丰富的Web控件。你可以在System.Web.UI.WebControls名字空间下找到各种各样的Web控件,这些控件中包括运行在服务端的from控件,例如:Button、TextBox等,同时也包括一些特殊用途的控件,如:广告轮换控件、日历控件,以及用户验证控件等。下面我们就具几个例子来看看如何使用这些控件。
1. 广告轮换控件<asp:adrotator>
广告轮换控件可以在网页上显示旋转的广告。广告链接信息保存在一个XML文件中,如ads.xml。
<?xml version="1.0" encoding="utf-8" ?>
<Advertisements>
<Ad>
<ImageUrl>/Upload/2004_Pack/newaspcool.gif</ImageUrl>
<NavigateUrl>http://www.aspcool.com</NavigateUrl>
<AlternateText>Alt Text</AlternateText>
<Keyword>Computers</Keyword>
<Impressions>80</Impressions>
</Ad>
<Ad>
<ImageUrl>/Upload/2004_Pack/chat.gif</ImageUrl>
<NavigateUrl>http://www.chaxiu.com</NavigateUrl>
<AlternateText>Alt Text</AlternateText>
<Keyword>Computers</Keyword>
<Impressions>80</Impressions>
</Ad>
</Advertisements>
我们现在在asp.net 页面中加上一个<asp:adrotator>,如下所示:
<HTML>
<HEAD>
<title>广告轮换程序</title>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:AdRotator id="AdRotator1" runat="server" Width="468px" Height="60px" AdvertisementFile="ads.xml"></asp:AdRotator>
</form>
</body>
</HTML>
运行此程序,你就会得到一个旋转显示广告的页面了。
2. 日历控件<asp:calendar>
使用日历控件,我们可以很快生成一个日历的Web页面。代码如下:
<HTML>
<HEAD>
<title>广告轮换程序</title>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Calendar id="Calendar1" runat="server"></asp:Calendar>
</form>
</body>
</HTML>
在Visual Studio.NET中,你直接从工具栏中拖过来就可以使用了。
3. 验证控件
以前我们我们通过自己写JavaScript脚本来验证用户输入的信息。在ASP.NET中,只要我们使用验证控件这些代码也会自动生成。它能够向用户提示输入的错误信息。下面我就给大家列出这些验证控件:
控件名称 说明
RequiredFieldValidator 确保用户不跳过输入。
CompareValidator 使用比较运算符(小于、等于、大于等)将用户的输入与另一控件的常数值或属性值进行比较。
RangeValidator 检查用户的输入是否在指定的上下边界之间。 可以检查数字、字母或日期对内的范围。可以将边界表示为常数。
RegularExpressionValidator 检查输入是否与正则表达式定义的模式匹配。该验证类型允许检查可预知的字符序列,如社会保障号、电子邮件地址、电话号码、邮政编码等中的字符序列。
CustomValidator 使用您自己编写的验证逻辑检查用户的输入。该验证类型允许检查运行时导出的值。
ValidationSummary 以摘要的形式显示页上所有验证程序的验证错误。
好了,既然ASP.NET有如此多的优点,让我们现在就开始安装和使用ASP.NET吧!
1.3 安装.NET
ASP.NET的变化如此之大,也许会使你感觉有点害怕。“千里之行,始于足下”,只要一步一步来,你就会发现掌握它并不是什么难事,而它带给你的编程思维的改变以及效率的提高将会使你觉得你开始的付出是完全值得的。你也许担心以前的ASP代码是否能够继续运行,不用担心,在.NET环境下,ASP.NET和ASP是互不干扰的。以前的ASP文件仍然保存为“.asp”,而新的ASP.NET则保存为“.aspx”。
ASP.NET现在可以在Windows NT4、Windows 2000和Windows XP上运行。在Windows 9x平台上还不能运行ASP.NET。你需要首先安装.NET Framework。你可以从微软的网站(http://www.microsoft.com/net)上下载。也可以在ASP酷技术网(www.ASPCool.com)上通过下面地址下载:http://www.aspcool.com/download/display.asp?Did=316。如果你要开发ASP.NET程序的话,你需要安装.NET Framework SDK(Software Development Kit,软件开发包)。下载地址为:http://www.aspcool.com/download/display.asp?Did=315。.NET Framework SDK中不仅包括了.NET Framework,也包括了你编写、构建、测试和部署.NET Framework应用程序所需的 —— 文档、示例代码、命令行工具以及编译器。
在安装之前请先检查是否安装了IIS,如果你已经安装了IIS,安装程序在安装过程中会自动注册ASP.NET。如果你先安装了.NET Framework,而后安装IIS,你将需要手动去注册ASP.NET。安装过程非常简单。点击安装程序后它会自动解压安装文件。
在.NET Framework SDK的安装目录,你就会找到.NET Framework的快速入门、教程和大量的例子。
1.4 ASP.NET开发工具
你可以直接用写字板来开发ASP.NET应用程序。这也就意味着任何细小的东西如录入框,你都要自己动手去写。如果你认为这些都不是问题,那我还是推荐你使用一些有行标识和颜色标识的编辑器,如,EditPlus、Ultra Edit等。 当然,对于大多数人来说,可能还是倾向于使用一些WYSWYG(所见即所得)的开发工具。这里我就给大家介绍两个编写ASP.NET非常出色的开发工具。
1.4.1 Visual Studio.NET
毫无疑问,Visual Studio.NET是迄今为止开发.NET程序最优秀的开发工具。Visual Studio.NET提供了控件拖放,自动调试等功能。能够快速的设计、开发、调试和部署Web应用程序,极大地提高开发程序的工作效率。