国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

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

聯(lián)系客服