英文名:Beginning ASP.NET 2.0 in C# 2005——From Novice to Professional
中文名: ASP.NET入门C#2005版——从新手到专家
ASP和ASP.NET简介
ASP(动态服务器主页)是一种较新的技术,它已经过几个阶段的发展(进化).它是怎么诞生的呢?在七年前,它作为一种简单的方法来往普通网页里添加动态内容。自从那时以后,它的发展势头强劲:作为高级网页程序的开发平台,包括:电子商务网站、基于事件驱动的门户网站和你在网上能看到的其他所有东西。
ASP.NET 2.0 是ASP的最新版本,而且拥有最让人激动的更新。在ASP.NET帮助下,在网络编程时,开发者不再把一大堆HTML源码和脚本代码杂乱地放在同一页面上。你可以完全使用代码和工具(Visual Studio 2005)来创建网页程序。这些创新的代价仅仅是多学一些东西。你要学一些高级开发工具(Visual Studio)和工具包(the .NET Framework),而且你需要精通一门编程语言,如C#。
本书假定你打算精通ASP.NET,所以我们从基础开始。使用本书,你可以建立你的知识体系,让你理解众多的概念、技术和让你进行最好的练习:亲身编写复杂的网页程序。这个旅途很长,但却充满成就感。在功成圆满的那一天,你会发现ASP.NET让你轻松搞定那些其他平台难于解决的挑战。你将加入正快速增长的ASP.NET开发者俱乐部。
这本书是为谁准备的?
这本书面向所有想使用ASP.NET创建动态网页的人士。理想的情况是,你有Java或C语言编程经验。如果没有,你应该熟悉编程的一些基本概念(循环,条件选择结构,数组……),无论你是用哪一种高级语言(Pascal等)。这是阅读这本书的最基本要求。理解HTML是有帮助的,但不是必须的。ASP.NET工作在更高层(就向开车的人根本不需要知道车的工作原理),让你可以使用多功能的web控件来代替HTML源码。您也可以不需要任何XML的知识,因为第17章会详细得介绍它。
注意
这本书从基础开始的:c#语法,面向对象编程基础和.NET Framework.的基本原理。
如果你从没有使用过C#,你就需要多花点时间来学习语法(这很简单,比英语语法容易几百倍),你将在第二章学到所有的内容。如果你对面向对象的编程思想不熟悉,第三章将给你一个快速“充电”的机会:理解和复习上述的主题。本书余下的章节是建立在此基础上的,从ASP.NET的基础到高级的例子向你展示了你将在实际网络编程中所用到的很多技术。
使用这本书,你还需要什么?
使用本书的最主要的先决条件是你的电脑安装有Visual Studio 2005
要运行ASP.NET网页,需要在Windows 2000 Professional, Windows XP Professional, Windows 2000 Server, or Windows Server 2003操作系统上。如果你要测试网页程序或进行配置策略你还要安装IIS(因特网信息服务),一种网页主机程序(windows操作系统的一部分)。
最后,本书包含了使用SQL Server的几个例子。你可以使用任意版本的SQL Server来实现上面的例子,包括SQL Server 2005 Express版本(包含Visual Studio的一些版本)如果你使用关系数据库引擎,这些概念同样适用,你只需要对代码稍加修改。
代码示例
掌握ASP.NET,最好的方法是:你亲手做试验,试试本书的所给的代码实例,再研究一下自己对代码做的修改。想获得本书的实例代码,请访问www.prosetech.com或出版社网站www.apress.com。你还能找到其他的一些资源和所有更新与本书堪误表。
章节概述
本书分为六个章节。直到你已经熟悉.NET Framework,从头到尾阅读本书都是最有效的方式。书中后面章节有时会穿插入前面提到过的内容,以便完成更真实丰满的例子。另一方面,如果你已经熟悉.NET平台,C#和面向对象编程,那么你将很快完成本书的第一个部分。
反馈
本书有一个雄心壮志:成为ASP.NET的最好辅导参考书。为了这个目标,你的意见和建议是非常有帮助的。你可以发来抱怨、奉承或者位于两者之间的所有东西。我无法解决你的ASP.NET方面的问题或者点评你的代码,但是我将受益于知道书中优秀和不足的地方(也许在某个地方写的内容让人看了感到混乱)。你也可以发来关于本书网站支持的意见。
介绍.NET
当你学过本书的第二个章节的例子后,你就可以马上开始编写一个ASP.NET应用程序。
但是,要真正精通ASP.NET,你必须理解一些.NET Framework.的基本概念。第一章列举了微软术语和解释什么是.NET Framework与为什么你需要它。第二章给你全面地介绍了有关C#的内容,第三章涵盖了面向对象编程地基础。第四章介绍了Visual Studio开发环境。
网络发展的演化
因特网是在1960年末在试验中诞生的。它的目标是:建立一个真实的、有弹性的信息网络——可以经受的起若干数量的电脑的崩溃,而不至于阻断其他电脑的正常通信。经得起潜在的重大灾难(如核武器攻击)。美国国防部提供了刚开始的研究基金。最早的因特网局限在教育机构和从事国防的单位。它因为作为学术研究的一种工具而繁荣,它让全球的研究人员可以彼此共享信息。到了1990初,伟大的“猫”诞生了,它通过电话线工作,从此,因特网向商业用户打开了大门。在1993年,第一个HTML浏览器诞生了,标志着因特网革命的到来。
HTML和HTML表单
我们很难把最早的网页称为网页程序。第一代的网页看起来更像小册子:主要由固定的HTML页面构成,这些也都需要手动修改。
一个简单的HTML页面有点像一个字处理文档——它包含了格式化的内容,可以在你的电脑上显示,但是并不完成其他任何功能。上面的就是一个最简单的例子,文档包括头信息和单行文本。
一个HTML文档有两种类型的内容:文本和标记(告诉浏览器如何格式化)。这些标记很容易辨认,因为它们总是出现在< 和 >之间。HTML定义了不同级别的标题、段落、超链接、斜体和粗体格式、水平线等。举个例子:<h1>某个文本<h1>,告诉浏览器用标题1的格式来显示这个文本,就是用最大的黑体字来显示。
HTML 2.0 首次引入了一个网页编程的新技术,称为HTML表单。HTML表单扩展了HTML的功能,不仅包含了格式化标签,而且包含了窗体小部件或者叫控件。这些控件包含了普通的功能部件,如下拉列表、文本框和按钮。下面是一个由HTML表单控件创建的网页。
在HTML表单中,所有的控件都放在<form> 和</form>标签之间。前面讲过的这个例子包括了两个复选框(用<input type="checkbox">标签表示)和一个按钮(用<input type="submit">标签表示)。
网页表单允许网页程序设计师设计标准的输入页面。当用户单击图1-2的提交按钮,所有在输入控件中的数据(在这个例子中是两个复选框)将打包成一个长字符串,接着发送到服务器。在服务器端,一个客户程序接收和处理这些数据。令人惊奇的是:这些为HTML表单创建有超过十年之久的控件仍然是你用来创建ASP.NET页面的基础。不同的是这些程序控件将运行在服务器端。在过去,当用户单击一个表单页面的按钮时,信息要通过e-mail来发送或者使用在服务器端运行的程序(通过CGI标准)。今天,你将可以使用更强大、更优雅的ASP.NET平台。
服务器端编程
理解ASP.NET的创建原因可以帮助我们了解其他网页开发技术遇到的问题。在原始的CGI标准下,举个例子,网页服务器必须为每个网页请求建立一个单独的程序实例。如果这个网页很受人们欢迎(那访问者将很多),那么网页服务器就要经受得起数以百计的独立程序副本,这样最终导致服务器反而因为受欢迎而成为受害者。
为了解决这个问题,微软开发了ISAPI(网络服务程序编程接口),一个高层次的编程模型。ISAPI解决了性能问题,但是付出了复杂性的代价。即使ISAPI开发者是个C++编程老手,他仍然晚上担心到失眠,因为会遇到多线程处理这样让人麻烦的问题。
ISAPI编程是给那些坚强的“夜猫子”,不是给那些懦弱的人。ISAPI并没有真正消失,取代它的是,微软利用它建立了一个更高级的开发平台,如ASP 和 ASP.NET。这两种技术都可以使开发者编写动态网页,而不需要担心底层的执行细节。由于这个原因,这两个平台成功到令人难以置信。最初的ASP平台吸引了将近一百万的开发人员。当ASP.NET第一次发布时,作为.NET Framework的核心部件受到人们更多关注。事实上,ASP.NET 1.0已经在数十个大型商业网络中得到应用,虽然它还在最后的测试阶段。
虽然拥有类似的基础,ASP 和ASP.NET有根本的不同。ASP是基于脚本的编程语言,需要全面理解HTML,而且还要经过一大堆痛苦的编程训练。而ASP.NET,在另一方面,是面向对象的编程模型,建立网页页面就像建立桌面程序一样容易。在很多方面,学会ASP.NET比精通ASP要容易,而且ASP.NET功能更加强大。
提示
不要被版本号所困惑。ASP.NET 1.x and ASP.NET 2.0共享 相同的基础元件,本质上一样的技术。虽然它们运行在不同版本的.NET Frame-work之上,变化只算改进而不是革命性的。这些相似性和经典的ASP是不同的,ASP是基于旧的微软技术,如COM(对象组建模型)
客户端编程
开发人员开始试着使用嵌入多媒体、java script的小程序、DHTML和Java代码来增强网页的功能。这些基于客户端的技术不需要通过服务器的处理就能实现。所有的程序都(从服务器)下载到客户端浏览器,在本地执行。
客户端技术的最大问题就是它们不被所有的浏览器和操作系统完美的支持。其中的一个原因就是网络开发太受欢迎了,首先是网络程序不需要通过CD安装、下载和其他单调的配置。取而代之的是,一个网络程序只要能上网的电脑就可以执行了。但是,一旦开发者使用客户端技术,他们就会遇到一些常见的问题:比如跨浏览器的兼容性。开发者就不得不在不同的浏览器和操作系统中测试他们的网页,甚至他们还要给用户发布浏览器更新。换句话说,客户端模型牺牲了网络程序最重要的优良特性。
由于上述原因,ASP.NET被设计为服务器端技术。所有的ASP.NET代码都在服务器上执行。当代码执行完毕时,用户就会得到一个普通的HTML页面,这样任何浏览器都可以浏览了。
这里还有几条原因要避免客户端编程:孤立性:客户端代码无法访问服务器资源。举个例子,没有一种简单的方式让客户端可以读取一个在服务器上的文件或进行数据库连接。(至少不会遇到安全性和浏览器兼容性的问题)
安全性:最终用户可以查看客户端代码。一旦有不怀好意的用户理解了程序是怎么工作的,他们就有可能乱来了。
在某些方面,ASP.NET允许你通过服务器端编程结合最佳的客户端编程。举个例子:ASP.NET控件可以智能侦测客户端浏览器的属性。如果该浏览器支持java script,那么这些控件将返回一个含有java script的更多功能的页面。尽管如此,不管浏览器的功能有多强大,你的代码始终在服务器端执行。