Exam 70-526: TS: Microsoft .NET Framework 2.0, Windows Client Development 介紹

本文同步刊登於 MSDN:http://www.microsoft.com/taiwan/msdn/columns/jhu_ming_jhong/Exam_70-526.htm

只要有 Windows 作業系統的存在,就會有各式各樣的 Windows 應用程式開發出來,小至記事本、小算盤; 大至 Photoshop、Dreamweaver 乃至於 Visual Studio 與 Office 等等。Windows 應用程式的最大特色, 便是可以直接存取作業系統與硬體提供的服務,這樣可以加速應用程式的處理速度,並且可設計的彈性也會變大 ,不會受限於某個應用程式的框架中。

在 Microsoft .NET Framework 平台策略中,Web 和 Windows 應用程式為整個企業應用程式中是扮演用戶端(Client)的角色, 也因為 Windows 應用程式的高速處理能力,在.NET 平台策略中,與 Office 與 Smart Device Client(智慧型裝置用戶端) 合稱為 Smart Client(智慧型用戶端),這類型的用戶端程式可以善用硬體資源、部署簡單(透過 ClickOnce)、開發簡單(Visual Studio 與 .NET Framework)、 離線處理資料能力、並且透過 Web Service 與其他系統連接等。

.NET Framework 將多數建立 Windows 應用程式所用的 Windows API 函式包裝成 System.Windows.Forms 命名空間的類別, 包括標準的 Windows 控制項、多數的 Windows 共用控制項(如 TreeView、ListView、Toolbar)、網路瀏覽器(WebBrowser)等控制項, 並且加上了許多的輔助控制項,例如控制項布置(TableLayoutPanel、SplitContainer、FlowLayoutPanel)、執行緒處理(BackgroundWorker)等,可以加速開發人員在發展 Windows 應用程式的效率。

不過,就算是有這麼多方便的控制項,開發人員也需要懂得使用方法,也要知道要怎麼選用控制項,如此才能夠事半功倍,而這也是 Windows 用戶端開發考試的重點項目。

考試背景

Exam 70-526:TS: Microsoft .NET Framework 2.0 Windows-Based Client Development 考試,係以利用 .NET Framework 開發 Windows 應用程式為主要命題方向,測驗考生對於應用 .NET Framework 發展 Windows 用戶端應用程式的能力,除了 System.Windows.Forms 命名空間外, 還包括了資料存取(ADO.NET)、XML 處理(System.Xml)、ClickOnce 部署(System.Deployment)、繪圖與列印(System.Drawing)等命名空間。

微軟建議考生最好要有在 Visual Studio 與 .NET Framework 開發上的實務經驗, 若有 .NET Framework 1.x 與 Visual Studio.NET 2003 的經驗更佳,或者是具備有 Exam 70-306(VB)或 Exam 70-316(C#)考試同等的知識與經驗。

筆者認為考生不只是要了解 System.Windows.Forms 命名空間的應用,還要對 .NET Framework 的基礎開發有一定程度的了解,亦即與 Exam 70-536 之考試相同的標準,如此對準備考試,以及實務上在 Windows 應用程式的發展才會有更大的助益。

考試測驗的技能

70-526 考試以測驗對 Windows Forms 應用程式的開發熟悉度為主,考試支援 C#、Visual Basic 與 Visual C++.NET,共分七大主題。

  • 使用標準控制項建立 Windows Forms 應用程式的使用者介面。

    要開發 Windows Forms 應用程式,就一定要會設計使用者介面,而要會設計使用者介面,則一定要知道如何使用控制項,在 .NET Framework 中內建了非常多的控制項,在 Visual Studio 中都可以看的到。

    首先,要先知道如何操作表單(Form),操作表單在 Windows Forms 應用程式的開發占相當重要的地位,例如像是控制表單的樣式、大小、 控制鍵(最大/最小化與關閉)、在表單之間傳遞資料與控制表單的顯示與隱藏等,以及如何用程式碼去控制表單的屬性與行為(例如事件處理或是表單拖放等)。

    控制項的使用是一定要會的,不論是內建標準控制項或是 Windows 共用控制項皆然,這些控制項會構成使用者介面,直接由使用者去操作, 所以適當的控制項配置以及回應能力是很重要的,例如使用 MessageBox來顯示應用程式通知、用 Enabled 屬性來封鎖命令按鈕或是清單、用Visible 屬性來控制可見的狀況、設定快捷鍵(shortcut key)以及工作列小圖示(Notify Icon)等等,控制項的使用與設計若得當,可以增加使用者的滿意度,以及執行工作的順暢度。

    使用者介面的動線設計與控制項群組化(Grouping Controls),可以幫助開發人員得以較簡單的方式控制一群的控制項,例如步驟化的使用者介面; 或是像問卷填答系統等,有時會需要把一堆控制項集合起來一起操作時,就會使用到具群組化的控制項,如 Panel 與 Group Box;另外,在 .NET Framework 2.0 提供了 TableLayoutPanel 與 FlowLayoutPanel,可以讓開發人員以類似網頁表格排版的方式來配置控制項,SplitContainer 則可以分隔二個 Panel ,做到與檔案總管相似的使用者介面(由中央的分隔列來調整兩個 Panel 的大小),如何應用群組化控制項在應用程式中,則是考試重點之一。

    功能表(Menu)和快顯功能表(Context Menu)在 Windows Form 應用程式中,是很常見的一個控制項,在 .NET Framework 2.0 中,Menu 的威力比 .NET Framework 1.x 更強也更能夠自訂化,除了要能夠利用 Visual Studio 來控制 Menu 外,以程式控制 Menu/Context Menu 控制項與其中的項目也是重點之一。

    事件處理常式(Event handler)則是表單/控制項與應用程式溝通的方法,像是捕捉鍵盤訊息、滑鼠訊息與使用者指令時,就必須要透過事件處理常式,所以選用正確與適當的事件常式是重點之一,而如何取出事件參數,以及如何動態設定事件處理常式(這是實作控制項陣列的重點),亦為考試容易出題的部份之一。

    這個主題主要測驗方向都是在基本的 Windows Form 使用者介面設計上,考生最好是對使用者介面設計與程式碼動態控制有經驗,否則可能會看不懂考試問題中的程式碼。

     
  • 整合資料於 Windows Forms 應用程式。

    在商用應用程式中,若沒有和資料庫連接,則會顯得有點格格不入,就算是一般應用程式,也多少會處理到一些資料,這些資料則不一定來自於資料庫,有可能是檔案(文字檔或二進位檔)、網路資料或是 XML 資料等等,考生要能夠讀寫資料,並且應用適當的控制項呈現資料。

    資料繫結(Data Binding)能力是 Windows Forms 結合資料處理的核心能力之一,除了標準負責資料顯示的 DataGridView 之外,像是 ListBox、ComboBox 等控制項都可以實作資料繫結,另外,也可以透過 Control.DataBindings 來加入控制項的資料繫結能力。Visual Studio 2005 也提供了視覺化工作來處理這個工作。

    但若要真正處理資料,還是要很熟悉 ADO.NET(System.Data 命名空間),這是考試重點之一,也是這個主題題目數最多的部份,不論是 Connection、Command、DataReader、DataAdapter 等基本類別,或是 DataSet、Typed DataSet、DataView、DataTable、DataRow、DataRelation 與 DataColumn 等離線資料庫基本組成元件,都必須要練到很熟悉才行,因為這是唯一和資料庫通訊與交換/讀寫資料的最佳管道,不論是連 Access、SQL Server、Oracle 或 ODBC 資料庫;執行 SQL 、填入資料或執行交易程序等等,ADO.NET 可以做到的事非常多,所以考生務必要練到能夠活用,這個部份是不分 Windows/Web 或其他應用程式,只要在 .NET Framework 中有開發到資料庫應用時,就會利用到。

    XML 也是一個常被使用的資料種類,現在已經被廣泛使用在各類型的應用程式,RSS 就是一個典型的例子,其他像是 HIPAA 等大型資料交換標準,也都有 XML 的影子。System.Xml 命名空間提供了經由 MSXML 存取 XML 資料所需要的方法與類別,考生必須要熟練使用 System.Xml 提供的類別來存取 XML 內容(如 XML DOM),以及讀寫 XML 資料來源(檔案或是網路資料流),這是考試重點之一。

     
  • 於 Windows Forms 應用程式中實作列印與報表功能。

    Windows Forms 和 Web Forms 最大的不同之一,就是 Windows Forms可以實作自訂的列印(Printing)能力,透過 Windows API 與 .NET Framework 提供的列印類別(System.Drawing.Printing 命名空間),開發人員可以在由作業系統所產生的印表機 Graphics 物件中,畫出想要的報表格式(如文字、圖形或其他可繪出的資料),然後由印表機列印出來。

    除了列印以外,.NET Framework 也提供了操作印表機與預覽列印(Print Preview)能力,開發人員可以用程式碼在執行時期設定預設印表機、列舉印表機、設定印表機屬性等工作,也可以在列印前利用 PrintPreviewDialog 或 PrintPreviewControl 類別來產生預覽列印的對話盒或自訂視窗。

    考生要對 System.Drawing.Printing 命名空間中的類別要熟悉,最好是能夠實際撰寫,包括如何操作繪圖指令等。

     
  • 強化使用性(Usability)。

    當應用程式開始擴張,或者一開始就計畫要開發的是中大型的 Windows Forms 應用程式時,可能光只是控制項會滿足不了來自各個層面的使用者、需求或操作習慣,此時就要思考使用者介面的使用性,以更方便或更直覺的作法來實作應用程式。

    若應用程式是要給不同語系的使用者使用時,全球化(Globalization)能力就很重要,因為要在不同的語系顯示當地語系的使用者介面,包含貨幣單位與輸入方法等,.NET Framework 提供了輸入法模式、資源檔等方法可滿足 Windows Forms 的全球化需要。

    若希望使用者可以在同一個介面下存取與使用多個文件資料時,可以利用 MDI(Multiple Document Interface) 介面,讓應用程式可以同時開啟數份文件,或是數個視窗。並且可以配合實作 Drag-and-Drop(拖放)能力,讓使用者在利用應用程式工作時能夠更簡單順手。

    .NET Framework 另外提供了許多控制項,可以在應用程式執行中和使用者互動,或提供使用者協助(User Assistance),利用 ProgressBar 可以顯示工作處理的進度;StatusStrip 可以顯示應用程式目前的狀態;Timer可以控制定時的工作(例如每三分鐘存檔一次);ErrorProvider 可以告訴使用者目前哪個地方有錯誤;HelpProvider 可以提供說明;Tooltip 可以提供小提示等等,善用這些控制項可以增加使用者的滿意經驗。

    考生至少要熟悉各控制項基本操作方法、MDI 模式下子視窗的控制、全球化的作法以及拖放的處理方式。

     
  • 實作非同步程式設計技術以強化使用者經驗。

    這個主題是 70-526 考試的重點項目,在設計 Windows Forms 應用程式中,有時會出現一些短時間內無法完成的工作(例如大量資料處理或是檔案複製等),若不加以處理,則在工作執行期間使用者介面會僵住,使用者可能會以為應用程式當掉了。所以要能夠執行工作,又要能保持使用者介面的可使用性,就是這個主題所要考驗的。

    這個問題的解決方法,就是使用多執行緒(Multithreading)機制,Windows Forms 應用程式本身稱為主執行緒(Main Thread),而需要執行工作的執行緒稱為工作執行緒(Worker Thread),將要花時間的工作交給工作執行緒去執行,主執行緒就可以保持對使用者介面回應的處理,不過執行緒間的資料交換與控制項存取往往是令開發人員頭痛的問題。以往在 .NET Framework 1.x 的時代,必須要自行處理執行緒間交換資料(例如處理進度)的問題,像是 Control.Invoke() 與委派函式的工作,但在.NET Framework 2.0 中,新增了一項非常好用的工具類別:BackgroundWorker,它可以以很簡單的方法產生工作執行緒,並且保持主執行緒的可用性,並且也支援回報狀態與交換資料能力。

    BackgroundWorker 利用 DoWork 事件來設定要執行的工作,然後呼叫RunWorkerAsync() 開始執行,程式可以由 RunWorkerCompleted 事件來得到執行結果(由 DoWork 事件常式中的參數來設定)。若需要回報能力,則要先設定 WorkerReportProgress 屬性為 true,並且在 DoWork 的函式中利用 ReportProgress() 方法來傳送狀態資料,主執行緒部份由 ProgressChanged 事件來接取狀態資料並更新使用者介面。

    若不想使用 BackgroundWorker,或者是有多條執行緒要做,那麼就需要自己處理 Thread,包括偵測狀態、資料交換與控制執行緒等。

    考生必須要對於如何操作 BackgroundWorker 的流程要相當熟悉,以及如何設定它來滿足需要(例如回報狀態),另外,如何操作執行緒也是考試重點之一。

     
  • 開發 Windows Forms 控制項。

    隨著各類需求與功能的發展,開發人員會認為現有的控制項功能不足,或是想要由現存的控制項中發展更多的功能時,就需要開發自訂控制項(Custom Controls),自訂控制項可以從頭開發(繼承 System.Windows.Forms.Control 類別)、由現有的控制項中開發(繼承自想要利用的控制項)或是將許多控制項組合在一起,變成複合型控制項(Composite Control),不論是哪一種控制項,都可以放在 Visual Studio 的工具箱(Toolbox)中,應用程式的其他部份即可取用;若想要開發可以獨立存在的控制項,則可由 Visual Studio 產生自訂控制項專案,開發出來的元件即可散布(以 DLL 型態組成)。

    考生在這個主題中要注意的是自訂控制項的發展方法、控制項出現在工具箱的行為(例如圖示),以及屬性設定的方式(提示文字與設定方法等)。

     
  • 設定與部署應用程式。

    當應用程式開發與測試完成後,即可準備部署(Deployment),.NET Framework 支援 Windows Installer 方式,或是 xcopy 部署方法,但若是商用或是要簡化應用程式部署流程,可考慮使用 Windows Installer 部署,因為可以得到最大的安裝程式主控權,除了可以讀寫系統資源(檔案系統與 Registry 登錄資料庫)以外,還可以透過實作自訂動作(Custom Actions)來開發自己的安裝流程(例如在安裝時建立資料庫或網站)。

    但若是利用網路部署或是小型應用程式,用 Windows Installer 部署反而會變得較為麻煩,所以 .NET Framework 2.0 新增 ClickOnce 部署功能,可以讓開發人員透過網路來部署應用程式,並且可以提供安全設定,以及自動更新的功能,但缺點就是無法存取系統資源。

    考生需要知道這兩種方法的差異、在給定的環境中使用的部署方式、ClickOnce 的設定方法與程式控制方法等。

     

準備方法

準備 70-526 的方法,除了要收集資料外,就是累積寫程式的經驗,對Windows Forms 程式的經驗愈多,準備這一科就會愈輕鬆,尤其是針對 .NET Framework 2.0 的新功能,考生要多加注意。

書籍部份,目前中文書有不少是以 Windows Forms 為主題的初學書籍,但往往都不太夠,可能還需要搭配 .NET Framework SDK 文件來查詢,否則可能會有不足之處。微軟官方有出版一本官方自學教材,專門為準備本科考試而撰寫,國內有出版社將它翻譯為中文版,到書局找找就會看的到,上網找也行。

若需要官方教育訓練課程,目前微軟有四堂課程,在 E-learning 上也有開:

  • Workshop 2546: Core Windows Forms Technologies with Microsoft Visual Studio 2005
  • Workshop 2547: Advanced Windows Forms 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-526
考試名稱:TS:Microsoft .NET Framework 2.0 Windows-Based Client
題目數量:45
通過分數:700