第一章  ASP.NET介绍<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

当微软创建.NET,它不仅仅梦想未来——它还担忧当代web开发技术的困惑和限制。在你开始ASP.NET3.5以前,本书帮你回顾这些问题,你将明白.NET提供的解决方案。
         本章你将通过web开发的历史开始认识ASP.NET,做一次旋风般的.NET重要特性之旅,并且预览ASP.NET3.5的核心变化。如果你是第一次接触ASP.NET,本章将使你加快速度。相反,如果你已有.NET开发经验,那么你有两个选择。首先你可以快速阅读本文。否则,你可以跳到“ASP.NET3.5:传说在延续”去预览ASP.NET3.5

 

ASP.NET 3.5:传说在延续

当微软发布ASP.NET 1.0时,甚至没有期望这项技术被多门狂热的采用。ASP.NET很快变成用微软技术开发web应用的标准,沉重打击了其他web开发平台的竞争者。从那时起,ASP.NET有了一个修正版(ASP.NET1.1)和两个更重要的版本(ASP.NET2.0ASP.NET3.5

 

ASP.NET3.5

第一次面对ASP.NET3.5的开发人员不免要问其与ASP.NET3.0的不同。说来也怪,ASP.NET3.0是不存在的。微软使用.NET Framework 3.0来发布新技术——最特别的,WPFWindows Communication Foundation),一种用来创建面向消息服务的技术,WFWindows Workflow Foundation),一种允许你将复杂业务处理模拟成一系列动作的技术。然而,.NET Framework 3.0不包括新版本的CLRASP.NET。相反,下一版的ASP.NET被集成到.NET Framework 3.5中。

 

LINQ

LINQLanguage Integrated Query)是一套C#VB语言的扩展。它使你用C#VB操纵内存数据,几乎和操作数据库一样。
         从技术上讲,LINQ定义了大约40个查询操作符,比如selectfrominwhereorderby等。这些操作符能使你编码查询。然而,数据有很多类别,对不同类型数据的查询有各自的LINQ形式。
         最基本的LINQ形式是LINQ to Objects:可以用来从对象集合执行查询得到某些对象的细节。LINQ to Objects不是ASP.NET特有的。换句话说,你可以像在其他类型.NET应用一样在web页面中使用它。
         接下来是LINQ to DataSetLINQ to XML。前者它提供类似于访问内存中DataSet对象,后者操作XML数据。第三方开发人员和工具开发商肯定开发了更多LINQ供应器。不过,LINQ的形式最关注LINQ to SQL,使你用LINQ语句对SQL Server数据库执行查询。本质上,LINQ to SQL基于你的代码创建一个完全参数化SQL查询,在你访问查询结果时执行这些查询。你不需要写任何数据访问代码或使用传统的ADO.NET对象。
         LINQ to ObjectsLINQ to DataSetLINQ to XMLASP.NET的补充特性,不与其以任何方式集成。不过,ASP.NET支持LINQ to SQL——一个数据源控件,可以通过LINQ to SQL执行查询,且将结果绑定到web控件,不需要额外代码。你可以在第13章学习到LINQ to ObjectsLINQ to DataSetLINQ to SQL,在第14章学习LINQ to XML

 

ASP.NET AJAX

最近,web开发人员重新重视web应用的一些弱点。最明显的是在服务器端编程平台下响应缺乏的问题,比如ASP.NET。因为ASP.NET所有的工作都在web服务器上,每次页面动作发生,浏览器需要提交数据到服务器,得到新版页面,并且刷新显示。这个过程再快也会有明显的闪烁。并且这样这比较浪费时间,导致其不适合在频发事件中使用,比如鼠标移动和键盘敲击。
         web开发人员力图使用JavaScript,一种广泛应用的客户端脚本语言,来解决这些问题。在ASP.NET中,许多强大控件使用到了JavaScript,比如Menu控件,当用户移动鼠标到副标题时立刻能响应。当你使用Menu控件,你的页面不回传到服务器除非用户点击某一条目。
         在传统ASP.NET页面,开发人员使用服务器控件比如Menu得到客户端脚本的好处。不过,计时高级控件,回发是不可避免的。比如,如果你需要更新页面的部分信息,在普通ASP.NET中唯一的方式就是发送页面到服务器得到全新的HTML文档。这个方法可行但是不尽如人意。
         进取的web开发人员迎接挑战,应用更多的客户端代码和更高级的方式。其中最脍炙人口就是AjaxAsynchronous JavaScript and XML)。Ajax是一种客户端技术编程捷径,用来请求服务器,在无需完全回发的条件下更新内容。一般来说,Ajax页使用客户端脚本代码在幕后发起异步请求。服务器接收请求,运行相关代码,返回页面所需数据(通常是XML标记块)。最后,客户端代码接收新数据,然后执行其他动作,比如刷新页面某部分。尽管Ajax概念上非常简单,但是它能让你的页面运行起来更流畅、更连续。以下通过图示说明普通页面方式和Ajax方式的不同。
Ajax和类似的客户端脚本技术并不新颖,但近年来它们在web开发中开始发挥越来越重要的作用。原因之一是XMLHttpRequest对象——支持异步客户请求的对象——在当前浏览器中被广泛支持,比如:
l  Internet Explorer 5 或更高版本
l  Netscape 7或更高版本
l  Opera 7.6或更高版本
l  Safari1.2或更高版本
l  Firefox1.0或更高版本
不过,用这种方式写客户端脚本确实比较巧妙。你将在第31章学习到ASP.NET回调来做这些事情。不过,ASP.NET也包括一些更强大组成部分叫做ASP.NET AJAX,用来扩展ASP.NET的应用。

 

绿点和红点

很奇怪,ASP.NET3.5并不是完全新版ASP.NET。相反,ASP.NET3.5是基于.NET2.0上添加一些特性来设计的。再.NET3.5中不变的部分通常叫做红点,变的部分叫做绿点。
         红点包括CLRASP.NET引擎和所有.NET2.0类库。换句话说,如果你创建新的ASP.NET3.5应用,运行环境和ASP.NET2.0一样。另外,你在.NET2.0中的使用的所有类——包括连接数据库、读写文件、web控件等等——在.NET3.5继续保留。红点也包括.NET3.0的特性,比如WCF
         所有.NET3.5中的程序集保留它们原始版本号。即.NET3.5包括2.0,3.03.5的混合版。
         ASP.NET3.5绿点包括一部分新类型。对于ASP.NET开发人员,重要的新程序集包括:
l  System.Core.dll:包括LINQ核心功能
l  System.Data.Linq.dll:包括LINQ to SQL的实现
l  System.Data.DataSetExtensions.dll:包括LINQ to DataSet的实现
l  System.Xml.Linq.dll:包括LINQ to XML的实现
l  System.Web.Extensions.dll:包括ASP.NET AJAX和新web控件的实现。

 

创建ASP.NET3.5应用,你可以使用C#3.0语言编译器。它包括支持一些新特性,大多数需要LINQ支持。下图展示了ASP.NET3.5类和组件
理解ASP.NET3.5的多层架构非常重要,因为你仍然能看到某些旧版本的痕迹。比如,ASP.NET将临时文件和web服务器配置文件放到c:\Windows\Microsoft.NET\Framework\v2.0.50727。因为ASP.NET3.5使用ASP.NET2.0引擎,而ASP.NET2.0最终版就是v2.0.50727
Silverlight

最近,有许多Silverlight新动向。这是一项微软新技术,允许各种操作系统上的各种浏览器运行真正的.NET代码。Silverlight通过一个浏览器插件运行,提供.NET Framework类库的一个子集,包括WPF的简化版(WPF用来开发下一代windows用户界面)。
         那么,Silverlight如何适应ASP.NET世界的?Silverlight是全部面向客户端代码的,可以用来创建丰富页面,而不仅仅是HTMLDHTMLJavaScript。从某种意义上讲,Silverlight模仿了Adobe Flash的特性和目标。通过在web页面中使用Silverlight,可以画出强大的2D图形、演示场景或播放视频和其他媒体文件。
         Silverlight特别适合创建小脚本,就像浏览器游戏一样。(略)
         从很多方面上说,SilverlightASP.NET的补充技术。ASP.NET3.5不包括基于Silverlight的任何特性,但是未来的ASP.NET版本会做到。比如,未来的ASP.NET版本可能包括服务器控件用来发送Silverlight内容。(略)
 
翻译是个苦活啊,未完待续……