應用程序開(kāi)發(fā)的目標始終如一,就是在最短時(shí)間內制作出最好的軟件。然而,隨著(zhù)開(kāi)發(fā)平臺的性能越來(lái)越高,制作軟件的壁壘也相應提高了。以 Windows 為例,原來(lái)的 Win32 接口已經(jīng)融入到功能更強的 .NET Framework 中。2002 年發(fā)布的 Framework 1.0 和 2005 年發(fā)布的 Framework 2.0 為設計和編寫(xiě) Windows 軟件的開(kāi)發(fā)人員提供了更好的工作環(huán)境,效率也更高。
.NET Framework 3.0(以前稱(chēng)為 WinFX)就是我們前進(jìn)路上的下一個(gè)目標。建立在這一新版 Framework 上的應用程序可通過(guò) Visual Studio 2005 創(chuàng )建,對大多數 Windows 開(kāi)發(fā)人員來(lái)說(shuō),這樣的應用程序將會(huì )更加熟悉。.NET Framework 3.0 是從 2.0 版本演化而來(lái),并在原來(lái)的基礎上添加了許多新的功能。.NET Framework 3.0 計劃于 2006 年底發(fā)布,適用于 Windows Vista、Windows Server 2003 和 Windows XP。
本文對 .NET Framework 3.0 及其組件進(jìn)行了整體描述,目的是讓大家對這一新版本有一個(gè)清晰的了解,同時(shí)分析了采用的技術(shù),并給出簡(jiǎn)要說(shuō)明。
創(chuàng )建現代應用程序:主要挑戰
今天,開(kāi)發(fā)一款優(yōu)秀的應用程序可不簡(jiǎn)單 - 您需要考慮眾多的要求。傳統的考慮因素,如訪(fǎng)問(wèn)數據、通過(guò) Web 瀏覽器上網(wǎng)等固然重要,但這些已經(jīng)顯然不夠了。下面列出了現代應用程序面臨的一系列新挑戰:
組織越來(lái)越傾向于從面向流程的角度看待他們的工作。由于大多數應用程序已經(jīng)對業(yè)務(wù)流程實(shí)現了部分自動(dòng)化,因此,在代碼中明確流程中的這幾個(gè)步驟就非常重要了。而要實(shí)現這一目標,最有效途徑是使用工作流技術(shù),這是一種需要支持基于工作流的應用程序的方法。
通常來(lái)講,應用程序要與組織內外的其他應用程序進(jìn)行通信?,F代應用程序還必須適用于面向服務(wù)的架構 (SOA),同時(shí)還要實(shí)現一些功能,作為其他軟件可以訪(fǎng)問(wèn)的交互服務(wù)。要實(shí)現這些目標,就需要支持面向服務(wù)的應用程序。
對于使用應用程序的人員來(lái)說(shuō),通常還需要有傳遞識別信息的方法。目前定義和使用數字標識的技術(shù)各不相同,這也是造成網(wǎng)頁(yè)仿冒等問(wèn)題泛濫的原因。有鑒于此,現代應用程序及其使用者將會(huì )從一致的數字標識用戶(hù)控件中受益。
對于現代用戶(hù)界面,人們的要求也有了很大幅度的提高。要提供真正的業(yè)務(wù)價(jià)值往往需要處理不同類(lèi)型的文檔,使用二維或三維圖形,播放視頻等等,還要保證本地 Windows 客戶(hù)端和 Web 瀏覽器能夠兼容這些功能。要滿(mǎn)足這些要求,需要不同的用戶(hù)界面采用統一的方法。
一般說(shuō)來(lái),現在的應用程序需要應對以上部分或全部的挑戰,因此,這些應用程序的開(kāi)發(fā)平臺應該采用一致、可行的方法來(lái)解決所有的相關(guān)問(wèn)題。.NET Framework 3.0 就是專(zhuān)為解決這些 Windows 應用程序難題而設計。
應對挑戰:.NET Framework 3.0 功能介紹
如圖 1 所示,.NET Framework 3.0 版是在以前版本的基礎上完善而成。事實(shí)上,3.0版本保留了 .NET Framework 2.0 的全部功能,因此,在以前版本基礎上開(kāi)發(fā)的應用程序仍然可以正常使用。.NET Framework 3.0 添加了四個(gè)新組件:Windows Workflow Foundation、Windows Communication Foundation、Windows CardSpace 和 Windows Presentation Foundation。本節將會(huì )概要介紹 .NET Framework 2.0 和上述四個(gè)新組件的功能。
圖 1
.NET Framework 2.0:Windows 應用程序通用基礎
盡管仍然可以通過(guò) Win32 界面直接編寫(xiě)軟件,而事實(shí)上卻是,.NET Framework 已經(jīng)成為編寫(xiě)新 Windows 應用程序的主流環(huán)境。如下所示為.NET Framework 最重要的組成部分:
?
ASP.NET,支持可 Web 訪(fǎng)問(wèn)的應用程序的開(kāi)發(fā)。
?
ADO.NET,允許應用程序訪(fǎng)問(wèn)相關(guān)的其他類(lèi)型數據。
?
Windows Forms,支持建立 Windows 應用程序的圖形用戶(hù)界面 (GUI)。
?
System.XML,使應用程序能夠使用 XML 定義的數據,包括 XSLT 和 XPath。
Framework 的 2.0 版本在以前版本的基礎上添加了幾項實(shí)用功能,包括對開(kāi)發(fā) ASP.NET Web 應用程序的技術(shù)改進(jìn),支持在 64 位 Windows 上運行的 64 位應用程序,還增加了處理事務(wù)的新方法。雖然 .NET Framework 2.0 中的部分組件為 3.0 版本中新增組件所取代,但是 2.0 版本的技術(shù)仍然是新發(fā)布的 3.0 版本的基礎,請見(jiàn)隨后的詳細介紹。
Windows Workflow Foundation:支持基于工作流的應用程序
工作流是一個(gè)簡(jiǎn)單思路:按照特定順序執行的一系列步驟。您甚至可以認為每個(gè)應用程序都在執行工作流,因為每個(gè)應用程序都執行某些過(guò)程。但是,在使用 C#、Visual Basic 或其他編程語(yǔ)言等傳統方法開(kāi)發(fā)的應用程序中,這些過(guò)程都隱含在代碼中。這樣做沒(méi)問(wèn)題,但是這些過(guò)程被深深地嵌入程序邏輯中,使得其執行或更改愈加困難。
使用工作流技術(shù)執行過(guò)程邏輯可以有效地解決這一問(wèn)題。采用工作流技術(shù)后,邏輯與普通代碼就不會(huì )糾纏在一起,過(guò)程中的每一步驟都會(huì )明確定義,然后由工作流引擎執行。這樣做的結果就是,過(guò)程執行清楚明確。
工作流引擎不是什么新概念,有些已經(jīng)在 Windows 和其他系統中得到應用。Microsoft 已經(jīng)在部分產(chǎn)品中嵌入了工作流引擎。但是,隨著(zhù)工作流日漸成為開(kāi)發(fā)應用程序的主流方法,提供適用于 Windows 的單一工作流技術(shù)已經(jīng)勢在必行。這也正是 Windows Workflow Foundation(正式縮寫(xiě)是 WF )的設計初衷。由于其提供了適用于 Windows 的通用工作流技術(shù),WF 已成為所有基于工作流應用程序的統一創(chuàng )建基礎。Microsoft 的 Microsoft Office 2007 系統、Windows SharePoint Services 等軟件,以及許多其他公司的應用程序也會(huì )使用 WF。
但是,提供通用的工作流技術(shù)之路卻是困難重重。舉例來(lái)說(shuō),如何使用一種方法來(lái)滿(mǎn)足不同工作流應用程序的各種要求?WF 給出的答案是,從全局視角來(lái)看待工作流。如圖 2 所示,WF 工作流只是一組由 WF 引擎執行的活動(dòng)。一個(gè)活動(dòng)就是一個(gè)類(lèi),它可以包含工作流創(chuàng )建者認為有必要的任何工作?;顒?dòng)可以在不同的工作流中重復使用,因此,在針對新問(wèn)題創(chuàng )建自動(dòng)化的解決方案時(shí),過(guò)程將會(huì )更加容易。
圖 2
提供通用工作流技術(shù)面臨另一個(gè)困難是,面向人員工作流和面向系統工作流的傳統分歧。通常來(lái)說(shuō),工作人員使用的工作流應用程序需要有較高的靈活性,能夠進(jìn)行實(shí)時(shí)更改。而一般由系統,也就是由軟件使用的工作流應用程序則相對更加靜態(tài),但要求盡可能高效。WF 綜合考慮了這兩種不同的使用情況,不僅包括面向人員的功能(如更改運行中工作流的功能),同時(shí)還支持更多面向系統的操作。
通過(guò) WF 的 Windows 通用工作流技術(shù),.NET Framework 3.0 為廣大開(kāi)發(fā)人員提供了一種非常有用的軟件開(kāi)發(fā)模式。隨著(zhù)面向流程的軟件繼續風(fēng)行,工作流技術(shù)也會(huì )隨之推廣。
Windows Communication Foundation:支持面向服務(wù)的應用程序
無(wú)論是通過(guò)工作流還是其他方式開(kāi)發(fā),絕大多數應用程序都需要與其他應用程序進(jìn)行通信。近幾年來(lái),應用程序間的通信技術(shù)發(fā)展迅速。在長(cháng)達數十年的不統一之后,主要供應商之間最終達成了一致的應用程序通信協(xié)議。根據 SOAP 這一全球 Web 服務(wù)協(xié)議,基于 J2EE、.NET Framework 等不同技術(shù)平臺開(kāi)發(fā)的應用程序間的互操作性相比以前大為簡(jiǎn)化。它還會(huì )使面向服務(wù)的架構這一思想為更多的組織接受。
當然,現在的通信方式已經(jīng)不少了。以 .NET Framework 2.0 為例,您可以選擇以下幾種通信方式:
?
ASP.NET Web 服務(wù),提供基于 SOAP 的交互通信。
?
.NET Remoting,主要用于 .NET 應用程序之間的通信。
?
Enterprise Services,支持可擴展的事務(wù)性應用程序。
?
System.Messaging,通過(guò) Microsoft Message Queuing (MSMQ) 支持隊列消息。
?
Web Services Enhancements (WSE),它是 ASP.NET Web 服務(wù)的擴展,支持 WS-Security 等新規范。
這些技術(shù)都有其自身的價(jià)值,在實(shí)際應用中也有著(zhù)各自的地位??墒?,既然問(wèn)題是一樣的,為什么要采用好幾種不同的解決方案呢?為什么不根據交互服務(wù)來(lái)建立一個(gè)單一的應用程序通信基礎?
這正是 Windows Communication Foundation (WCF) 的設計初衷。有了 WCF,開(kāi)發(fā)人員不必再像從前一樣,處理每一類(lèi)通信都要使用到不同的應用程序編程接口技術(shù) - WCF (最初的代號為“Indigo”)以通用的 API 提供通用的方法。在 .NET Framework 3.0 環(huán)境下,大多數使用上述技術(shù)之一的應用程序將會(huì )代而使用 WCF。
WCF 通過(guò) SOAP 提供強大的交互通信支持,這是現代計算機設備的基本要素。它還支持多項 WS-* 規范,如 WS-Security、WS-ReliableMessaging 和 WS-AtomicTransaction。WCF 不需要 SOAP,但是可能會(huì )使用其他方法,包括優(yōu)化二進(jìn)制協(xié)議、MSMQ 隊列消息 和基于 REST 的簡(jiǎn)單通信。WCF 同樣采取明確的面向服務(wù)方法來(lái)進(jìn)行通信。WCF 不會(huì )在對象間進(jìn)行透明通信,而是為通信各方提供略微不同的抽象服務(wù)。其結果之一就是放開(kāi)了分布式對象系統間某些緊密的耦合關(guān)系,使得交互出錯減少,并且更容易修改。
無(wú)論是在組織內部還是組織之間,應用程序通信都是現代軟件的基本功能。.NET Framework 3.0 以其 WCF 面向服務(wù)方法解決了這一難題。
Windows CardSpace:一致的數字標識用戶(hù)控件
請您想一下,人們在 Internet 上是如何表示各自身份的。多數情況下是將個(gè)人的數字標識作為一個(gè)簡(jiǎn)單的用戶(hù)名。再加上密碼之后,就可以使用這個(gè)標識訪(fǎng)問(wèn)電子郵件帳戶(hù)、網(wǎng)上商店、網(wǎng)上銀行和其他一些金融機構了。盡管這種方法很簡(jiǎn)單,現在也在普遍應用,但是用戶(hù)名和密碼方式有著(zhù)無(wú)法回避的缺點(diǎn)。最重要的兩項是:
要記住登錄眾多網(wǎng)站的不同用戶(hù)名和密碼,的確讓人不勝其煩。為了減少這些麻煩,許多人在不同網(wǎng)站使用相同的用戶(hù)名和密碼,可這樣又增加了安全風(fēng)險。
用戶(hù)名、密碼和其他個(gè)人信息可能會(huì )被網(wǎng)頁(yè)仿冒者竊取。網(wǎng)頁(yè)仿冒者會(huì )發(fā)送欺騙性電子郵件,誘使受害者去登錄一個(gè)假冒網(wǎng)站,比如一個(gè)與受害者銀行極其相似的仿冒網(wǎng)站。而這個(gè)網(wǎng)站實(shí)際上是網(wǎng)頁(yè)仿冒者控制的。一旦受害者輸入自己的用戶(hù)名和密碼,網(wǎng)頁(yè)仿冒者就會(huì )利用這些信息,在真網(wǎng)站冒充該用戶(hù),牟取不當利益。
要減少這些問(wèn)題的危害性,我們需要采用新的方法來(lái)管理數字標識。Windows CardSpace(最初代號為“InfoCard”)是這種新方法中的重要組成部分。為幫助人們追蹤自己的數字標識,CardSpace 用不同的信息卡來(lái)表示每個(gè)數字標識。如果網(wǎng)站接受 CardSpace 登錄,那么用戶(hù)在嘗試登錄這一網(wǎng)站時(shí)會(huì )看到 CardSpace 選擇屏幕,如圖 3 所示。您可以選擇一張卡片,這就相當于選擇了登錄該網(wǎng)站的數字標識。不必再去費心記住數不清的用戶(hù)名和密碼,用戶(hù)只要記住他們要使用的那張信息卡就可以了。不同的信息卡還包含其他信息,用戶(hù)可以通過(guò)它控制登錄網(wǎng)站時(shí)提交的信息。
圖 3
信息卡表示的這些標識是由一個(gè)或多個(gè)標識提供者創(chuàng )建而成的。組織可以有自己的標識提供者,而不必依賴(lài)于簡(jiǎn)單的用戶(hù)名和密碼。每個(gè)標識提供者都會(huì )采用更加強大的加密機制,讓用戶(hù)來(lái)驗證他們的標識。CardSpace 本身也包含一個(gè)自發(fā)行的標識提供者,可以在客戶(hù)端計算機上運行。使用這一提供程序,用戶(hù)可以創(chuàng )建自己的標識,且標識也不必依賴(lài)密碼進(jìn)行身份驗證。網(wǎng)站接受這些自發(fā)行 CardSpace 標識,這樣就不必再依賴(lài)常見(jiàn)的密碼方法,自然會(huì )減少因密碼而帶來(lái)的諸多問(wèn)題。
不用密碼登錄網(wǎng)站,網(wǎng)頁(yè)仿冒者也就無(wú)密碼可偷了!但是,如果網(wǎng)頁(yè)仿冒者成功誘使受害者訪(fǎng)問(wèn)假冒網(wǎng)站的話(huà),他們還是會(huì )竊取用戶(hù)的其他信息,如敏感的醫療信息等。要杜絕這種情況,就要求用戶(hù)自己能夠區別假冒網(wǎng)站和真網(wǎng)站。為幫助用戶(hù)識別網(wǎng)站,擁有網(wǎng)站的組織應獲取“高度確認認證”。與現在的 SSL 簡(jiǎn)單認證不同,新的認證方式涉及到更多、更嚴格的流程,其中包括采用更嚴格的方式來(lái)證明申請該項認證的組織的身份。高度確認認證上還可以帶有公司徽標和其他信息,幫助用戶(hù)準確識別使用證書(shū)的網(wǎng)站是否合法。用戶(hù)訪(fǎng)問(wèn)新網(wǎng)站時(shí),CardSpace 會(huì )始終以標準屏幕顯示該網(wǎng)站的證書(shū)信息。根據認證的接受程度,屏幕上會(huì )自動(dòng)顯示出對網(wǎng)站標識的確認程度。其目的是,強制用戶(hù)明確界定網(wǎng)站是否可信,然后幫助他們作出正確選擇。
Windows CardSpace 實(shí)際上是更大的標識元系統的一部分。標識元系統完全基于開(kāi)放的公共協(xié)議,它定義了一種全新的方式,能夠使不同的數字標識技術(shù)在各個(gè)不同的平臺(包括 Windows 以外的操作系統)和應用程序(包括 Internet Explorer 以外的 Web 瀏覽器)上使用。CardSpace 采取通用的方法來(lái)選擇標識和其他 Windows 信息,因而在元系統中扮演著(zhù)重要角色。并且,由于解決了基本的標識問(wèn)題,CardSpace 也已經(jīng)成為 .NET Framework 3.0 的重要組成部分。
Windows Presentation Foundation:適用于不同用戶(hù)界面的統一方法
對幾乎所有的應用程序來(lái)說(shuō),用戶(hù)界面都是重要的組成部分?,F在,用戶(hù)對這些界面的要求越來(lái)越高了。當然,我們仍然需要傳統的菜單驅動(dòng)式 GUI。但是除此之外,許多應用程序還需要能夠播放視頻、運行動(dòng)畫(huà)、采用二維或三維圖形,以及調用不同的文檔。無(wú)論是通過(guò)安裝的桌面客戶(hù)端還是通過(guò) Web 瀏覽器來(lái)訪(fǎng)問(wèn)應用程序,上述功能都必須可以正常使用。
一直以來(lái),Windows 上的這些用戶(hù)界面功能都是以不同方式提供的。例如,開(kāi)發(fā)人員可以使用 .NET Framework 中的 Windows Forms 來(lái)創(chuàng )建 Windows GUI,使用 HTML、Java 小程序或 JavaScript 代碼創(chuàng )建 Web 瀏覽器界面,或是使用 Windows Media Player、Adobe 的 Flash Player 等軟件播放視頻,文檔格式則以 Microsoft Word、Adobe PDF 或其他軟件進(jìn)行定義。很明顯,開(kāi)發(fā)人員面臨著(zhù)巨大的挑戰:如何使用不同的技術(shù),為不同的客戶(hù)端創(chuàng )建一致的用戶(hù)界面。這相當困難。
Windows Presentation Foundation (WPF),最初代號為“Avalon”,就是為解決這一難題而設計。WPF 為所有的這些用戶(hù)界面提供一致的技術(shù)基礎,從而大幅簡(jiǎn)化了開(kāi)發(fā)人員的工作。WPF 采用更為現代的方法,支持視頻、動(dòng)畫(huà)、二維或三維圖形以及各種類(lèi)型的文檔,從而可以讓用戶(hù)以全新的方式處理信息。此外,WPF 還為桌面客戶(hù)端和瀏覽器客戶(hù)端提供了通用基礎,大大簡(jiǎn)化了二者的應用程序開(kāi)發(fā)工作。
讓我們以圖 4 中的界面(其中包含了圖像、現場(chǎng)圖、三維視圖等等)為例說(shuō)明 WPF 的部分功能。過(guò)去,開(kāi)發(fā)人員需要懂得各種技術(shù)才能進(jìn)行工作;而現在通過(guò)這種更為一致的方法,開(kāi)發(fā)人員可以輕松制作出類(lèi)似示例中的用戶(hù)界面。
圖 4
另外一個(gè)長(cháng)期困擾用戶(hù)界面開(kāi)發(fā)人員的問(wèn)題是,如何創(chuàng )建高效界面需要的不同角色。軟件開(kāi)發(fā)人員需要編寫(xiě)相應的界面邏輯,但是,他們并不是定義界面感觀(guān)的最佳人選。一般來(lái)說(shuō),人機交互領(lǐng)域的設計人員和專(zhuān)家更適合這一工作。但是在以前的技術(shù)(如 Windows Forms)背景下,這些問(wèn)題完全由開(kāi)發(fā)人員決定。開(kāi)發(fā)人員和設計人員之間沒(méi)有實(shí)現真正有效的協(xié)作。WPF 借助于可擴展應用程序標記語(yǔ)言 (XAML) 解決這一問(wèn)題。XAML 是一種基于 XML 的語(yǔ)言,允許以聲明方式指定用戶(hù)界面 -而非代碼。這就,開(kāi)發(fā)工具就能夠根據設計人員創(chuàng )建的可視化顯示,更加容易地生成和使用界面規范。實(shí)際上,Microsoft 的一款新產(chǎn)品 Expression Interactive Designer 就是為此而設計。使用這一工具(其他的由第三方提供),設計人員可以創(chuàng )建界面外觀(guān),然后生成他們所創(chuàng )建界面的 XAML 定義。開(kāi)發(fā)人員將這些定義導入 Visual Studio 之后,就可以著(zhù)手構建界面所要求的邏輯了。
開(kāi)發(fā)人員創(chuàng )建了直接在 Windows 上運行的安裝版 WPF 應用程序后,就可以使用 WPF 提供的全部功能了。但是,若要創(chuàng )建在 Web 瀏覽器內部運行的客戶(hù)端程序,開(kāi)發(fā)人員應創(chuàng )建一個(gè) XAML 瀏覽器應用程序,我們通常稱(chēng)之為 XBAP。與安裝版 WPF 應用程序的基本原理相同,XBAP 允許在可下載的瀏覽器應用程序中表示與用戶(hù)界面相同的樣式。兩種應用程序可以使用相同的代碼,這也就意味著(zhù)開(kāi)發(fā)人員不再需要針對桌面和瀏覽器客戶(hù)端的不同技術(shù)集。特別是按照此類(lèi)豐富 Internet 應用程序的現狀,在安全沙箱內運行從 Internet 下載的 XBAP,將會(huì )限制應用程序的功能。但是,安裝版 WPF 應用程序中提供的大量用戶(hù)界面功能子集也可用于 XBAP。
WPF 安裝版應用程序和 XBAP 都可以利用 WPF 的現代圖形支持,其中包括使用硬件加速、支持矢量圖形以及其他更多功能。通過(guò)提供更強大的圖形支持功能,WPF 使得一系列數據可視化選項成為可能,而這依靠 Windows Forms 或其他的早期技術(shù)是不可能實(shí)現的。WPF 還提供了 XML Paper Specification (XPS) 的基礎,可定義查看、分發(fā)和打印固定格式文檔的標準格式。
用戶(hù)界面是現代應用程序中復雜而重要的組成部分。通過(guò) WPF,.NET Framework 3.0 提供了一種比較完整和一致的解決方案,用于應對用戶(hù)界面方面的難題。其目標是使構建用戶(hù)界面的相關(guān)人員(包括開(kāi)發(fā)人員和設計人員)能夠更有效的進(jìn)行工作。
返回頁(yè)首應用 .NET Framework 3.0:設想
理解一組技術(shù)如何協(xié)同工作的最好方式,就是查看其使用方式的示例?,F在假設,一款應用程序要求客戶(hù)和代理提交保單。如果使用 .NET Framework 3.0 執行,則會(huì )有圖 5 所示的工作流程。
圖 5
圖表左上角所顯示的應用程序業(yè)務(wù)邏輯,是使用 WF 工作流得以實(shí)現的。處理保單是一項多步驟流程,包括根據組織的保險規則來(lái)評估此保單,或許要檢查投保人的信用,甚至還要獲得其上司的批準。工作流依靠所需要的其他軟件,以活動(dòng)方式實(shí)現流程中的每一個(gè)步驟。如果要訪(fǎng)問(wèn)存儲數據,工作流中的活動(dòng)可以使用 ADO.NET。
保險公司可以提供一個(gè)呼叫中心,使客戶(hù)可以通過(guò)電話(huà)進(jìn)行投保。呼叫中心員工使用的客戶(hù)端軟件顯示在圖表的右上角,是由安裝版 WPF 應用程序實(shí)現的??蛻?hù)端使用 WCF 與應用程序業(yè)務(wù)邏輯進(jìn)行通信,采用的是經(jīng)過(guò) WCF-WCF 通信優(yōu)化的二進(jìn)制協(xié)議。如圖所示,呼叫中心工作人員依靠 Windows CardSpace 來(lái)選擇他們在登錄該應用程序時(shí)將要使用的標識。
客戶(hù)還可以通過(guò)網(wǎng)絡(luò )進(jìn)行投保,而保險代理商也可以通過(guò)網(wǎng)絡(luò )提交保單。為便于網(wǎng)絡(luò )操作,該應用程序使用 ASP.NET 與 Web 瀏覽器進(jìn)行通信。如圖表的左下角所示,客戶(hù)通過(guò) Internet Explorer 來(lái)訪(fǎng)問(wèn)該應用程序,他們可以使用普通的 HTML 界面,也可以使用 CardSpace 來(lái)選擇自主設定的標識。第三方也可以為其他客戶(hù)端操作系統和瀏覽器實(shí)現標識選擇機制,使得標識元系統能夠擴展至非 Windows 客戶(hù)端和 Web 瀏覽器。
保險代理商通過(guò) Internet 訪(fǎng)問(wèn)該應用程序時(shí)可能需要具有更多功能的界面。因此,他們應該使用 XBAP 而非簡(jiǎn)單的 HTML 界面。如圖表底部中間位置所示,這些客戶(hù)可以共享呼叫中心所用 WPF 桌面應用程序提供的大部分用戶(hù)界面功能。由于兩者構建在同一基礎之上,因此應用程序開(kāi)發(fā)人員可以在兩種類(lèi)型的客戶(hù)端中重復使用相同的代碼。對于其他類(lèi)型的客戶(hù)端來(lái)說(shuō),代理商可以使用 CardSpace 選擇他們針對該應用程序所設定的標識。
最后,此應用程序有可能需要與其他應用程序之間進(jìn)行互訪(fǎng)。如果批準客戶(hù)時(shí)要求信用審核,則最有可能通過(guò)調用外部服務(wù)實(shí)現?;蛘叽藨贸绦驎?huì )直接收到外部軟件請求,提供這些外部應用程序可以調用的服務(wù)。在這些情況下,如圖表右下角所示,該應用程序依靠 WCF 使用標準 Web 服務(wù)進(jìn)行通信。無(wú)論這些應用程序構建于何種技術(shù)之上,WCF 對 SOAP 的支持都使得這些應用程序之間的交互變得輕而易舉。
該方案說(shuō)明了如何使用 .NET Framework 3.0 中最重要的組件來(lái)構建出色的應用程序。而此處所舉的簡(jiǎn)單示例省略了相當多的選項,因此不能將其視為該系列技術(shù)所有功能的完整說(shuō)明。相反,該示例只是提供一種思路,用于講解如何使用 .NET Framework 3.0 的不同部分來(lái)解決實(shí)際的業(yè)務(wù)問(wèn)題。
返回頁(yè)首了解 .NET Framework 3.0:技術(shù)
更深入地研究 .NET Framework 3.0 的各項構成技術(shù),對于真正了解 .NET Framework 3.0 的功能會(huì )很有幫助。本節分別為 .NET Framework 3.0 的五個(gè)部分提供了一個(gè)簡(jiǎn)明教程。有關(guān)各部分的更詳細介紹,請參閱本文末尾的“更多參考資料”。
.NET Framework 2.0
圖 6
.NET Framework 2.0 是目前 Windows 開(kāi)發(fā)的基礎,同時(shí)也是 .NET Framework 3.0 的基礎。圖 6 介紹了 Framework 的兩個(gè)組成部分:公共語(yǔ)言運行庫 (CLR) 和 .NET Framework 類(lèi)庫。.NET Framework 3.0 的一些組件,包括 WF、WCF 和 WPF,基本上都作為 .NET Framework 類(lèi)庫的擴展而執行。如前文所述,類(lèi)庫的許多部分仍然是開(kāi)發(fā)人員所使用的重要部分,而其他部分則被包含到 .NET Framework 3.0 提供的新技術(shù)中。例如,ASP.NET 仍然是創(chuàng )建瀏覽器可訪(fǎng)問(wèn)的應用程序的基礎,ADO.NET 仍然用來(lái)與存儲數據配合使用。.NET Framework 3.0 開(kāi)發(fā)人員使用 WPF 而非 Windows Forms 來(lái)創(chuàng )建本機 Windows GUI,但與 ASP.NET Web Services、.NET Remoting 或 Enterprise Services 相比,他們通常更喜歡 WCF。盡管存在這些變化,但也應該了解即使在 .NET Framework 3.0 世界中,早期版本的 Framework 仍然是開(kāi)發(fā)人員所使用的核心部分,這一點(diǎn)非常重要。
Windows Workflow Foundation
由工作流驅動(dòng)的、面向流程的設計,是 Windows 軟件重要部分的正確開(kāi)發(fā)方式。WF 的目的是讓開(kāi)發(fā)人員創(chuàng )建并執行這些基于工作流的應用程序。圖 7 顯示 WF 提供的用于進(jìn)行該項工作的組件。
圖 7
如前文所述,每個(gè)工作流都通過(guò)一定數量的活動(dòng)創(chuàng )建。工作流和活動(dòng)都屬于類(lèi),所以?xún)烧呔捎纱a直接創(chuàng )建。WF 也提供了工作流設計器,這是一個(gè)用于構建工作流的 Visual Studio 托管圖形工具。但是創(chuàng )建工作流后,其活動(dòng)就可以從 WF 附帶的基本活動(dòng)程序庫 (BAL) 或其他任何來(lái)源得到。
一旦定義了一個(gè)工作流,最終就會(huì )由 WF 運行時(shí)引擎來(lái)執行。該引擎所依賴(lài)的是一組運行時(shí)服務(wù),用于保持工作流狀態(tài)、跟蹤工作流執行等。運行時(shí)服務(wù)、運行時(shí)引擎和工作流本身,所有這些都包含在某個(gè)主機進(jìn)程中。該進(jìn)程可以是任何 Windows 進(jìn)程,從正在桌面上運行的簡(jiǎn)單的控制臺或 WPF 應用程序,到可擴展的服務(wù)器進(jìn)程。
要了解 WF,需要至少具有一點(diǎn)其組件的知識。以下部分將對各組件進(jìn)行簡(jiǎn)述。
工作流
從本質(zhì)上說(shuō),工作流就是一組活動(dòng)。WF 對兩種樣式的工作流提供內置支持:
可以按定義的順序執行活動(dòng)的順序工作流。類(lèi)似于傳統的流程圖,順序工作流中包含分支、循環(huán)和其他控制結構。但默認情況下,活動(dòng)會(huì )按順序依次執行。
可以實(shí)現傳統有限狀態(tài)機的狀態(tài)機工作流。類(lèi)似于任何的狀態(tài)機,特定時(shí)間所執行的活動(dòng)由當前狀態(tài)和已收到的事件共同決定。
順序選項可用于定義明確的工作流,例如完全基于軟件的進(jìn)程中的工作流。創(chuàng )建并理解這些工作流相對簡(jiǎn)單,而且一開(kāi)始就讓大多數開(kāi)發(fā)人員覺(jué)得非常容易。當執行路徑不太容易預測時(shí),可以選擇狀態(tài)機工作流。一個(gè)典型的例子就是涉及與人進(jìn)行交互的工作流,任何人在任何地方都可以取消該工作流。通過(guò)順序工作流可應對該狀況,但每個(gè)步驟都會(huì )成為一個(gè)分支:若工作流未取消,則應該執行;若已取消,則應該執行其他活動(dòng)。使用狀態(tài)機對這種行為建模會(huì )簡(jiǎn)單許多,因為取消工作流的請求恰恰是另一個(gè)可以在任何時(shí)間接收并處理的事件。
對狀態(tài)機工作流的支持,是 WF 如何嘗試為人和系統工作流提供支持的一個(gè)例子。另一個(gè)相關(guān)的例子是,WF 對更改正在運行的工作流的支持。人的要求千變萬(wàn)化,某個(gè)工作流的相關(guān)人員,在進(jìn)程運行當中添加步驟、刪除步驟或進(jìn)行其他更改的行為并不罕見(jiàn)。為了以受控方式適應這種狀況,WF 允許創(chuàng )建工作流的開(kāi)發(fā)人員在執行工作流時(shí)指明是否要修改以及如何修改。
基本活動(dòng)程序庫
開(kāi)發(fā)人員可以隨意創(chuàng )建自定義活動(dòng)。事實(shí)上,Microsoft 的目標是促進(jìn)滿(mǎn)含可重用活動(dòng)的 WF 生態(tài)系統的開(kāi)發(fā)。而且,從一個(gè)普通的基本活動(dòng)集著(zhù)手會(huì )讓每個(gè)人都覺(jué)得更加容易?;净顒?dòng)程序庫 (BAL) 的作用就是提供這個(gè)普通集。
無(wú)論使用 BAL 中的哪些活動(dòng),工作流都不是必需的。而且,許多開(kāi)發(fā)人員會(huì )發(fā)現 BAL 使他們的工作變得更簡(jiǎn)單,尤其是在開(kāi)始的時(shí)候。BAL 中包含的活動(dòng)如下:
?
IfElse:根據是否滿(mǎn)足某個(gè)條件,執行兩個(gè)或更多可能路徑中包含的活動(dòng)。
?
While:只要某個(gè)條件為真,就反復執行一個(gè)或多個(gè)活動(dòng)。
?
Sequence:以定義的順序,一次執行一組活動(dòng)。
?
Parallel:并行執行兩組或多組活動(dòng)。
?
Code:執行定義的代碼塊。
?
Listen:等待一個(gè)特定事件,收到后再執行一個(gè)或多個(gè)活動(dòng)。
?
InvokeWebService:調用一個(gè) Web 服務(wù)。
?
state:表示工作流狀態(tài)機中的一個(gè)狀態(tài)。
?
EventDriven:定義包含一個(gè)或多個(gè)活動(dòng)的轉換,該轉換需處于特殊狀態(tài),并在收到特定事件后執行。
?
Policy:允許使用 WF 提供的規則引擎定義并執行業(yè)務(wù)規則。
WF 采用了較一般的方式來(lái)使用活動(dòng),而并非為指定的工作流定義特定語(yǔ)言。BAL 提供了一種“語(yǔ)言”,但任何人都可以使用 WF 隨意定義自己的語(yǔ)言。
Windows Workflow Foundation 工具:工作流設計器
使用工作流創(chuàng )建應用程序的一個(gè)優(yōu)勢是可以圖形化地定義工作流。WF 的工作流設計器允許使用該功能,如圖 8 所示。默認情況下,開(kāi)發(fā)人員可將工具框中出現的 BAL 活動(dòng)拖放到該工具的設計界面上,以創(chuàng )建工作流。
圖 8
一些開(kāi)發(fā)人員不喜歡圖形設計器,他們更愿意編寫(xiě)代碼。WF 也允許使用這種方法(并且有時(shí)需要該方法:一般是直接從代碼構建的活動(dòng))。也可以將這兩種方法結合使用,如同時(shí)使用工作流設計器和直接編碼的方法創(chuàng )建工作流。其目的是讓開(kāi)發(fā)人員使用最有效率的方法。并且為實(shí)現更廣泛的工具支持,也可以通過(guò) XAML 語(yǔ)言表達工作流,這也是 WPF 所使用的語(yǔ)言。事實(shí)上,使用工作流設計器創(chuàng )建的工作流默認為是 XAML 定義的。
運行時(shí)引擎和運行時(shí)服務(wù)
如前文所述,WF 運行時(shí)引擎具有執行工作流中的活動(dòng)的職責。作為執行該職責的一個(gè)部分,它依賴(lài)于一組運行時(shí)服務(wù)。WF 包含這些服務(wù)的標準實(shí)現,但是有能力的開(kāi)發(fā)人員可以根據需要更換。這些服務(wù)支持幾種不同的功能,其中有兩種最值得注意:
?
持久性:因等待某個(gè)事件受到阻塞的工作流,可以使用該服務(wù)將其內存狀態(tài)自動(dòng)保存到磁盤(pán)。當事件發(fā)生時(shí),該服務(wù)會(huì )自動(dòng)重新加載工作流的狀態(tài)并重新開(kāi)始執行。這對于涉及到人員的工作流尤其有用,因為等待一個(gè)響應可能需要幾個(gè)小時(shí)、幾天或更長(cháng)時(shí)間。
?
跟蹤:工作流中的活動(dòng)清楚地區分了其實(shí)現進(jìn)程的執行。WF 的跟蹤服務(wù)允許開(kāi)發(fā)人員將工作流的執行信息自動(dòng)寫(xiě)入數據庫中。例如,開(kāi)發(fā)人員希望跟蹤工作流的起始時(shí)間、它的每個(gè)活動(dòng)的起始時(shí)間和其他信息。
Windows Workflow Foundation 和其他 Microsoft 技術(shù)
引入新方法肯定會(huì )影響現有方法。.NET Framework 3.0 中的新技術(shù)也不例外,每項技術(shù)都會(huì )對 Microsoft 的其他技術(shù)產(chǎn)生影響。當使用 WF 時(shí),對 Windows SharePoint Services、Microsoft Office 2007 系統和 BizTalk Server 的初始影響最大。
為了使開(kāi)發(fā)人員更容易地創(chuàng )建文檔合作和其他種類(lèi)信息共享的工作流應用程序,3 版 的 Windows SharePoint Services 托管了 WF 運行時(shí)。Office SharePoint Server 2007 是 Office 2007 系統的組成部分,基于 WF 支持,構建于 Windows SharePoint Services 中。此外,添加該服務(wù)器后,就可以直接在 Office 2007 客戶(hù)端應用程序中顯示 InfoPath 窗體,而且可以在一些普通方案(如批準一個(gè)文檔)中使用一組預定義的工作流。
任何熟悉 BizTalk Server 的人現在一定已經(jīng)注意到了該產(chǎn)品的編排功能和 WF 提供功能之間的相似性。事實(shí)上,BizTalk Server 2006 發(fā)布后,將通過(guò) WF 替換該產(chǎn)品現有的編排功能,并提供可幫助將現有編排服務(wù)遷移到 WF 工作流的工具。但有一點(diǎn)很重要,即應了解 WF 和 BizTalk Server 2006 解決的問(wèn)題是截然不同的:
?
WF 提供了一個(gè)通用框架,用于創(chuàng )建基于工作流的 Windows 應用程序。它可以被托管在任何進(jìn)程中,使用任何種類(lèi)的活動(dòng),并解決任何種類(lèi)的業(yè)務(wù)問(wèn)題,其中包括人員和系統工作流。
?
BizTalk Server 是面向企業(yè)應用程序集成、企業(yè)對企業(yè)集成和管理業(yè)務(wù)流程的許可產(chǎn)品。它提供了大量用于連接不同系統和軟件的適配器、用于實(shí)現諸如 RosettaNet 和 SWIFT 等標準的加速器以及對企業(yè)活動(dòng)監控的支持。BizTalk Server 還提供了管理基礎結構和工具,以及對增長(cháng)的可擴展性的支持。
因為它是 Windows 標準的工作流技術(shù),因此 WF 以后很可能會(huì )出現在其他 Microsoft 產(chǎn)品和技術(shù)中。無(wú)論 Microsoft 做出什么樣的選擇,在客戶(hù)創(chuàng )建的大量應用程序中都肯定會(huì )出現 WF 的身影。
Windows Communication Foundation
面向服務(wù)的通信的變化,標志著(zhù)在應用程序交互方式上的進(jìn)步。WCF 專(zhuān)為支持面向服務(wù)的應用程序而設計,正好體現了這種進(jìn)步。本節將介紹 WCF 最重要的方面,包括服務(wù)和客戶(hù)端、通信選項以及對安全性、可靠通信和事務(wù)的支持。
服務(wù)和客戶(hù)端
圖 9
如圖 9 所示,WCF 的基本思路很簡(jiǎn)單:服務(wù)提供了客戶(hù)端可訪(fǎng)問(wèn)的接口。該接口可通過(guò) Web 服務(wù)描述語(yǔ)言 (WSDL) 來(lái)定義,然后轉成代碼,也可以通過(guò) C# 或 Visual Basic 等語(yǔ)言直接定義。對于一個(gè)提供保險應用程序服務(wù)的簡(jiǎn)單接口而言,若使用后一種方法,則代碼如下所示:
[ServiceContract]interface IInsuranceApplication{[OperationContract]int Submit(int policyType, string ApplicantName);[OperationContract]bool CheckStatus(int applicationNumber);[OperationContract]bool Cancel(int applicationNumber);}
C# 接口的定義用 ServiceContract 屬性來(lái)標記。該屬性表示 WCF 可在該接口中提供進(jìn)行遠程調用操作的方法。所提供的接口方法都標有 OperationContract 屬性。在上述簡(jiǎn)單示例中,每個(gè)方法都標有該屬性,因此都可以提供給遠程調用者。但這并不是必需的,僅為接口的某些方法應用 OperationContract 是合法的。無(wú)論進(jìn)行哪種選擇,應用程序中必須有一個(gè)類(lèi)實(shí)現該接口,從而為接口定義的方法提供實(shí)際代碼。一旦完成,WCF 會(huì )自動(dòng)將方法標記為 OperationContract,表示該服務(wù)的客戶(hù)端可對其進(jìn)行訪(fǎng)問(wèn)。
關(guān)于服務(wù)如何被實(shí)際提供給其客戶(hù)端,圖 10 給出了比較詳細的介紹??蛻?hù)端不直接訪(fǎng)問(wèn)接口,而是連接到特定的端點(diǎn)。服務(wù)可以提供多個(gè)端點(diǎn),從而允許不同的客戶(hù)端以不同方式進(jìn)行訪(fǎng)問(wèn)。
圖 10
如圖所示,每個(gè)端點(diǎn)都具有以下三個(gè)屬性:
?
合約,說(shuō)明使用該端點(diǎn)可以調用的操作。該合約只需使用定義這些操作的接口名即可識別,此處是 IInsuranceApplication。
?
綁定,定義如何調用端點(diǎn)的操作。每個(gè)綁定都可定義數個(gè)方面,包括使用什么協(xié)議來(lái)調用操作、使用哪類(lèi)安全性等。WCF 中包含許多預定義綁定,如此處顯示的 BasicHttpBinding,這是最常見(jiàn)的例子,用戶(hù)也可以定義自定義綁定。單個(gè)服務(wù)可以提供多個(gè)端點(diǎn),所以可通過(guò)不同協(xié)議、使用不同安全性選項,同時(shí)訪(fǎng)問(wèn)不同種類(lèi)的客戶(hù)端。
?
地址,表示端點(diǎn)的位置。如圖所示,位置是以 URL 表示的。
WCF 的基礎很簡(jiǎn)單。與大多數通信技術(shù)一樣,細節可以很復雜,因為具有許多選項,但是創(chuàng )建一般的 WCF 應用程序并不難。
通信選項
由不同類(lèi)型的開(kāi)發(fā)人員構建的不同種類(lèi)的應用程序,需要以不同的方式進(jìn)行通信。對大多數開(kāi)發(fā)人員而言,最簡(jiǎn)單的方式是遠程過(guò)程調用 (RPC),它可以使客戶(hù)端可以像調用本地操作那樣調用遠程操作。例如,假設是上文所示的接口,客戶(hù)端可通過(guò)一般同步的方式調用任何操作,并耐心等待返回響應。該選項對開(kāi)發(fā)人員而言很容易,在某些情況下是正確的選擇。
但是,WCF 還提供了其他幾個(gè)選項。如下所示:
?
調用沒(méi)有響應的操作。該類(lèi)通信標有屬性 OneWay,對于發(fā)送事件或其他單向交互很有用。
?
基于消息的異步通信,直接發(fā)送和接收 XML 消息。
?
顯式處理 SOAP 消息,包括直接在 SOAP 標頭中插入元素。
WCF 還允許開(kāi)發(fā)人員控制服務(wù)進(jìn)行的各種本地形式。例如,使用 ServiceBehavior 屬性,可用來(lái)設置服務(wù)是單線(xiàn)程還是多線(xiàn)程的、是否為每次調用創(chuàng )建新的服務(wù)實(shí)例以及其他選項。
安全性、可靠性和事務(wù)
基本通信,即系統間的數據移動(dòng)功能,它非常有用,但卻遠遠不夠。大多數應用程序還需要其他功能。例如,大多數分布式應用程序需要某種安全性。從今天使用的不同方法和技術(shù)多樣性看來(lái),安全性的提供可能非常復雜。為了使開(kāi)發(fā)人員在不必了解所有細節的情況下創(chuàng )建安全的分布式應用程序,WCF 主要依賴(lài)于安全性綁定。例如,上文所示的 BasicHttpBinding 可以配置為使用 HTTPS 而不是普通的 HTTP,其他綁定則提供了更多的安全性選項。例如,WsHttpBinding 支持 WS-Security,允許基于 SOAP 的交互驗證、數據完整性和數據機密性。開(kāi)發(fā)人員還可以創(chuàng )建自定義綁定,以提供其應用程序所需的相同的安全性服務(wù)。
對于許多應用程序而言,確保通信的可靠性也非常重要。傳統的 Web 服務(wù)方法,即通過(guò) HTTP 發(fā)送 SOAP,在某些情況下完全可以勝任,當使用 BasicHttpBinding 時(shí)會(huì )用到該方法。但在大多數情況下,這種廣泛使用的方法顯得力不從心。例如,經(jīng)由一個(gè)或多個(gè) SOAP 中間方傳輸的消息不能靠這種簡(jiǎn)單的方法實(shí)現端對端的可靠性。這些情況下,WCF 將執行 WS-ReliableMessaging。開(kāi)發(fā)人員可以選擇一個(gè)支持該選項的綁定,如 WsHttpBinding,從而傳輸交互可靠的消息。
在某些應用程序中,分布式事務(wù)也很重要。WCF 構建于 System.Transactions 之上,是 .NET Framework 2.0 的組成部分,允許創(chuàng )建事務(wù)性軟件。方法可以使用 OperationBehavior 屬性指示其所需事務(wù)并定義該事務(wù)的進(jìn)行方式。WCF 依賴(lài)于 WS-AtomicTransaction 規范,允許分布式事務(wù)跨供應商邊界進(jìn)行交互。使用該多供應商協(xié)議定義的技術(shù),WCF 應用程序可以參與涉及多項技術(shù)(包括 J2EE 及其他)的事務(wù)。
Windows Communication Foundation 和其他 Microsoft 技術(shù)
如前文所述,WCF 取代了一些用于創(chuàng )建分布式應用程序的早期 Microsoft 技術(shù)。大多數使用 ASP.NET Web Services、.NET Remoting、Enterprise Services、System.Messaging 或 WSE 構建的應用程序,將轉而通過(guò) WCF 進(jìn)行構建。WCF 應用程序可以與 ASP.NET Web Services 應用程序交互,兩者都支持標準 SOAP,也可與其他構建在 Enterprise Services、MSMQ 和 3.0 版的 WSE 上的應用程序交互。BizTalk Server 2006 也可以使用 WCF,而且未來(lái)版本的 BizTalk Server 會(huì )更直接地構建在 WCF 提供的架構上。
有一點(diǎn)非常重要,即使新的 .NET Framework 3.0 應用程序不常使用 WCF,但其取代的所有技術(shù)仍是該版 Framework 的組成部分,而且仍被照常支持。使用這些技術(shù)的早期版本構建的應用程序,還會(huì )繼續正常運行;安裝和使用 .NET Framework 3.0 不會(huì )破壞現有代碼。
Windows CardSpace
無(wú)論是通過(guò) Web 瀏覽器還是其他種類(lèi)的客戶(hù)端,用戶(hù)通常會(huì )跨網(wǎng)絡(luò )訪(fǎng)問(wèn)應用程序。這些應用程序通常需要用戶(hù)以某種方式標識自己,因此結果肯定是人們必須定期獲取并提供遠程軟件的標識信息。通過(guò)瀏覽器訪(fǎng)問(wèn) Internet 應用程序,就是一個(gè)很常見(jiàn)的示例,內聯(lián)網(wǎng)上的用戶(hù)通常也會(huì )面臨該問(wèn)題。
如前文所述,現在多數人經(jīng)常依賴(lài)用戶(hù)名和密碼進(jìn)行數字識別,由此產(chǎn)生了諸多問(wèn)題。Windows CardSpace 作為較大的標識元系統的組成部分,提供了解決這些問(wèn)題的可選方法。若要更深入地了解 CardSpace 是如何實(shí)現的,應從了解標識元系統的基本概念入手。
Windows CardSpace 和標識元系統
當用戶(hù)訪(fǎng)問(wèn)應用程序時(shí),無(wú)論所使用的是 Web 瀏覽器還是應用程序特定的客戶(hù)端,或者其他形式,一般都會(huì )提供某種數字標識。數字標識各種各樣,但實(shí)際上都可由網(wǎng)路上的一個(gè)安全令牌表示。簡(jiǎn)單的安全令牌可能只是一個(gè)用戶(hù)名,復雜的令牌則可能包含一個(gè) X.509 證書(shū)或一個(gè) XML 文檔。無(wú)論通過(guò)何種方式,安全令牌都是目前網(wǎng)絡(luò )上表示數字標識的典型機制。
我們可以美好地憧憬,總有一天所有人都會(huì )采用相同的安全令牌格式,但實(shí)際上各種方式仍將繼續使用?,F在我們會(huì )在錢(qián)包中攜帶各種標識卡,如駕駛執照、信用卡、航空公司常飛旅客積分卡等,與此類(lèi)似,我們會(huì )始終使用由各種安全令牌表示的數字標識。沒(méi)有單個(gè)標識系統可以提供通用的方案,所以多個(gè)安全令牌將始終是必需的。
然而,用戶(hù)仍需要某種方式來(lái)一致地處理不同的數字標識。即使沒(méi)有單個(gè)標識系統可以勝任,也可以創(chuàng )建一個(gè)標識系統的子系統,即標識元系統,從而以一致的方式使用各種數字標識。Microsoft 與其他公司通力協(xié)作,引領(lǐng)著(zhù)定義該元系統的進(jìn)程。該元系統基于開(kāi)放的 Web 服務(wù)技術(shù),如 WS-Security 和 WS-Trust 等,可定義數字標識的獲取與使用方式,而無(wú)需考慮其所依賴(lài)的安全令牌類(lèi)型。
發(fā)行、獲取和使用數字標識的過(guò)程可以視作是獲取三個(gè)不同角色的過(guò)程。這些角色如下:
?
用戶(hù):有時(shí)稱(chēng)為主體,用戶(hù)是具有數字標識的實(shí)體。
?
標識提供者:標識提供者可以為用戶(hù)提供數字標識。例如,對雇主分配給您的數字標識而言,標識提供者一般是諸如 Active Directory 的系統。對于您使用的 Amazon 數字標識而言,標識提供者將只對您有效,因為您可以定義自己的用戶(hù)名和密碼。不同標識提供者所創(chuàng )建的數字標識可以包含不同的信息,并提供不同的用戶(hù)真實(shí)身份保證級別。
?
依賴(lài)方:依賴(lài)方是一個(gè)應用程序,以某種方式依賴(lài)于數字標識。依賴(lài)方將頻繁使用標識(即該標識安全令牌中包含的信息)來(lái)驗證用戶(hù),然后作出授權決定,如批準該用戶(hù)訪(fǎng)問(wèn)某信息等。依賴(lài)方也會(huì )使用該標識獲得信用卡號,來(lái)驗證不同時(shí)間或出于不同目的而進(jìn)行訪(fǎng)問(wèn)的同一用戶(hù)。依賴(lài)方的典型示例包括 Internet 網(wǎng)站,如銀行、網(wǎng)上商店和拍賣(mài)站點(diǎn),以及其他通過(guò) Web 服務(wù)接受請求的所有應用程序。
這三種實(shí)體在標識元系統中進(jìn)行交互。圖 11 說(shuō)明了這種交互作用,以及 CardSpace 的適當位置。
圖 11
用戶(hù)通過(guò) CardSpace 識別應用程序訪(fǎng)問(wèn)依賴(lài)方時(shí),這一過(guò)程就會(huì )開(kāi)始。要了解此依賴(lài)方將請求哪種類(lèi)型的安全令牌,應用程序必須取得依賴(lài)方的策略(步驟 1)。以用于訪(fǎng)問(wèn)網(wǎng)站的瀏覽器為例(這可能是最常見(jiàn)的情況),站點(diǎn)策略的表達方式為 HTML,并作為網(wǎng)頁(yè)的一部分發(fā)送回來(lái)。但是,對于通過(guò) Web 服務(wù)訪(fǎng)問(wèn)的應用程序來(lái)說(shuō),應用程序將改為使用由 WS-MetadataExchange 定義的行業(yè)標準協(xié)議來(lái)向依賴(lài)方請求獲取其策略。在這種情況下,該策略使用另一種行業(yè)標準 WS-SecurityPolicy 來(lái)表示。無(wú)論以何種方式獲得策略信息,都會(huì )始終指明該依賴(lài)方將會(huì )接受的安全令牌類(lèi)型,以及這些令牌中所必須包含的信息。
一旦 CardSpace 了解到依賴(lài)方需要的安全令牌類(lèi)型后,會(huì )顯示之前所示的標識屏幕。對該用戶(hù)可用的每個(gè)數字標識在此屏幕上表示為一個(gè)信息卡。由外部依賴(lài)方發(fā)行的卡稱(chēng)之為受管卡,而由 CardSpace 自發(fā)行提供程序發(fā)行的卡稱(chēng)之為自發(fā)行卡。兩種卡都在此屏幕上顯示,用戶(hù)可以任選其一。為了更加方便做出選擇,屏幕會(huì )將所有不符合要求的信息卡顯示為灰色,從而指示出能夠滿(mǎn)足依賴(lài)方要求的標識。然后,用戶(hù)就可以從中任意選擇一個(gè)作為要使用的數字標識(步驟 2)。
但是,卡中并不包含實(shí)際的安全令牌。相反,它含有的是用于查找特定標識提供者以及為該用戶(hù)請求安全令牌所必需的信息。(實(shí)際上,所有信息卡最初都是由某些標識提供者創(chuàng )建的。)CardSpace 以用戶(hù)所選信息卡中包含的內容向發(fā)行此卡的標識提供者請求安全令牌(步驟 3)。該請求是使用另一種行業(yè)標準協(xié)議 WS-Trust 發(fā)出的,并且用戶(hù)使用 Kerberos(X.509 證書(shū)和數字簽名)或另外一種機制來(lái)向標識提供者進(jìn)行自我身份驗證。令牌以加密形式返回,其中還包含了一個(gè)時(shí)間戳,以防止令牌被盜并于日后重新使用。
請求的安全令牌返回后會(huì )發(fā)送到依賴(lài)方(步驟 4)。依賴(lài)方使用令牌信息的方式有所不同。例如,如果令牌中包含一個(gè) X.509 證書(shū),并附帶數字簽名,則依賴(lài)方將有可能使用令牌來(lái)驗證用戶(hù)。但是,使用令牌驗證或進(jìn)行其他任何安全相關(guān)目的操作時(shí)沒(méi)有任何要求。(實(shí)際上,術(shù)語(yǔ)“安全令牌”本身就是用詞不當。)令牌中可以含有如用戶(hù)年齡證明、購物網(wǎng)站享受優(yōu)惠資格以及其他信息。身份驗證是安全令牌一種重要但非唯一的使用目的。
需要十分注意的是,作為整體來(lái)講,無(wú)論是 CardSpace 還是標識元系統都不了解用于安全令牌的格式或技術(shù)。元系統的目標是提供一致的方法來(lái)使用基于任何類(lèi)型安全令牌的所有數字標識,而不僅僅是嘗試為數字標識創(chuàng )建新的單一源或為安全令牌創(chuàng )建標準格式。通過(guò)提供元系統關(guān)鍵部分的 Windows 實(shí)現,CardSpace 在實(shí)現數字標識的常規方法過(guò)程中扮演著(zhù)一個(gè)很重要的角色。
防止網(wǎng)頁(yè)仿冒
標識提供者通常與用戶(hù)不同,例如在標識由雇主分配時(shí)。但是在很多情況下,標識提供者即為用戶(hù)自身。例如,如果沒(méi)有使用 CardSpace,則訪(fǎng)問(wèn)許多網(wǎng)站都需要提供用戶(hù)名和密碼,而這兩者都是由用戶(hù)定義的。一旦用戶(hù)創(chuàng )建標識之后,他們就可以將其用于提供用名和密碼,然后可以查詢(xún)銀行余額、購買(mǎi)書(shū)籍或進(jìn)行站點(diǎn)允許的其他任何操作。
但是如上所述,由于他們仍然依賴(lài)密碼,所以這種自發(fā)行標識容易成為攻擊者的目標,。為幫助減少此類(lèi)攻擊,CardSpace 提供了另外一種創(chuàng )建自發(fā)行標識的方法。該自發(fā)行標識提供者在用戶(hù)的 Windows 系統上本地運行。自發(fā)行標識提供者創(chuàng )建的安全令牌不是依賴(lài)于用戶(hù)名和密碼,而是使用安全聲明標記語(yǔ)言(SAML,一種 OASIS 定義的標準)進(jìn)行定義。這些令牌依靠公鑰技術(shù)而不是依靠密碼來(lái)驗證用戶(hù)標識。如果依賴(lài)方接受他們,則他們就可以起到與傳統用戶(hù)名和密碼相同的作用。好處是將不再存在網(wǎng)頁(yè)仿冒者可以盜取的密碼。減少密碼的使用,再有如上所述高度保險認證提供更嚴格的網(wǎng)站標識證明,能夠大幅降低網(wǎng)頁(yè)仿冒所造成的危害。
Windows CardSpace 和其他 Microsoft 技術(shù)
CardSpace 涉及到數項其他 Microsoft 技術(shù),其中包括:
?
WCF:由于依賴(lài) Web 服務(wù)標準,例如 WS-Security 和 WS-Trust,因此 CardSpace 使用 WCF 進(jìn)行通信。實(shí)際上,WCF 應用程序的創(chuàng )建者只需指定一個(gè)特別綁定,就可以讓該應用程序使用 CardSpace。
?
Active Directory:雖然現在還無(wú)法實(shí)現,但 Active Directory 終將成為元系統中的一個(gè)標識提供者。
?
Windows Live ID(以前稱(chēng)為 Passport):正如 Active Directory 一樣,Microsoft 業(yè)已宣布會(huì )將 Live ID 驗證系統修改為一款標識提供者。請注意,不能使用 CardSpace 來(lái)代替 Live ID,因為這兩者用于解決完全不同的問(wèn)題。相反,正如其他任何標識提供者一樣,Live ID 將成為標識元系統的一部分。
Microsoft 還提供其他標識相關(guān)技術(shù),用以解決與 CardSpace 不同的問(wèn)題。例如,Active Directory Federation Services (ADFS) 主要關(guān)注于組織之間的聯(lián)合標識。這是一項重大的挑戰,許多需要與其他組織合作的公司都面臨著(zhù)這一挑戰。但是,此問(wèn)題與 CardSpace 和標識元系統所解決的更廣泛的問(wèn)題完全不同。
Windows Presentation Foundation
基于工作流的邏輯、面向服務(wù)的通信和標識都是現代應用程序中的重要組成部分。但是,用戶(hù)通常最關(guān)注的是他們所看到的:用戶(hù)界面。WPF 的目的是為了解決現代應用程序中創(chuàng )建用戶(hù)界面所遇到的挑戰。WPF 提供了一系列相應功能來(lái)滿(mǎn)足這些需求,如下所述。
Windows Presentation Foundation 功能
開(kāi)發(fā)人員完全可以使用 C#、Visual Basic 或一些其他基于 CLR 的語(yǔ)言來(lái)自由構建 WPF 應用程序界面。但是,如前文所述,WPF 也允許使用基于 XML 的 XAML 來(lái)指定界面。XAML 中的元素和屬性可直接映射到 WPF 提供的類(lèi)和屬性。例如,在下面的簡(jiǎn)單示例即使用 XAML 來(lái)定義按鈕:
<Button Background="Red">No</Button>
該示例創(chuàng )建了一個(gè)包含文本“No”的紅色按鈕。使用如下代碼也可以達到完全相同的效果:
Button btn = new Button();btn.Background = Brushes.Red;btn.Content = "No";
無(wú)論如何定義,實(shí)際上所有 WPF 應用程序都遵循相同的基本模型。應用程序可繼承 WPF 的標準應用程序對象,以提供基本方法、事件和屬性。WPF 應用程序既可以擁有傳統的對話(huà)框驅動(dòng)界面,也可以擁有導航式界面,其功能更類(lèi)似于一個(gè)瀏覽器應用程序。以后者樣式構建的應用程序通常作為一組頁(yè)面實(shí)現,每個(gè)頁(yè)面中包含以 XAML 定義的用戶(hù)界面和以代碼定義的某些邏輯關(guān)系。為了將這些頁(yè)面鏈接在一起,XAML 還提供了一個(gè)與 HTML 十分類(lèi)似的超鏈接元素。應用程序每次顯示一個(gè)頁(yè)面,可使用戶(hù)在這些頁(yè)面之間前進(jìn)或后退、維護歷史記錄列表以及其他功能等。盡管不需要,導航應用程序還是可以作為 XBAP 在 Web 瀏覽器內運行;開(kāi)發(fā)人員也可以在安裝版 WPF 應用程序中自由使用該界面樣式。其目的是構建出融合瀏覽器界面與本地 Windows 界面最佳特點(diǎn)的軟件。
無(wú)論其界面使用哪種樣式,WPF 應用程序都可以通過(guò)面板進(jìn)行基本布局。每個(gè)面板通常包含多個(gè)控件,這些由 WPF 提供的控件包括按鈕、文本框、組合框、菜單以及其他對象。這些控件如何放置取決于所選擇的面板類(lèi)型。例如,Grid 允許將控件放在指定的網(wǎng)格上,而 Canvas 則允許開(kāi)發(fā)人員將控件放在其界限范圍內的任何位置。在 GUI 中,通常用戶(hù)生成的事件由應用程序中的不同控件和其他類(lèi)進(jìn)行捕獲和處理。還可以將樣式和模板應用到控件組,這樣就可以非常容易使應用程序具有一致的外觀(guān)。
WPF 的支持范圍遠遠超出了上述的基本用戶(hù)界面功能,還包括:
?
文檔:WPF 應用程序可以使用 XAML 的 FixedDocument 標記來(lái)顯示 XPS 文檔。也可以使用 FlowDocument 標記來(lái)顯示流文檔。流文檔與傳統的屏幕文檔類(lèi)似,能夠讓用戶(hù)滾動(dòng)瀏覽其內容。另外,開(kāi)發(fā)人員通過(guò)設置此標記的不同屬性,可以使文檔更適應其環(huán)境。例如,文檔可以每次顯示一頁(yè),這樣讀者就不必上下滾動(dòng)頁(yè)面了。WPF 還能夠根據顯示文檔的窗口大小來(lái)自動(dòng)確定應該把文檔拆分成多少列。其目的是盡量提高屏幕上文檔的可讀性。
?
圖形:WPF 還支持創(chuàng )建二維和三維矢量圖形。對于二維作業(yè),WPF 可提供標準抽象,例如形狀、畫(huà)筆和繪圖筆,同時(shí)還允許三維圖形定義模型,以用于指定光線(xiàn)和攝像機位置信息。與早期技術(shù)(例如 Windows Forms 需要依賴(lài)于 GDI+ 才能繪制圖形)不同的是,WPF 圖形并不是使用開(kāi)發(fā)人員所必須了解的單獨一組概念來(lái)進(jìn)行分區的。相反,用于圖形的 XAML 元素能夠與那些用戶(hù)界面其他方面的元素自然組合。按鈕可帶有圖形內容,文本和圖形可以組合,以及其他更多功能。
?
圖像:使用 XAML 的圖像標記,WPF 應用程序可以顯示不同格式的圖形,包括 JPEG、GIF 以及其他格式。WPF 依靠 Windows Imaging Component (WIC) 為編解碼器以及顯示和存儲圖像的軟件提供標準框架。在 WPF 中,通常圖像元素可以與其他元素組合,能夠讓按鈕顯示圖像而不是簡(jiǎn)單的文本標簽。
?
媒體:WPF 應用程序可以使用 MediaElement 標記來(lái)顯示不同格式的視頻和音頻,包括 WMV、AVI 和 MPEG。同樣,此元素也可與其他 XAML 元素相組合,例如使三維立方體的所有側面上都顯示視頻。
?
動(dòng)畫(huà):WPF 提供動(dòng)態(tài)顯示絕大部分用戶(hù)界面的內置支持。例如,放大和縮小圓圈、順利地更改按鈕大小。應用程序還可以定義包含時(shí)間線(xiàn)的情節提要,允許調整動(dòng)畫(huà)的發(fā)生順序。
?
數據綁定:由于許多 WPF 應用程序都需要顯示數據,因此提供將數據映射到用戶(hù)界面元素的自動(dòng)支持功能是很有幫助的。WPF 可為包含在對象和其他源中的信息提供此類(lèi)數據綁定。WPF 數據綁定還允許在顯示數據前對其進(jìn)行排序和篩選。
Windows Presentation Foundation 的應用
WPF 提供大量的用戶(hù)界面功能,使開(kāi)發(fā)人員和設計人員可以創(chuàng )建出非常吸引人的用戶(hù)界面。但是無(wú)論客戶(hù)端應用程序看起來(lái)有多漂亮,如果存在部署問(wèn)題的話(huà),可能會(huì )使某些組織拒絕使用。如果推出的新版本客戶(hù)端涉及到安裝此應用程序的每臺桌面電腦,則會(huì )導致高額的升級成本?,F在,避免此問(wèn)題的一個(gè)常用方法是創(chuàng )建基于瀏覽器的客戶(hù)端,而不是本地 Windows 客戶(hù)端。然而與瀏覽器相比,本地 Windows 客戶(hù)端通常擁有更好、響應更及時(shí)的用戶(hù)界面。為解決部署這些客戶(hù)端時(shí)所面臨的難題,就需要使用 ClickOnce 技術(shù)準備好安裝版 WPF 應用程序。ClickOnce 技術(shù)第一次應用于 .NET Framework 2.0,可使 Internet Explorer 用戶(hù)通過(guò) Web 選擇應用程序,然后將其自動(dòng)安裝在本地計算機上。安裝之后,應用程序還能夠在出現可用的新版本時(shí)進(jìn)行自動(dòng)更新。目的是將 Web 客戶(hù)端的簡(jiǎn)單性和低成本部署與安裝版 WPF 應用程序強大功能結合起來(lái)。
尤其是在使用 ClickOnce 進(jìn)行部署時(shí),安裝版 WPF 應用程序在許多情況下都是很好的客戶(hù)端選擇。但即使其用戶(hù)可以從 WPF 界面中獲益,也存在不適用此類(lèi)應用程序的情況。例如,回想一下上述的遠程保險代理商,或者希望提供三維圖形、視頻以及其他 WPF 現代功能的網(wǎng)上商店。奢望此類(lèi)應用程序用戶(hù)通過(guò)安裝本地 WPF 應用程序來(lái)訪(fǎng)問(wèn)網(wǎng)站通常是不切合實(shí)際的。更佳的解決方案是在用戶(hù)的 Web 瀏覽器內提供 WPF 樣式的界面。
XAML 瀏覽器應用程序 XBAP 即是針對這一問(wèn)題而專(zhuān)門(mén)設計的。Internet Explorer 用戶(hù)可以將 XBAP 直接下載到瀏覽器,而不必部署安裝版 WPF 應用程序。此應用程序在 Internet Explorer 內運行,可以提供基于 WPF 的用戶(hù)界面。但是從 Internet 網(wǎng)站下載和運行代碼是一項危險的操作。為保護用戶(hù)免遭惡意開(kāi)發(fā)者的攻擊,所有從 Internet 下載的 XBAP 都在部分信任沙箱中運行?;?.NET Framework 提供的代碼訪(fǎng)問(wèn)安全性,該沙箱會(huì )限制 XBAP 的操作。例如,從 Internet 下載的 XBAP 不能創(chuàng )建獨立窗口或啟動(dòng)新窗口,不能顯示由 XBAP 本身啟動(dòng)的保存對話(huà)框或訪(fǎng)問(wèn)隔離存儲區以外的文件系統。盡管沙箱規定了種種限制,XBAP 仍然可以使用大部分的 WPF 功能,包括二維和三維圖形、動(dòng)畫(huà)、屏幕文檔、圖像、視頻等。
如前文所述,WPF 可使用 XAML 的 FlowDocument 元素讓?xiě)贸绦蝻@示適合的文檔。顯然,基于顯示方式而更改文檔外觀(guān)并不總是最好的解決方案。有時(shí),固定格式文檔(在屏幕上和打印出來(lái)的效果始終相同)會(huì )是更好的選擇。WPF 的 XPS 文檔可解決這一問(wèn)題。使用 XAML 子集予以定義之后,可以在安裝了 XPS 閱讀器的任何系統上閱讀 XPS 文檔。此外還提供了一種新的 Windows 打印格式,能夠以更高的保真度來(lái)打印復雜圖形。為了更加一致地與不同類(lèi)型的文檔配合使用,XPS 文檔和 Office 2007 文檔都使用了 Microsoft 的“開(kāi)放打包約定”,其中定義了存儲文檔內容、數字簽名文檔以及其他操作的常用方法。
Windows Presentation Foundation 工具
使用基本的文本編輯器就可以直接以代碼和/或 WPF 來(lái)創(chuàng )建任何的 WPF 用戶(hù)界面。但大多數人還是傾向于使用更好的工具,因此 Microsoft 提供了 Visual Studio 2005 的擴展,開(kāi)發(fā)人員可以基于此來(lái)構建 WPF 應用程序。Visual Studio 的下一個(gè)版本(代號為“Orcas”)仍將為 Windows Presentation Foundation 提供更多的可視化設計器功能。使用該工具,開(kāi)發(fā)人員能夠以圖形方式創(chuàng )建他們所希望的用戶(hù)界面,然后用工具生成此界面的代碼。
但是一般來(lái)講,開(kāi)發(fā)人員不是定義用戶(hù)界面的最佳人選。設計人員通常更擅長(cháng)此類(lèi)工作,因為他們的工作就是與人交流。問(wèn)題在于絕大多數設計人員并不編寫(xiě)代碼,因而 Windows Presentation Foundation 可視化設計器(位于 Visual Studio 內)不是適用于該團隊的有效工具。為了保證設計人員在 WPF 環(huán)境下的高效工作,Microsoft 推出了 Expression Interactive Designer。設計人員可以使用該工具來(lái)執行定義界面感觀(guān)、指定動(dòng)畫(huà)等操作,然后將所創(chuàng )建內容生成 XAML 版本。開(kāi)發(fā)人員將此 XAML 版本導入 Visual Studio 之后,就可以為事件處理等內容添加代碼。由于 Visual Studio 和 Expression Interactive Designer 使用相同的生成系統,因此開(kāi)發(fā)人員和設計人員可以使用其各自熟悉的工具反復處理一個(gè)項目。其目的是幫助來(lái)自設計與軟件工程這兩個(gè)不同學(xué)科的人員高效地協(xié)同工作。
Windows Presentation Foundation 和其他 Microsoft 技術(shù)
與其他 .NET Framework 3.0 組件一樣,WPF 對現有 Microsoft 技術(shù)也有所影響。其中受到影響最大的有:
?
Windows Forms:.NET Framework 最初用于創(chuàng )建 GUI 的方法,現在許多應用程序中都用到 Windows Forms??紤]到這一點(diǎn),WPF 應用程序中允許托管 Windows Forms 控件,同時(shí)允許在 Windows Forms 應用程序中托管 WPF 控件。例如,Windows Forms 應用程序中可以托管能夠提供三維數據可視化的 WPF 控件。雖然有一些限制,但是肯定可以同時(shí)使用這兩種技術(shù)來(lái)構建應用程序。另請注意,現有 Windows Forms 應用程序仍可在 .NET Framework 3.0 環(huán)境中正常工作。
?
Win32 和 Microsoft 基礎類(lèi) (MFC):與 Windows Forms 一樣,可以在使用這些現有技術(shù)構建的現有 Win32 和 MFC 應用程序中托管 WPF 控件,反之亦然。但是其互操作性與 Windows Forms 相比有些復雜,原因是與 Windows Forms 的不同之處在于,基于 Win32 和基于 MFC 的應用程序并不是構建在 CLR 之上。因此,與 WPF 之間的互操作性還要求基于 CLR 的代碼與本地 Win32 代碼之間建立映射。
?
Direct3D:是 API DirectX 系列的組成部分,其作用是使應用程序創(chuàng )建和顯示三維圖形。隨著(zhù) .NET Framework 3.0 的面世,主流 Windows 應用程序都可以使用 WPF 中的三維功能,而不只局限于 Direct3D 提供的更專(zhuān)業(yè)方法。但一些需要較高性能的應用程序(例如三維游戲)仍將繼續使用 Direct3D。實(shí)際上在后臺,WPF 仍依靠 Direct3D 來(lái)完成所有的圖形渲染工作。
?
Windows Communication Foundation:如上所述,WPF 應用程序可以使用 WCF。但是,XBAP 通常無(wú)法使用 WCF,因為 WCF 需要完全信任才可正常運行。從 Internet 下載的每個(gè) XBAP 都在部分信任沙箱中運行,這就禁止了 XBAP 訪(fǎng)問(wèn) WCF。但是,XBAP 能夠使用 ASP.NET Web 服務(wù)來(lái)調用可與 WCF 和其他 Web 服務(wù)實(shí)現交互的 SOAP。
?
“WPF/E”:WPF 值得一提的另一個(gè)方面,盡管沒(méi)有包含在 .NET Framework 3.0 之內。其代號為“WPF/E”,目的是在本身不支持 WPF 的系統中提供 WPF 樣式界面支持。顧名思義,“E”表示該技術(shù)可用于任何地方,包括 Macintosh、小型設備以及其他系統。WPF/E 計劃于推出 WPF 之后的某個(gè)時(shí)間發(fā)布,將提供全部 WPF 功能的一個(gè)子集,其中包括二維圖形、動(dòng)畫(huà)和視頻。
返回頁(yè)首獲取 .NET Framework 3.0:不同選項
對于要使用 .NET Framework 3.0 的應用程序,必須將此版本的 Framework 安裝在運行該應用程序的計算機上。這對于 Windows Vista 來(lái)說(shuō)是非常簡(jiǎn)單的:會(huì )在默認情況下安裝 .NET Framework 3.0。也就是說(shuō),安裝了 Windows Vista 的新計算機或升級到 Vista 的現有計算機都會(huì )自動(dòng)安裝 .NET Framework 3.0 應用程序。另外,.NET Framework 3.0 也可以在 Windows XP 和 Windows Server 2003 上運行。為使這兩個(gè)系統的現有用戶(hù)能夠用到新的 .NET Framework 3.0 組件,Microsoft 提供該軟件的免費下載版本。
返回頁(yè)首結論
.NET Framework 3.0 是由 Windows 編程模型演變而來(lái)。它建立于 .NET Framework 2.0 的基礎之上并加以擴展,目的是支持現代應用程序的構建。為此,該 3.0 版本采用了大量的最新技術(shù),可以解決當今應用程序開(kāi)發(fā)中的種種難題。通過(guò)在公共基礎上建立這種多樣性,Microsoft 致力于使軟件的整體效果大于各個(gè)部分之和,從而讓開(kāi)發(fā)人員以更加一致的方式使用 .NET Framework 3.0 的不同部分來(lái)構建應用程序。
無(wú)論組織選擇采用此新版本的哪些方面,其中所蘊含的技術(shù)必定會(huì )對 Windows 軟件領(lǐng)域產(chǎn)生重大影響。對于該領(lǐng)域的所有人來(lái)說(shuō)(無(wú)論是開(kāi)發(fā)人員、設計人員或是決策者),現在是開(kāi)始了解如何從 .NET Framework 3.0 獲益的時(shí)候了。