第一章
ASP.NET介绍
当微软创建.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.0和ASP.NET3.5)
ASP.NET3.5
第一次面对ASP.NET3.5的开发人员不免要问其与ASP.NET3.0的不同。说来也怪,ASP.NET3.0是不存在的。微软使用.NET Framework 3.0来发布新技术——最特别的,WPF(Windows Communication Foundation),一种用来创建面向消息服务的技术,WF(Windows Workflow Foundation),一种允许你将复杂业务处理模拟成一系列动作的技术。然而,.NET Framework 3.0不包括新版本的CLR或ASP.NET。相反,下一版的ASP.NET被集成到.NET Framework 3.5中。
LINQ
LINQ(Language Integrated Query)是一套C#和VB语言的扩展。它使你用C#和VB操纵内存数据,几乎和操作数据库一样。
从技术上讲,LINQ定义了大约40个查询操作符,比如select、from、in、where和orderby等。这些操作符能使你编码查询。然而,数据有很多类别,对不同类型数据的查询有各自的LINQ形式。
最基本的LINQ形式是LINQ to Objects:可以用来从对象集合执行查询得到某些对象的细节。LINQ to Objects不是ASP.NET特有的。换句话说,你可以像在其他类型.NET应用一样在web页面中使用它。
接下来是LINQ to DataSet和LINQ to XML。前者它提供类似于访问内存中DataSet对象,后者操作XML数据。第三方开发人员和工具开发商肯定开发了更多LINQ供应器。不过,LINQ的形式最关注LINQ to SQL,使你用LINQ语句对SQL Server数据库执行查询。本质上,LINQ to SQL基于你的代码创建一个完全参数化SQL查询,在你访问查询结果时执行这些查询。你不需要写任何数据访问代码或使用传统的ADO.NET对象。
LINQ to Objects、LINQ to DataSet和LINQ to XML是ASP.NET的补充特性,不与其以任何方式集成。不过,ASP.NET支持LINQ to SQL——一个数据源控件,可以通过LINQ to SQL执行查询,且将结果绑定到web控件,不需要额外代码。你可以在第13章学习到LINQ to Objects、LINQ to DataSet和LINQ 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开发人员迎接挑战,应用更多的客户端代码和更高级的方式。其中最脍炙人口就是Ajax(Asynchronous JavaScript and XML)。Ajax是一种客户端技术编程捷径,用来请求服务器,在无需完全回发的条件下更新内容。一般来说,Ajax页使用客户端脚本代码在幕后发起异步请求。服务器接收请求,运行相关代码,返回页面所需数据(通常是XML标记块)。最后,客户端代码接收新数据,然后执行其他动作,比如刷新页面某部分。尽管Ajax概念上非常简单,但是它能让你的页面运行起来更流畅、更连续。以下通过图示说明普通页面方式和Ajax方式的不同。
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中不变的部分通常叫做红点,变的部分叫做绿点。
红点包括CLR,ASP.NET引擎和所有.NET2.0类库。换句话说,如果你创建新的ASP.NET3.5应用,运行环境和ASP.NET2.0一样。另外,你在.NET2.0中的使用的所有类——包括连接数据库、读写文件、web控件等等——在.NET3.5继续保留。红点也包括.NET3.0的特性,比如WCF。
所有.NET3.5中的程序集保留它们原始版本号。即.NET3.5包括2.0,3.0和3.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是全部面向客户端代码的,可以用来创建丰富页面,而不仅仅是HTML、DHTML和JavaScript。从某种意义上讲,Silverlight模仿了Adobe Flash的特性和目标。通过在web页面中使用Silverlight,可以画出强大的2D图形、演示场景或播放视频和其他媒体文件。
Silverlight特别适合创建小脚本,就像浏览器游戏一样。(略)
从很多方面上说,Silverlight是ASP.NET的补充技术。ASP.NET3.5不包括基于Silverlight的任何特性,但是未来的ASP.NET版本会做到。比如,未来的ASP.NET版本可能包括服务器控件用来发送Silverlight内容。(略)
翻译是个苦活啊,未完待续……
本文转自 王杰瑞 51CTO博客,原文链接:http://blog.51cto.com/wangjierui/58648,如需转载请自行联系原作者