描述 NET Framework
應用程序開發的目標始終如一就是在最短時間內制作出最好的軟件然而隨著開發平台的性能越來越高制作軟件的壁壘也相應提高了以 Windows 為例原來的 Win 接口已經融入到功能更強的 NET Framework 中 年發布的 Framework 和 年發布的 Framework 為設計和編寫 Windows 軟件的開發人員提供了更好的工作環境效率也更高
NET Framework (以前稱為 WinFX)就是我們前進路上的下一個目標建立在這一新版 Framework 上的應用程序可通過 Visual Studio 創建對大多數 Windows 開發人員來說這樣的應用程序將會更加熟悉NET Framework 是從 版本演化而來並在原來的基礎上添加了許多新的功能NET Framework 計劃於 年底發布適用於 Windows VistaWindows Server 和 Windows XP
本文對 NET Framework 及其組件進行了整體描述目的是讓大家對這一新版本有一個清晰的了解同時分析了采用的技術並給出簡要說明
創建現代應用程序主要挑戰
今天開發一款優秀的應用程序可不簡單 您需要考慮眾多的要求傳統的考慮因素如訪問數據通過 Web 浏覽器上網等固然重要但這些已經顯然不夠了下面列出了現代應用程序面臨的一系列新挑戰
組織越來越傾向於從面向流程的角度看待他們的工作由於大多數應用程序已經對業務流程實現了部分自動化因此在代碼中明確流程中的這幾個步驟就非常重要了而要實現這一目標最有效途徑是使用工作流技術這是一種需要支持基於工作流的應用程序的方法
通常來講應用程序要與組織內外的其他應用程序進行通信現代應用程序還必須適用於面向服務的架構 (SOA)同時還要實現一些功能作為其他軟件可以訪問的交互服務要實現這些目標就需要支持面向服務的應用程序
對於使用應用程序的人員來說通常還需要有傳遞識別信息的方法目前定義和使用數字標識的技術各不相同這也是造成網頁仿冒等問題泛濫的原因有鑒於此現代應用程序及其使用者將會從一致的數字標識用戶控件中受益
對於現代用戶界面人們的要求也有了很大幅度的提高要提供真正的業務價值往往需要處理不同類型的文檔使用二維或三維圖形播放視頻等等還要保證本地 Windows 客戶端和 Web 浏覽器能夠兼容這些功能要滿足這些要求需要不同的用戶界面采用統一的方法
一般說來現在的應用程序需要應對以上部分或全部的挑戰因此這些應用程序的開發平台應該采用一致可行的方法來解決所有的相關問題……NET Framework 就是專為解決這些 Windows 應用程序難題而設計
應對挑戰NET Framework 功能介紹
如圖 所示NET Framework 版是在以前版本的基礎上完善而成事實上版本保留了 NET Framework 的全部功能因此在以前版本基礎上開發的應用程序仍然可以正常使用NET Framework 添加了四個新組件Windows Workflow FoundationWindows Communication FoundationWindows CardSpace 和 Windows Presentation Foundation本節將會概要介紹 NET Framework 和上述四個新組件的功能
·NET Framework Windows 應用程序通用基礎
盡管仍然可以通過 Win 界面直接編寫軟件而事實上卻是NET Framework 已經成為編寫新 Windows 應用程序的主流環境如下所示為NET Framework 最重要的組成部分
· ASPNET支持可 Web 訪問的應用程序的開發
· ADONET允許應用程序訪問相關的其他類型數據
· Windows Forms支持建立 Windows 應用程序的圖形用戶界面 (GUI)
· SystemXML使應用程序能夠使用 XML 定義的數據包括 XSLT 和 XPath
Framework 的 版本在以前版本的基礎上添加了幾項實用功能包括對開發 ASPNET Web 應用程序的技術改進支持在 位 Windows 上運行的 位應用程序還增加了處理事務的新方法雖然 NET Framework 中的部分組件為 版本中新增組件所取代但是 版本的技術仍然是新發布的 版本的基礎請見隨後的詳細介紹
Windows Workflow Foundation支持基於工作流的應用程序
工作流是一個簡單思路按照特定順序執行的一系列步驟您甚至可以認為每個應用程序都在執行工作流因為每個應用程序都執行某些過程但是在使用 C#Visual Basic 或其他編程語言等傳統方法開發的應用程序中這些過程都隱含在代碼中這樣做沒問題但是這些過程被深深地嵌入程序邏輯中使得其執行或更改愈加困難
使用工作流技術執行過程邏輯可以有效地解決這一問題采用工作流技術後邏輯與普通代碼就不會糾纏在一起過程中的每一步驟都會明確定義然後由工作流引擎執行這樣做的結果就是過程執行清楚明確
工作流引擎不是什麼新概念有些已經在 Windows 和其他系統中得到應用Microsoft 已經在部分產品中嵌入了工作流引擎但是隨著工作流日漸成為開發應用程序的主流方法提供適用於 Windows 的單一工作流技術已經勢在必行這也正是 Windows Workflow Foundation(正式縮寫是 WF )的設計初衷由於其提供了適用於 Windows 的通用工作流技術WF 已成為所有基於工作流應用程序的統一創建基礎Microsoft 的 Microsoft Office 系統Windows SharePoint Services 等軟件以及許多其他公司的應用程序也會使用 WF
但是提供通用的工作流技術之路卻是困難重重舉例來說如何使用一種方法來滿足不同工作流應用程序的各種要求?WF 給出的答案是從全局視角來看待工作流如圖 所示WF 工作流只是一組由 WF 引擎執行的活動一個活動就是一個類它可以包含工作流創建者認為有必要的任何工作活動可以在不同的工作流中重復使用因此在針對新問題創建自動化的解決方案時過程將會更加容易
提供通用工作流技術面臨另一個困難是面向人員工作流和面向系統工作流的傳統分歧通常來說工作人員使用的工作流應用程序需要有較高的靈活性能夠進行實時更改而一般由系統也就是由軟件使用的工作流應用程序則相對更加靜態但要求盡可能高效WF 綜合考慮了這兩種不同的使用情況不僅包括面向人員的功能(如更改運行中工作流的功能)同時還支持更多面向系統的操作
通過 WF 的 Windows 通用工作流技術NET Framework 為廣大開發人員提供了一種非常有用的軟件開發模式隨著面向流程的軟件繼續風行工作流技術也會隨之推廣
Windows Communication Foundation支持面向服務的應用程序
無論是通過工作流還是其他方式開發絕大多數應用程序都需要與其他應用程序進行通信近幾年來應用程序間的通信技術發展迅速在長達數十年的不統一之後主要供應商之間最終達成了一致的應用程序通信協議根據 SOAP 這一全球 Web 服務協議基於 JEENET Framework 等不同技術平台開發的應用程序間的互操作性相比以前大為簡化它還會使面向服務的架構這一思想為更多的組織接受
當然現在的通信方式已經不少了以 NET Framework 為例您可以選擇以下幾種通信方式
· ASPNET Web 服務提供基於 SOAP 的交互通信
· NET Remoting主要用於 NET 應用程序之間的通信
· Enterprise Services支持可擴展的事務性應用程序
· SystemMessaging通過 Microsoft Message Queuing (MSMQ) 支持隊列消息
· Web Services Enhancements (WSE)它是 ASPNET Web 服務的擴展支持 WSSecurity 等新規范
這些技術都有其自身的價值在實際應用中也有著各自的地位可是既然問題是一樣的為什麼要采用好幾種不同的解決方案呢?為什麼不根據交互服務來建立一個單一的應用程序通信基礎?
這正是 Windows Communication Foundation (WCF) 的設計初衷有了 WCF開發人員不必再像從前一樣處理每一類通信都要使用到不同的應用程序編程接口技術 - WCF (最初的代號為Indigo)以通用的 API 提供通用的方法在 NET Framework 環境下大多數使用上述技術之一的應用程序將會代而使用 WCF
WCF 通過 SOAP 提供強大的交互通信支持這是現代計算機設備的基本要素它還支持多項 WS* 規范如 WSSecurityWSReliableMessaging 和 WSAtomicTransactionWCF 不需要 SOAP但是可能會使用其他方法包括優化二進制協議MSMQ 隊列消息 和基於 REST 的簡單通信WCF 同樣采取明確的面向服務方法來進行通信WCF 不會在對象間進行透明通信而是為通信各方提供略微不同的抽象服務其結果之一就是放開了分布式對象系統間某些緊密的耦合關系使得交互出錯減少並且更容易修改
無論是在組織內部還是組織之間應用程序通信都是現代軟件的基本功能NET Framework 以其 WCF 面向服務方法解決了這一難題
Windows CardSpace一致的數字標識用戶控件
請您想一下人們在 Internet 上是如何表示各自身份的多數情況下是將個人的數字標識作為一個簡單的用戶名再加上密碼之後就可以使用這個標識訪問電子郵件帳戶網上商店網上銀行和其他一些金融機構了盡管這種方法很簡單現在也在普遍應用但是用戶名和密碼方式有著無法回避的缺點最重要的兩項是
要記住登錄眾多網站的不同用戶名和密碼的確讓人不勝其煩為了減少這些麻煩許多人在不同網站使用相同的用戶名和密碼可這樣又增加了安全風險
用戶名密碼和其他個人信息可能會被網頁仿冒者竊取網頁仿冒者會發送欺騙性電子郵件誘使受害者去登錄一個假冒網站比如一個與受害者銀行極其相似的仿冒網站而這個網站實際上是網頁仿冒者控制的一旦受害者輸入自己的用戶名和密碼網頁仿冒者就會利用這些信息在真網站冒充該用戶牟取不當利益
要減少這些問題的危害性我們需要采用新的方法來管理數字標識Windows CardSpace(最初代號為InfoCard)是這種新方法中的重要組成部分為幫助人們追蹤自己的數字標識CardSpace 用不同的信息卡來表示每個數字標識如果網站接受 CardSpace 登錄那麼用戶在嘗試登錄這一網站時會看到 CardSpace 選擇屏幕如圖 所示您可以選擇一張卡片這就相當於選擇了登錄該網站的數字標識不必再去費心記住數不清的用戶名和密碼用戶只要記住他們要使用的那張信息卡就可以了不同的信息卡還包含其他信息用戶可以通過它控制登錄網站時提交的信息
信息卡表示的這些標識是由一個或多個標識提供者創建而成的組織可以有自己的標識提供者而不必依賴於簡單的用戶名和密碼每個標識提供者都會采用更加強大的加密機制讓用戶來驗證他們的標識CardSpace 本身也包含一個自發行的標識提供者可以在客戶端計算機上運行使用這一提供程序用戶可以創建自己的標識且標識也不必依賴密碼進行身份驗證網站接受這些自發行 CardSpace 標識這樣就不必再依賴常見的密碼方法自然會減少因密碼而帶來的諸多問題
不用密碼登錄網站網頁仿冒者也就無密碼可偷了!但是如果網頁仿冒者成功誘使受害者訪問假冒網站的話他們還是會竊取用戶的其他信息如敏感的醫療信息等要杜絕這種情況就要求用戶自己能夠區別假冒網站和真網站為幫助用戶識別網站擁有網站的組織應獲取高度確認認證與現在的 SSL 簡單認證不同新的認證方式涉及到更多更嚴格的流程其中包括采用更嚴格的方式來證明申請該項認證的組織的身份高度確認認證上還可以帶有公司徽標和其他信息幫助用戶准確識別使用證書的網站是否合法用戶訪問新網站時CardSpace 會始終以標准屏幕顯示該網站的證書信息根據認證的接受程度屏幕上會自動顯示出對網站標識的確認程度其目的是強制用戶明確界定網站是否可信然後幫助他們作出正確選擇
Windows CardSpace 實際上是更大的標識元系統的一部分標識元系統完全基於開放的公共協議它定義了一種全新的方式能夠使不同的數字標識技術在各個不同的平台(包括 Windows 以外的操作系統)和應用程序(包括 Internet Explorer 以外的 Web 浏覽器)上使用CardSpace 采取通用的方法來選擇標識和其他 Windows 信息因而在元系統中扮演著重要角色並且由於解決了基本的標識問題CardSpace 也已經成為 NET Framework 的重要組成部分
Windows Presentation Foundation適用於不同用戶界面的統一方法
對幾乎所有的應用程序來說用戶界面都是重要的組成部分現在用戶對這些界面的要求越來越高了當然我們仍然需要傳統的菜單驅動式 GUI但是除此之外許多應用程序還需要能夠播放視頻運行動畫采用二維或三維圖形以及調用不同的文檔無論是通過安裝的桌面客戶端還是通過 Web 浏覽器來訪問應用程序上述功能都必須可以正常使用
一直以來Windows 上的這些用戶界面功能都是以不同方式提供的例如開發人員可以使用 NET Framework 中的 Windows Forms 來創建 Windows GUI使用 HTMLJava 小程序或 JavaScript 代碼創建 Web 浏覽器界面或是使用 Windows Media PlayerAdobe 的 Flash Player 等軟件播放視頻文檔格式則以 Microsoft WordAdobe PDF 或其他軟件進行定義很明顯開發人員面臨著巨大的挑戰如何使用不同的技術為不同的客戶端創建一致的用戶界面這相當困難
Windows Presentation Foundation (WPF)最初代號為Avalon就是為解決這一難題而設計WPF 為所有的這些用戶界面提供一致的技術基礎從而大幅簡化了開發人員的工作WPF 采用更為現代的方法支持視頻動畫二維或三維圖形以及各種類型的文檔從而可以讓用戶以全新的方式處理信息此外WPF 還為桌面客戶端和浏覽器客戶端提供了通用基礎大大簡化了二者的應用程序開發工作
讓我們以圖 中的界面(其中包含了圖像現場圖三維視圖等等)為例說明 WPF 的部分功能過去開發人員需要懂得各種技術才能進行工作而現在通過這種更為一致的方法開發人員可以輕松制作出類似示例中的用戶界面
另外一個長期困擾用戶界面開發人員的問題是如何創建高效界面需要的不同角色軟件開發人員需要編寫相應的界面邏輯但是他們並不是定義界面感觀的最佳人選一般來說人機交互領域的設計人員和專家更適合這一工作但是在以前的技術(如 Windows Forms)背景下這些問題完全由開發人員決定開發人員和設計人員之間沒有實現真正有效的協作WPF 借助於可擴展應用程序標記語言 (XAML) 解決這一問題XAML 是一種基於 XML 的語言允許以聲明方式指定用戶界面 -而非代碼這就開發工具就能夠根據設計人員創建的可視化顯示更加容易地生成和使用界面規范實際上Microsoft 的一款新產品 Expression Interactive Designer 就是為此而設計使用這一工具(其他的由第三方提供)設計人員可以創建界面外觀然後生成他們所創建界面的 XAML 定義開發人員將這些定義導入 Visual Studio 之後就可以著手構建界面所要求的邏輯了
開發人員創建了直接在 Windows 上運行的安裝版 WPF 應用程序後就可以使用 WPF 提供的全部功能了但是若要創建在 Web 浏覽器內部運行的客戶端程序開發人員應創建一個 XAML 浏覽器應用程序我們通常稱之為 XBAP與安裝版 WPF 應用程序的基本原理相同XBAP 允許在可下載的浏覽器應用程序中表示與用戶界面相同的樣式兩種應用程序可以使用相同的代碼這也就意味著開發人員不再需要針對桌面和浏覽器客戶端的不同技術集特別是按照此類豐富 Internet 應用程序的現狀在安全沙箱內運行從 Internet 下載的 XBAP將會限制應用程序的功能但是安裝版 WPF 應用程序中提供的大量用戶界面功能子集也可用於 XBAP
WPF 安裝版應用程序和 XBAP 都可以利用 WPF 的現代圖形支持其中包括使用硬件加速支持矢量圖形以及其他更多功能通過提供更強大的圖形支持功能WPF 使得一系列數據可視化選項成為可能而這依靠 Windows Forms 或其他的早期技術是不可能實現的WPF 還提供了 XML Paper Specification (XPS) 的基礎可定義查看分發和打印固定格式文檔的標准格式
用戶界面是現代應用程序中復雜而重要的組成部分通過 WPFNET Framework 提供了一種比較完整和一致的解決方案用於應對用戶界面方面的難題其目標是使構建用戶界面的相關人員(包括開發人員和設計人員)能夠更有效的進行工作
應用 NET Framework 設想
理解一組技術如何協同工作的最好方式就是查看其使用方式的示例現在假設一款應用程序要求客戶和代理提交保單如果使用 NET Framework 執行則會有圖 所示的工作流程
圖表左上角所顯示的應用程序業務邏輯是使用 WF 工作流得以實現的處理保單是一項多步驟流程包括根據組織的保險規則來評估此保單或許要檢查投保人的信用甚至還要獲得其上司的批准工作流依靠所需要的其他軟件以活動方式實現流程中的每一個步驟如果要訪問存儲數據工作流中的活動可以使用 ADONET
保險公司可以提供一個呼叫中心使客戶可以通過電話進行投保呼叫中心員工使用的客戶端軟件顯示在圖表的右上角是由安裝版 WPF 應用程序實現的客戶端使用 WCF 與應用程序業務邏輯進行通信采用的是經過 WCFWCF 通信優化的二進制協議如圖所示呼叫中心工作人員依靠 Windows CardSpace 來選擇他們在登錄該應用程序時將要使用的標識
客戶還可以通過網絡進行投保而保險代理商也可以通過網絡提交保單為便於網絡操作該應用程序使用 ASPNET 與 Web 浏覽器進行通信如圖表的左下角所示客戶通過 Internet Explorer 來訪問該應用程序他們可以使用普通的 HTML 界面也可以使用 CardSpace 來選擇自主設定的標識第三方也可以為其他客戶端操作系統和浏覽器實現標識選擇機制使得標識元系統能夠擴展至非 Windows 客戶端和 Web 浏覽器
保險代理商通過 Internet 訪問該應用程序時可能需要具有更多功能的界面因此他們應該使用 XBAP 而非簡單的 HTML 界面如圖表底部中間位置所示這些客戶可以共享呼叫中心所用 WPF 桌面應用程序提供的大部分用戶界面功能由於兩者構建在同一基礎之上因此應用程序開發人員可以在兩種類型的客戶端中重復使用相同的代碼對於其他類型的客戶端來說代理商可以使用 CardSpace 選擇他們針對該應用程序所設定的標識
最後此應用程序有可能需要與其他應用程序之間進行互訪如果批准客戶時要求信用審核則最有可能通過調用外部服務實現或者此應用程序會直接收到外部軟件請求提供這些外部應用程序可以調用的服務在這些情況下如圖表右下角所示該應用程序依靠 WCF 使用標准 Web 服務進行通信無論這些應用程序構建於何種技術之上WCF 對 SOAP 的支持都使得這些應用程序之間的交互變得輕而易舉
該方案說明了如何使用 NET Framework 中最重要的組件來構建出色的應用程序而此處所舉的簡單示例省略了相當多的選項因此不能將其視為該系列技術所有功能的完整說明相反該示例只是提供一種思路用於講解如何使用 NET Framework 的不同部分來解決實際的業務問題
From:http://tw.wingwit.com/Article/program/net/201311/12937.html