作為剛剛出現(xiàn)的MCSD.NET認證考試的一部分,解決方案結構考試(70-100)已經經過了修改。新的考試“分析要求和定義Microsoft .NET解決方案結構”(70-300)于2003年2月正式啟動了,它涵蓋了軟件開發(fā)中最困難的一些內容,它會帶你超越設計平臺的代碼,深入開發(fā)應用程序的原因和過程。
本篇學習指導是根據(jù)我參加這門考試測試版之后的印象而寫成的,因此你會了解到如何實現(xiàn)各種設計任務——包括需求的收集、技術結構、概念和邏輯設計、數(shù)據(jù)造型、用戶界面和物理設計——一切都是和Microsoft .NET相關的。
利用我們的學習指導準備70-300考試
本文是可下載學習指導的一部分,它將會展示這門考試所涉及的許多內容。在學習指導里,你會了解到如何實現(xiàn)各種設計任務——包括需求的收集、技術結構、概念和邏輯設計、數(shù)據(jù)造型、用戶界面設計和物理設計——一切都按照Microsoft .NET的方式。
設計解決方案的一個重要部分是把你原始的概念轉變成用于系統(tǒng)的邏輯結構。這個轉變過程涉及辨別出邏輯設計的要點、在各種類型的應用程序接口里進行選擇,然后再使用這些信息創(chuàng)建一個寬泛的設計準則,這些準則會區(qū)分構成解決方案的組件和模塊。最后,你需要回顧一下你所主張的解決方案,以確保商業(yè)條例被正確地集成進了邏輯設計,還能測試這個邏輯設計對性能、可訪問性、安全、可伸縮性、可維護性和可擴展性等目標的影響。
應用程序接口的類型
當一個客戶提出需要為他們設計能夠完成特定任務的應用程序時,例如,“我需要能夠讓我管理聯(lián)絡信息的東西。你能幫我制作一個嗎?”,我的第一反應就是回答:“當然了,我有144種方法來實現(xiàn)這個目的。但是我應該選擇哪一種呢?”
當你在把概念設計轉變成邏輯形式的時候,你就需要考慮應用程序接口的類型,以及你能夠使用的多種方法里哪些最適合于你的解決方案。在大多數(shù)情況下,你最終會把下面這些應用程序類型結合起來:
桌面應用程序
Web應用程序
分層應用程序
協(xié)作應用程序
桌面應用程序
桌面應用程序是標準的基于窗體的應用程序,所有圖形用戶界面(GUI)的用戶對這樣的應用程序都很熟悉。這些類型的應用程序常常被分為下面這幾類:
單文檔界面(SDI)應用程序是最簡單的類型,它能夠允許用戶在應用程序單個實例里打開一個活動的窗口。想一想:Word(原來)的版本只能讓你一次編輯一個文檔。
多文檔界面(MDI)應用程序能夠同時打開多個活動窗口,常常是在一個主要的父窗口中。父窗口菜單的可用選項會根據(jù)活動窗口的可用功能而改變。Word和Excel都是MDI應用程序的經典范例。
控制臺應用程序在命令提示行運行。這些常常都是幾乎不需用戶交互操作的系統(tǒng)工具或者服務。
基于對話框的應用程序在Windows里常常指的是向導。這些應用程序作為工具來運行,允許用戶回答一些問題或者完成一些步驟,從而執(zhí)行復雜的線性任務。
Web應用程序
Web和桌面應用程序相比有很多優(yōu)勢,包括管理集中、升級容易,以及客戶端統(tǒng)一的特性。其的不足之處是,如果你無法訪問服務器,它們常常就無法工作。但是,就是這個問題也被.NET涉及到了,包括對連接斷開的Web 應用程序甚至是連接斷開數(shù)據(jù)庫的支持。
分層應用程序
在分層的解決方案中,組件按照功能被分層,不同的層常常位于不同的計算機上。在設計分層應用程序的過程中,當你把概念設計轉換成邏輯設計時,你會希望區(qū)分開它所需要的各種層。分層應用程序的巨大優(yōu)勢包括其可伸縮性和易維護性。其不足之處就是復雜性的問題。
協(xié)作應用程序
最后也是最復雜的應用程序類型是協(xié)作應用程序。這種類型應用程序的一個例子是微軟NetMeeting的白板特性,它能夠允許多個用戶同時在白板上寫字畫畫。白板的所有用戶都能夠實時地看到任何變化。Visual Studio .NET能夠允許許多開發(fā)人員在同一時間開發(fā)同一個應用程序,因此它是協(xié)作應用程序的另一個例子。
邏輯、擴塊和基于組件的設計
一旦建立好了你概念設計的要點并辨別了按照這一概念所構建的應用程序類型,你就有了解決方案的基礎。然后你就可以開始設計組成可交付產品的真正組件和服務了。就和所有的設計元素一樣,組件和服務的定義在編寫代碼以前都應該能夠被仔細地歸檔和考慮。
組件
如果你告訴某個程序員你需要一個組件,那么你會獲得一個ActiveX控件、Java的類或者是.NET的組件,具體是哪者要依據(jù)平臺的不同。但是如果你告訴一個軟件設計師同樣的事情,你會獲得不同的東西。對于軟件設計師而言,組件就意味著任何一小塊解決方案,這個方案被作為一組功能和特性分離開來,并和這一解決方案的其他組件相關。例如,結構組件可以是一組數(shù)據(jù)存儲過程或者是能夠放在CD上的可重新分布的客戶端程序。它也可以是用戶需要用來使用最終解決方案的一組技巧。你需要像設計師一樣思考組件,這樣才能充實你的組件設計。
服務
程序員把服務理解為Web服務、COM+或者協(xié)議服務器。但是,對于軟件設計師而言,服務常常意味著向個人或者機構支付費用,用以獲得對某些需求的支持。這筆費用可以是每年支付給VeriSign的500美元,用以獲得代碼簽名的認證;也可以是每月支付給Internet服務提供商(ISP)的250美元,用于獲得窄帶的靜態(tài)IP連接。如果你的解決方案需要這種類型的支持,你就希望確保這一點在解決方案的提案中得到了充分的敘述。
把商業(yè)條例集成到對象設計里
不論你的解決方案是一組組件、一套服務或者兩者的組合,你都希望確保它集成進了機構的商業(yè)條例:這些條例會定義或者限制你解決方案所關注商業(yè)的特定方面。這一過程很容易就會成為導致整個解決方案失敗的地方。無論這個解決方案設計得有多穩(wěn)固多周密,如果它違反了重要的商業(yè)條例——例如“每筆購買訂單都必須由管理層的一員認可”——它就會被認為是失敗的。
邏輯設計對PASS ME目標的影響
邏輯、模塊和基于組件解決方案的設計的最后一部分會發(fā)生在設計過程的最后,并會向后延續(xù)一段時間。你有了一個可以接受的解決方案,但是現(xiàn)在你會希望確切地知道這個方案能夠在多大程度上滿足你的期望,甚至超過你的預期。這一階段就是你收集其優(yōu)勢確定自己的解決方案是否滿足了PASS ME目標的時侯。它運行得是否良好?它是否能夠被需要訪問的人輕易地訪問到?它是否穩(wěn)定和安全?它是否易于維護?它是否能夠滿足未來的要求?
本篇學習指導是根據(jù)我參加這門考試測試版之后的印象而寫成的,因此你會了解到如何實現(xiàn)各種設計任務——包括需求的收集、技術結構、概念和邏輯設計、數(shù)據(jù)造型、用戶界面和物理設計——一切都是和Microsoft .NET相關的。
利用我們的學習指導準備70-300考試
本文是可下載學習指導的一部分,它將會展示這門考試所涉及的許多內容。在學習指導里,你會了解到如何實現(xiàn)各種設計任務——包括需求的收集、技術結構、概念和邏輯設計、數(shù)據(jù)造型、用戶界面設計和物理設計——一切都按照Microsoft .NET的方式。
設計解決方案的一個重要部分是把你原始的概念轉變成用于系統(tǒng)的邏輯結構。這個轉變過程涉及辨別出邏輯設計的要點、在各種類型的應用程序接口里進行選擇,然后再使用這些信息創(chuàng)建一個寬泛的設計準則,這些準則會區(qū)分構成解決方案的組件和模塊。最后,你需要回顧一下你所主張的解決方案,以確保商業(yè)條例被正確地集成進了邏輯設計,還能測試這個邏輯設計對性能、可訪問性、安全、可伸縮性、可維護性和可擴展性等目標的影響。
應用程序接口的類型
當一個客戶提出需要為他們設計能夠完成特定任務的應用程序時,例如,“我需要能夠讓我管理聯(lián)絡信息的東西。你能幫我制作一個嗎?”,我的第一反應就是回答:“當然了,我有144種方法來實現(xiàn)這個目的。但是我應該選擇哪一種呢?”
當你在把概念設計轉變成邏輯形式的時候,你就需要考慮應用程序接口的類型,以及你能夠使用的多種方法里哪些最適合于你的解決方案。在大多數(shù)情況下,你最終會把下面這些應用程序類型結合起來:
桌面應用程序
Web應用程序
分層應用程序
協(xié)作應用程序
桌面應用程序
桌面應用程序是標準的基于窗體的應用程序,所有圖形用戶界面(GUI)的用戶對這樣的應用程序都很熟悉。這些類型的應用程序常常被分為下面這幾類:
單文檔界面(SDI)應用程序是最簡單的類型,它能夠允許用戶在應用程序單個實例里打開一個活動的窗口。想一想:Word(原來)的版本只能讓你一次編輯一個文檔。
多文檔界面(MDI)應用程序能夠同時打開多個活動窗口,常常是在一個主要的父窗口中。父窗口菜單的可用選項會根據(jù)活動窗口的可用功能而改變。Word和Excel都是MDI應用程序的經典范例。
控制臺應用程序在命令提示行運行。這些常常都是幾乎不需用戶交互操作的系統(tǒng)工具或者服務。
基于對話框的應用程序在Windows里常常指的是向導。這些應用程序作為工具來運行,允許用戶回答一些問題或者完成一些步驟,從而執(zhí)行復雜的線性任務。
Web應用程序
Web和桌面應用程序相比有很多優(yōu)勢,包括管理集中、升級容易,以及客戶端統(tǒng)一的特性。其的不足之處是,如果你無法訪問服務器,它們常常就無法工作。但是,就是這個問題也被.NET涉及到了,包括對連接斷開的Web 應用程序甚至是連接斷開數(shù)據(jù)庫的支持。
分層應用程序
在分層的解決方案中,組件按照功能被分層,不同的層常常位于不同的計算機上。在設計分層應用程序的過程中,當你把概念設計轉換成邏輯設計時,你會希望區(qū)分開它所需要的各種層。分層應用程序的巨大優(yōu)勢包括其可伸縮性和易維護性。其不足之處就是復雜性的問題。
協(xié)作應用程序
最后也是最復雜的應用程序類型是協(xié)作應用程序。這種類型應用程序的一個例子是微軟NetMeeting的白板特性,它能夠允許多個用戶同時在白板上寫字畫畫。白板的所有用戶都能夠實時地看到任何變化。Visual Studio .NET能夠允許許多開發(fā)人員在同一時間開發(fā)同一個應用程序,因此它是協(xié)作應用程序的另一個例子。
邏輯、擴塊和基于組件的設計
一旦建立好了你概念設計的要點并辨別了按照這一概念所構建的應用程序類型,你就有了解決方案的基礎。然后你就可以開始設計組成可交付產品的真正組件和服務了。就和所有的設計元素一樣,組件和服務的定義在編寫代碼以前都應該能夠被仔細地歸檔和考慮。
組件
如果你告訴某個程序員你需要一個組件,那么你會獲得一個ActiveX控件、Java的類或者是.NET的組件,具體是哪者要依據(jù)平臺的不同。但是如果你告訴一個軟件設計師同樣的事情,你會獲得不同的東西。對于軟件設計師而言,組件就意味著任何一小塊解決方案,這個方案被作為一組功能和特性分離開來,并和這一解決方案的其他組件相關。例如,結構組件可以是一組數(shù)據(jù)存儲過程或者是能夠放在CD上的可重新分布的客戶端程序。它也可以是用戶需要用來使用最終解決方案的一組技巧。你需要像設計師一樣思考組件,這樣才能充實你的組件設計。
服務
程序員把服務理解為Web服務、COM+或者協(xié)議服務器。但是,對于軟件設計師而言,服務常常意味著向個人或者機構支付費用,用以獲得對某些需求的支持。這筆費用可以是每年支付給VeriSign的500美元,用以獲得代碼簽名的認證;也可以是每月支付給Internet服務提供商(ISP)的250美元,用于獲得窄帶的靜態(tài)IP連接。如果你的解決方案需要這種類型的支持,你就希望確保這一點在解決方案的提案中得到了充分的敘述。
把商業(yè)條例集成到對象設計里
不論你的解決方案是一組組件、一套服務或者兩者的組合,你都希望確保它集成進了機構的商業(yè)條例:這些條例會定義或者限制你解決方案所關注商業(yè)的特定方面。這一過程很容易就會成為導致整個解決方案失敗的地方。無論這個解決方案設計得有多穩(wěn)固多周密,如果它違反了重要的商業(yè)條例——例如“每筆購買訂單都必須由管理層的一員認可”——它就會被認為是失敗的。
邏輯設計對PASS ME目標的影響
邏輯、模塊和基于組件解決方案的設計的最后一部分會發(fā)生在設計過程的最后,并會向后延續(xù)一段時間。你有了一個可以接受的解決方案,但是現(xiàn)在你會希望確切地知道這個方案能夠在多大程度上滿足你的期望,甚至超過你的預期。這一階段就是你收集其優(yōu)勢確定自己的解決方案是否滿足了PASS ME目標的時侯。它運行得是否良好?它是否能夠被需要訪問的人輕易地訪問到?它是否穩(wěn)定和安全?它是否易于維護?它是否能夠滿足未來的要求?