<b>第一章 </b><b>ASP.NET</b><b>介紹</b>
<b></b>
當微軟建立.NET,它不僅僅夢想未來——它還擔憂當代web開發技術的困惑和限制。在你開始ASP.NET3.5以前,本書幫你回顧這些問題,你将明白.NET提供的解決方案。
本章你将通過web開發的曆史開始認識ASP.NET,做一次旋風般的.NET重要特性之旅,并且預覽ASP.NET3.5的核心變化。如果你是第一次接觸ASP.NET,本章将使你加快速度。相反,如果你已有.NET開發經驗,那麼你有兩個選擇。首先你可以快速閱讀本文。否則,你可以跳到“ASP.NET3.5:傳說在延續”去預覽ASP.NET3.5。
<b>ASP.NET 3.5:</b><b>傳說在延續</b>
當微軟釋出ASP.NET 1.0時,甚至沒有期望這項技術被多門狂熱的采用。ASP.NET很快變成用微軟技術開發web應用的标準,沉重打擊了其他web開發平台的競争者。從那時起,ASP.NET有了一個修正版(ASP.NET1.1)和兩個更重要的版本(ASP.NET2.0和ASP.NET3.5)
<b>ASP.NET3.5</b>
第一次面對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中。
<b>LINQ</b>
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。
<b>ASP.NET AJAX</b>
最近,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方式的不同。
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的應用。
<b>綠點和紅點</b>
很奇怪,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
<b>Silverlight</b>
最近,有許多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,如需轉載請自行聯系原作者