本文同步刊登於 MSDN:http://www.microsoft.com/taiwan/msdn/columns/jhu_ming_jhong/Exam_70-528.htm
近幾年來,Web 的發展非常迅速,從一個簡單的靜態資料服務,發展到具有高度互動能力並提供豐富資料與知識的平台,甚至於已經成為企業核心應用的主要用戶端,使用者只要透過瀏覽器,輸入網址,即可進入企業的應用程式之中,透過企業開發的各式應用程式,來獲取、分享資訊或從事工作等等,在高度 Web 化的企業中,員工甚至不必到公司即可處理公事。
也就因為如此,企業對於 Web-Based 應用程式的需求量愈來愈大,到今日已經成為應用程式發展的主流,因為它的諸多特色,與 Windows 應用程式相較之下,發展 Web-Based 應用程式似乎較能節省許多成本,許多大型的 Web-Based 應用程式也就因為這樣而發展出來,像是 Web-POS、Web-ERP、Web-CRM、Web-KM、…等等。然而隨著應用的複雜度逐漸提升,Web-Based 應用程式發展的挑戰也逐漸的浮現出來,例如平台的選擇、瀏覽器的種類、如何提供與 Windows 應用程式相似甚至相同的互動經驗、與其他系統的構連,以及其他更多需要考慮的因素,使得 Web-Based 應用程式需要花費的心力,可能會遠超過 Windows 應用程式。
微軟自 Windows NT 4.0 時代,就開始耕耘 Web-Based 應用程式平台,自 IIS 2.0 的 ASP 1.0 開始,歷經 Windows NT 與 Windows Server 2003,ASP 的能力愈來愈強大,在 Microsoft .NET Framework 也納入了 ASP 技術,稱為 ASP.NET,此時微軟對 ASP 部份的支援等於是脫胎換骨般,讓以往在 ASP 時代無法很簡單做到的事(例如存取 API),在 ASP.NET 都可以很輕易做的到,而新的 ASP.NET 2.0 更納入了許多新的東西,架構上也有所改變。這些新的東西,以及 Web-Based 應用程式的基本程式設計(coding)觀念,就是 70-528 所要測驗的主要標的。
考試背景
Exam 70-528: TS: Microsoft .NET Framework 2.0 Web-Based Client Development 係以 ASP.NET 2.0(System.Web 命名空間)為核心,測驗考生對於利用 .NET Framework 2.0 開發 Web-Based 應用程式的能力,不只是 System.Web 命名空間而已,也包括了 System.Data(ADO.NET)與 System.Xml(XML)等命名空間。
微軟建議考生最好要有在 Visual Studio 與 .NET Framework 開發 Web Application 的實務經驗,若有 .NET Framework 1.x 與 Visual Studio.NET 2003 的經驗更佳,或者是具備有 Exam 70-305(VB)或 Exam 70-315(C#)考試同等的知識與經驗。
筆者認為考生不只是要了解 System.Web 命名空間的應用,還要對 .NET Framework 的基礎開發有一定程度的了解,亦即與 Exam 70-536 之考試相同的標準,如此對準備考試,以及實務上在 Web 應用程式的發展才會有更大的助益。
考試測驗的技能
70-528 考試以測驗對 Web Forms 與 Web-Based 應用程式的開發熟悉度為主,考試支援 C#、Visual Basic 與 Visual C++.NET,共分七大主題。
- 建立與撰寫程式碼控制 Web 應用程式。
這個主題主要考驗的重點在於,考生對於基本 Web 應用程式的設計以及控制項的使用,在 System.Web.UI.HtmlControls(基本 HTML 伺服端控制項)以及 System.Web.UI.WebControls(ASP.NET Web 控制項)中所列示的控制項,小自 Button/HyperLink,大到FileUpload/Calendar/Table 等控制項,都是布置出 Web 應用程式使用者介面的重要項目,考生需要熟悉這些控制項的基本用法(包含各類事件處理),以及何時適用何種控制項。
除了靜態布置控制項外,動態生成控制項也是考試重點之一,包括產生、配置與設定事件處理常式等,開發人員會經常使用這些功能,來產生一些具互動性的使用者介面(例如依權限或輸入資料來判斷是否顯示 Button 或 Link),或者動態改變控制項的屬性等。
狀態管理(State Management)是在 Web-Based Application 中非常重要的課題,同時也是很多 Web 開發人員容易忽略的地方,Web 應用程式是一種無狀態(State-less programming model)程式模型,因此在 Web 應用程式中的資料,都是要由 Session/ViewState 來保存,應用程式不會主動保存,這也是 Web 和 Windows 應用程式最明顯的差異,在 ASP.NET 2.0 中支援 InProc、State Server 以及由資料庫(SQL Server)保存,尤其是在 Web Form 的環境中,使用資料庫來保存狀態資料的用法比較常見,考生必須要知道狀態管理的方法,以及如何應用。
為了減少 Web Server 和用戶端之間的資料傳輸,在 Web Form 表單中,ASP.NET 提供了可以在用戶端就直接檢查資料的驗證控制項(Validation Controls),驗證控制項允許開發人員可以自訂錯誤訊息,以及設定驗證的方法(不同的控制項有不同的方法),這是考試重點之一,考生應對於所有的驗證控制項用法要熟悉,不論是直接放在網頁上、用程式來設定、或是自訂驗證的方法等。
讓我們將視界由網頁層級拉高到應用程式層級,開發人員可以利用 Global.asax 的應用程式事件與 Session 事件,對於特定的狀況做處理(例如在 Session 被釋放時要做什麼,應用程式發生錯誤時要做什麼等)。應用程式設定方法也是考試重點之一,包含 Web Site Administration Tool 的使用、利用 Web.config 來設定環境以及加入自訂的設定模式(例如資料庫的連線字串)與利用 Machine.config 套用伺服器電腦的設定值等,都是考試的範圍,考生應該多加注意。
ASP.NET 的 HTTP Handler 是一個獨立於 Web Form 的處理常式,它最大的好處是可以在不產生 HTML 訊息下,輸出二進位的資料流,也就是說,開發人員可以利用它來產生動態繪製的圖片,或是輸出檔案,實務上常用於輸出儲存在資料庫中的二進位資料,如何利用 HTTP Handler 來做到這些能力,為考試重點之一。
本主題的最後一個重點,就是如何利用 ASP.NET 的 Page 類別與五大物件(Request/Response/Server/Session 與 Application)來實作應用程式的行為,包括 Response.Redirect()、Server.Transfer()、Page.IsPostBack、Page.IsCrossPostBack 與非同步處理等行為,考生必須要熟悉這些方法,在實務上也是經常會使用的。
- 使用 ADO.NET、XML 與資料填補控制項(Data-Bound Controls)來整合資料與 Web 應用程式。
ADO.NET 是 .NET Framework 連接資料庫的重要類別物件,它存在於 System.Data 中,支援 SQL Server 原生提供者(Native Provider)、OLE DB 資料來源、Oracle 資料來源與 ODBC 資料來源等,當然也支援像是 MySQL 或 Sybase 等資料庫,但要額外安裝由提供者開發的. NET Data Provider,才可以應用在 .NET Framework 中,ADO.NET 與資料庫操作(SQL 指令與如何透過 ADO.NET 物件操作資料庫)是考試重點。
在 Web-Based 應用程式中,小心使用 DataSet/DataTable 是很重要的,因為這些資料物件都會佔用記憶體,由於 Web 應用程式是多工型的系統,同時會服務很多使用者,若將 DataSet/DataTable 存在 Session 中,會讓記憶體用量暴增,而吃掉伺服器中的資源。不過若是善用的話,DataSet 和 DataTable 則是一個在管理資料上非常好用的東西,所以考試也會出現如何操作這些物件的試題(用程式或用 Visual Studio 設定)。
ASP.NET 所提供的資料控制項在設計起來,彈性遠大於 Windows Forms 的控制項,像 GridView、DataList、Repeater 等控制項,都可以透過樣板化能力來輕鬆訂製使用者介面,同時也可以依照開發人員的需要對控制項內容做動態更新的填補動作(例如用 GridView.RowDataBound 事件),在考試中會測驗資料控制項操作與資料繫結的部份,在實務上資料控制項用的非常的多,所以考生要特別熟悉這個部份。
除了資料庫以外,也少不了 XML 的資料操作與讀寫,System.Xml 命名空間中有許多可以操作與存取 XML 的物件,想要操作 DOM 的話可用 XmlDocument 類別;若想要讀取可以用 XmlReader;寫入 XML 可以用 XmlWriter 物件,搜尋 XML 資料可用 XPath 等等,考生要對 XML 與相關物件的使用要熟悉,實務上對 XML 的應用也很多。
- 建立自訂 Web 控制項。
與 Windows Forms 相同,Web Form 也有自訂控制項的能力,並且同樣有 User Control 與 Custom Control 二種,多數的實務開發都會用 User Control,只有需要重覆在多專案中使用或者要賣出去的元件,才會使用到 Custom Control 專案。Custom Control 除了可以以 DLL 的方式獨立部署外,同時也要重視與 Visual Studio 等整合開發環境的溝通,因為這會讓開發人員更容易的使用控制項,所以 Custom Control 要花較多的時間發展。
Web Form 有一個特殊的 Custom Control,稱為樣板控制項(Template Control),它可以讓開發人員自訂控制項的內容,就像 GridView 那樣的作法,可給予開發人員更大的彈性,但比 Custom Control 開發來的更複雜,所有的 Template Control 都要繼承自 System.Web.UI.ITemplate 介面。
考生至少要知道如何設計 User Control,並且了解 Custom Control 與 Template Control 的設計方法,建議至少要實作過一次 Template Control,以加深印象。
- 追踪、設定與部署 Web 應用程式。
若 Web 應用程式開發已具一定規模時,有時在偵錯或者維護時會變得愈來愈不容易,或者是資料量大時,會有下載延遲(download delay)的狀況發生,此時,就需要對應用程式進行最佳化工作。
ASP.NET Cache 是具有快取執行結果能力的物件,開發人員得以透過宣告方式,或者直接存取 Cache API 來實作快取能力(快取的類型是考試重點之一),若是要快取 SQL Server 資料,則可使用 System.Data.SqlClient 的 SqlCacheDependency 物件來實作;開發人員可以在效能監視器中加入自訂的監控參數,如此系統管理人員即可用 Performance Counter 來監看應用程式狀況;若需要追踪應用程式執行狀態以檢查是否有問題時,可利用 Trace 物件來實作,它可以將追踪結果顯示於網頁中,和 Debugger 的行為類似。
ASP.NET Health Monitoring API(System.Web.Management 命名空間)則是 ASP.NET 2.0 的新功能,系統管理員人得以透過 Health Monitoring 機制,來檢查 Web 應用程式的健康狀態,開發人員亦可以透過繼承 WebBaseEvent 方式來實作自訂的健康狀態訊息。這是考試重點之一,考生要熟悉如何應用 Health Monitoring API 來實作自訂的訊息。
ASP.NET 2.0 的部署方法支援使用 Windows Installer 部署,以及直接發布(Publish)的方式,若採用直接發布,則 Visual Studio 會對 ASP.NET 2.0 程式做預先編譯(Pre-compilation),然後複製到要發布的位置,預先編譯的好處是不會使程式碼外流,並且速度會較快。
考生對於 Web 應用程式的部署要熟悉,尤其是預先編譯模型,以及用 Web Setup Project(Windows Installer)的部署方式。
- Web 應用程式的客製化(Customization)與個人化(Personalization)。
個人化(Personalization)是 Web 應用程式的特色之一,透過 Web 應用程式的處理,可以讓使用者介面呈現出使用者自己想要看的資料內容或是畫面配置,例如主題(Theme)或面板(Skin)等,都可以做到客製化的能力。以往要實作這樣的功能,都要由開發人員去操作 HTML 與 CSS 樣式表才可以做的到,在 ASP.NET 2.0 中,新增了一些可以幫助開發人員設計個人化或是相同風格的網站應用。除了可以做到個人化以外,還可以輔助開發人員設計一些多數網站都有的功能。
Master Page(主版頁面)是 ASP.NET 2.0 的新功能,它可以將網頁的布置方式變成同一個規格,開發人員只要實作 Content Page(內容頁面)即可套用,不必再像以前使用 FRAME 或 IFRAME 的方法。在 Master Page 中可以製作巢狀型的 Master Page,而 Content Page 也可以預先設定預設內容(Default Content),在配置的靈活性上也大大提升。Theme 與 Skin 物件可以讓開發人員設定布景主題或控制項樣式,可先由設計人員先設定好樣式後,再由開發人員設定 Theme 主題,套用到網頁中,也可以透過程式設計的方法來設定主題。
Master Page/Theme/Skin 可以做到樣式和畫面的個人化,那麼資料呢?ASP.NET 2.0 新增了 WebPart Framework 來支援這個能力,開發人員可以實作提供特定資料的 Web Part 來供使用者自行取用,整個 Web Part Framework 提供了所有必要的功能,例如分類管理的 CatalogPart、顯示區域的 WebPartZone、編輯功能的 EditorPart、總管 WebPart 的 WebPartManager 等類別。
考生要對動態切換 Master Page/Theme 的方法、巢狀 Master Page、預設內容的 Content、Web Part 的設計方法,以及在 Web Part 之間溝通的能力要熟悉。
- 實作驗證(Authentication)與授權(Authorization)。
ASP.NET 2.0 Membership Service 將使用者(會員)資料模型化,以 Provider 的方式開放給應用程式與使用者,開發人員只要在後端建立資料庫,即可很輕鬆的使用 Membership 類別的功能,也可以和像是 Login、LoginStatus、LoginView、LoginName、CreateUserWizard 與ChangePassword 等控制項串連,構成一個登入驗證的服務(這些控制項也是考試重點之一)。因為 Membership 的資料庫格式是固定的,所以若要以現有的資料庫來實作 Membership 的功能,則要實作自訂的 Membership Provider 才可以。除了 Membership Service,ASP.NET 也提供了 Role Service,與 Membership 一樣,是由固定資料格式的資料庫所提供,讓開發人員透過 Web Site Administration Tool 來設定應用程式的角色,然後在應用程式中設定角色權限,並且在執行期檢查,以確保使用者是正確的角色。
當然,Membership 與 Role 機制可以不使用它,開發人員也可以透過 Windows 驗證、表單驗證等方法來檢查使用者,並且以 URL 授權方法來設定存取權限,若有需要,也可以透過模擬(Impersonate)能力來取得足夠存取資源的權限,存取完成後再恢復原來的權限。
- 建立 ASP.NET Mobile Form。
ASP.NET Mobile Form 是給行動裝置的瀏覽器(例如 Pocket IE)所使用的,由 ASP.NET 1.x 的 Mobile Controls 發展出來,具有檢查用戶端瀏覽器能力(Browser Capabilities)的功能,開發人員可以藉由檢查瀏覽器能力的方法,來實作不同的使用者介面(這個功能稱為 Device-Specific Rendering,例如支援彩色的瀏覽器才給予彩色的頁面,否則就給予單色頁面),這是考試的重點之一,考生要多加注意。
準備方法
準備 70-528 的方法,除了要收集資料外,就是累積寫程式的經驗,對 Web Forms 程式的經驗愈多,準備這一科就會愈輕鬆,若有開發過較複雜,應用多種技術的考生更有利,但 ASP.NET 2.0 的新功能也不能忽略。
書籍部份,目前中文書有不少是以 Web Forms 為主題的初學書籍,但往往都不太夠,可能還需要搭配 .NET Framework SDK 文件來查詢,否則可能會有不足之處。微軟官方有出版一本官方自學教材,專門為準備本科考試而撰寫(筆者完稿時尚未有出版社翻譯該教材為中文版)。
若需要官方教育訓練課程,目前微軟有四堂課程,在 E-learning 上也有開:
- Workshop 2543: Core Web Application Technologies with Microsoft Visual Studio 2005
- Workshop 2544: Advanced Web Application Technologies with Microsoft Visual Studio 2005
- Workshop 2541: Core Data Access with Microsoft Visual Studio 2005
- Workshop 2542: Advanced Data Access with Microsoft Visual Studio 2005
國內的教育訓練中心有開組合(套餐)型的課程,可逕洽教育訓練中心。
考試資訊
考試代碼:Exam 70-528
考試名稱:TS: Microsoft .NET Framework 2.0 Web-Based Client Development
考試題數:45
通過分數:700