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