Exam 70-536: TS: Microsoft .NET Framework 2.0 – 應用程式開發基礎
考試測驗的內容
-
使用系統型別與集合物件開發應用程式(15%)
筆者認為這真的是基本中的基本了,寫程式不可能用不到任何的資料,就算是程式自己產生的,也還是一些資料,而能夠承載資料的記憶體空間,就是變數(variable),而變數都會有一個資料型態(data type),在 .NET Framework 中,每個語言的內建型態都可以對應到 .NET Framework 的資料物件(繼承自 System.ValueType 類別),考生要能夠會操作這些型別。
泛型(Generic)是 .NET Framework 2.0 的新功能,讓類別可以在不受資料型別的限制下做到最大的共用性,而 .NET Framework 2.0 多數的集合物件都可支援泛型,未來 .NET Framework 3.5 的 LINQ(Language in Query)會大量使用到泛型能力,所以考生要多下點工夫在泛型應用上。
集合物件(Collection)是資料處理上相當好用的工具,根據不同的需求,會有不同的集合物件來處理,例如陣列有 List或ArrayList,鍵值對應部份則有 Dictionary 與 Hashtable 可用,瀏覽集合物件則有 IEnumerate 介面物件可用,堆疊和佇列則各有 Stack 與 Queue 類別可以用,這些集合物件在開發應用程式的資料處理上非常實用,考生必需要會至少五種以上的集合物件用法,最好是全部都會。
標準協約(Standard Contracts)介面對於處理物件間的聯繫有相當的重要性,例如物件間的比較、轉換、複製(Clone)、判斷與格式化等等,考生至少要學會如何實作這類型的協約,以套用到應用程式之中。
事件處理(Event handling)與函式委派(Delegation)是 .NET Framework 所有事件的基礎能力,考生至少要知道如何處理由物件所發出的事件,以及幫自已的類別加上事件能力。
-
在 .NET Framework 應用程式中實作服務、執行緒與應用程式定義域(11%)
Windows Service 是 Windows 平台上特有的能力,它最主要的特性就是存在於作業系統中,能夠持續性的處理特定的事情(例如定時工作),.NET Framework 提供了 System.ServiceProcess.ServiceBase 基礎物件,讓開發人員得以很簡單的方式來撰寫 Windows Service,並且提供了 installutl.exe 來簡化服務的安裝,建議考生可以實際寫一個簡單的 Windows Service 來了解開發流程。
執行緒(Threading)是發展進階應用程式時,經常會用到的工具,例如處理長時間工作的程式,要保持使用者介面可使用時,就需要用到執行緒處理,執行緒的概念本身就可以寫一本書了,考生在利用這個工具前,最好是對概念有一些了解,才知道要如何使用,作業系統的書籍都會有執行緒的章節,考生可自行參考相關書籍。執行緒的另一個重點在於非同步處理(Asynchronous Process),這在開發企業級應用程式時會非常重要,考生必須要熟悉,而非同步的概念在作業系統的書籍也有,筆者就不在此說明(因為說明也可以寫很多)。
應用程式定義域(Application Domain)是CLR執行程序時所產生的隔離單元,開發人員可以利用這個定義域做動態的組件載入工作,這是實作可插拔式應用程式(Pluggable Application)的基礎,考生至少要了解如何產生定義域與動態載入組件的方法。
-
在 .NET Framework 應用程式中加入組態、診斷、管理與安裝功能(14%)
組態管理(Configuration Management)是在每一個具規模的應用程式都會具備的能力,它可以讓使用者在不改變程式的情況下,可以改變應用程式的行為或設定資料,最典型的就是 ASP.NET 的 Web.config,Windows 應用程式則是 .exe.config,考試必需要知道如何透過程式來讀寫組態檔,例如 ConfigurationManager 類別的操作。
診斷能力(Diagnostics)可以幫助開發人員在除錯或是偵錯追踪時的處理工作,像是 Trace 可以輸出變數資訊、Debugger 可以直接控制除錯器、Debug 可以輸出除錯訊息、StackTrace 可以找出錯誤發生點等;同時類別庫也提供了可以存取行程(Process)、效能計數器與事件記錄等等,考生必須要注意與知曉這些方法。
管理能力(Management ability)以 System.Management 命名空間為主,它是包裝 Windows Management Instrumentation(WMI)的能力,並提供介面來查詢 WMI 資料,考生至少要會使用 ManagementObjectSearcher、EventQuery 與 ObjectQuery 等類別。
安裝功能(Installation feature)則是以 System.Configuration.Install 命名空間為主,為 Windows Installer 提供了可延伸的能力,在 Visual Studio 的安裝專案中可增加自訂動作(Custom Action)來加強安裝功能,建議考生最好是實際做幾次安裝程式,以了解開發安裝程式的流程。
-
在 .NET Framework 應用程式中實作序列化與輸入輸出功能(18%)
I/O 功能是應用程式中最基本的能力,不論是對檔案、對網路或是對記憶體皆然,.NET Framework 中特別針對具有 I/O 能力的部份實作成資料流物件(Stream),檔案就是 FileStream、網路是 NetworkStream、記憶體是 MemoryStream,緩衝區資料流則是 BufferedStream,另有一種特殊的資料流,稱為隔離儲存區(Isolated Storage),這些資料流都具有特定的 I/O 能力,但開發人員只要了解基本的資料流讀寫方法,以及資料流的特性即可。
除了資料流本身以外,.NET Framework 也提供了資料流讀寫工具,分別為 StreamReader/StreamWriter 以及 BinaryReader/BinaryWriter 等類別,這些類別提供了便利的讀寫方法供開發人員使用,考生必須要了解如何使用,但在實務中則不一定要使用。
壓縮能力(Compress ability)則是 .NET Framework 2.0 新增的功能,目前支援了 GZip 及 Deflate 兩種演算法,分別為 GZipStream 與 DeflateStream 類別,開發人員可以善用這兩種類別的壓縮與解壓縮功能來減少資料量,對網路傳輸會有相當的幫助。
除了 I/O 以外,檔案系統的管理也是系統服務的基本功能之一,.NET Framework 提供了 DriveInfo、Directory、DirectoryInfo、File、FileInfo 與 FileSystemWatcher 等類別來處理檔案系統部份的工作,考生必須要熟悉基本的用法,例如如何用 DriveInfo 來列舉磁碟機、如何用 DirectoryInfo.GetFiles() 來搜尋檔案等。
序列化(Serialization)能力是 .NET Framework 的核心功能之一,舉凡 .NET Remoting、Web Service、物件讀寫與傳輸等都需要利用序列化的能力,目前序列化能力分為二種:二進位序列化(Binary Serialization)與 XML 序列化(XML Serialization),二進位序列化多用於物件讀寫以及 .NET Remoting 的物件傳輸;而 XML 序列化則多用於 Web Service 物件傳輸以及將物件格式化成 XML 時使用(這個部份對 XML 與物件交換資料的能力有相當大的幫助,例如把 XML 轉換成 Business Component 的資料物件),也因為序列化能力如此重要,所以考生必須要多下工夫在序列化能力上,尤其是 XML Serialization 的規則要很熟。
-
使用 .NET Framework 2.0 安全功能來強化 .NET Framework 應用程式的安全性(20%)
資訊安全在現在的應用程式中佔有很重要的地位,不論是 Windows 應用程式或Web應用程式皆然,在大型企業應用程式就更形重要,因為安全性設計可以保障資料的正確性、完整性以及機密性,在應用程式設計時皆需要將安全性部份一併考量,以保障應用程式的安全。應用程式的安全性不外乎三個部份:驗證(Authentication)、授權(Authorization)與存取控制(Access Control)與加密(Encryption)四個部份,在 .NET Framework 中都有提供功能。
程式碼存取安全性(Code Access Security; CAS)是 .NET Framework 的核心功能之一,它可以允許開發人員可以在程式碼的層級中設定權限,讓特定的使用者無法執行特定的程式碼,或者可以限制程式碼只能存取某些系統功能,例如 GacIdentityPermission 可限制組件只有在安裝於 GAC(Global Assembly Cache)的情況下才可執行,而 FileIOPermission 則控制了存取檔案的權限;再結合 .NET Framework 的程式碼原則(Policy),可在撰寫少量程式碼的狀態下,達到控管程式碼安全的目標。
作業系統的安全性也是 .NET Framework 所重視的部份,在 .NET Framework 2.0 新增了可以存取與修改檔案系統安全性(即存取控制表)的類別,如 FileSecurity 與 DirectorySecurity 等類別,可以修改檔案或資料夾的 ACL 權限表,以控制存取的規則。
除了程式碼部份的安全性以外,資料的安全性也很重要,在公開網路或是公開的範圍內傳輸機密資料時,必須要進行加密與解密工作,此時加密演算法(Cryptographic Algorithm)就非常重要,.NET Framework 支援了許多的對稱性演算法與雜湊計算的演算法,可利用的演算法都在 System.Security.Cryptographics 命名空間中,同時也支援非對稱性演算法與密碼金鑰產生能力等等。
同時,應用程式也需要記錄使用者狀態,或者直接取用 Windows 使用者帳戶資訊,.NET Framework 提供了 WindowsPrincipal/WindowsIdentity、GenericPrincipal/GenericIdentity 等類別物件可用,若應用程式需要實作自己的邏輯時,就可用 GenericPrincipal 與 GenericIdentity,直接取用 Windows 使用者帳戶資訊時則用 WindowsPrincipal 與 WindowsIdentity。
資訊安全是 .NET Framework 應用程式的重點項目,所以考試在這個部份佔了 1/5 的篇幅,考生要對 CAS、權限、密碼雜湊與加解密、層級管理與使用者狀態等的程式設計方法要很熟悉,這個部份可算是本科考試中最雜也最不好準備的部份,考生需要多加注意。
-
在 .NET Framework 應用程式中實作互通性、型別反映與郵件功能(11%)
互通性(Interoperability)係應用程式透過 .NET Framework 提供的交換能力,讓應用程式可以存取 COM 元件或是 DLL 所開放出來的函式,亦可以將應用程式開放給 COM 元件取用,互通性包含了 DLL 的函式宣告、產生 COM 參考組件及產生組件的型別函式庫(Type Library)等。在實務上,這個功能經常會使用到,例如呼叫廠商提供的 DLL 來控制 RFID Reader。
型別反映(Type Reflection)則是透過存取物件的 Metadata,以取得物件的資訊、組件資訊、甚至可以呼叫物件的方法或是存取屬性等等,具有相當強大的物件控制能力,開發人員可以善用它實作出動態載入與動態存取的能力。
開發人員可以透過 System.Net.Mail 命名空間中的 SmtpClient 與 Message 類別來實作發送 SMTP 郵件的能力,這個類別比較簡單,卻有許多可研究之處,例如透過 SSL 發信,或是 SMTP Server 驗證都是。
考生要特別針對DLL函式宣告、COM 元件的取用、開放組件給 COM、Reflection 與 SmtpClient 要多所了解。
-
在 .NET Framework 應用程式中實作全球化、文字操作與繪圖功能(11%)
全球化(Globalization)在大型或是跨國型的資訊系統來說很重要,例如文字的區域化(Localization)、貨幣單位與時間的同步等等,在 .NET Framework 中也提供了基礎上的支援(System.Globalization),而最常見的,還是文字的編碼問題(例如 UTF-8 轉成 Big5),System.Text.Encoding 類別提供了預設 ASCII、UTF-7、UTF-8 與預設編碼(Default)的支援,可以讓開發人員簡單的將文字轉碼。
文字的操作除了編碼外,還有搜尋(Search)與組合(Append),搜尋部份 .NET Framework 支援了 Regular Expression 的搜尋方式(System.Text.RegularExpression),而組合則有 StringBuilder 可以利用,最基本的文字操作則都包含在 System.String(也就是 string 資料型態)的成員函式中。
繪圖能力(Drawing ability)則是以 System.Drawing 為主,提供了筆刷(Brush)、筆(Pen)、畫布(Graphics)、影像(Bitmap/Image)、形狀(Rectangle/Region)、字型(Font)與顏色(Color)等功能,開發人員可以利用這些類別來在應用程式上進行影像處理與繪圖工作,然後存成資料流或是檔案。
考生應對基本文字處理、Regular Expression 使用、編碼、繪圖功能、區域設定等有所基本了解,最好是實作幾次程式。
出處:小朱® 的技術隨手寫
參考書籍
英文書籍:
中文書籍:
Microsoft .NET Framework 2.0 應用程式開發基礎 Ⅱ
參考課程:
可參考恆逸資訊的「核心程式設計」課程
最後考到還要再搭配另一科(如:70-561或70-562或70-50等等),才能換到一張MCTS喔!!
大家加油唄~~