一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

WPF企業內訓全程實錄(上)

  一. 摘要

  圣殿騎士由于工作和項目需要,所以對一些技術進行了較為深入的研究,之前在整個公司做過一些技術專場的培訓,由于每次時間較短且人員較多的關系,沒能講得很透徹。一直都想以文字的形式把這些培訓細節寫出來,但是發現進度確實很慢,所以先來幾篇宏觀的講解,希望能起到“授人與魚也授人以漁”的效果。今天我們就來分享一下WPF內訓之旅,這篇文章以WPF培訓為主線,中間貫穿了一些其他技術和使用心得。其他培訓專題諸如“OO到設計模式”、“WCF基礎到企業應用“Silverlight基礎到企業應用及優化”隨后也會奉上,熱誠和大家互相學習,如果有講得不妥之處,也希望大家能夠多多指點!

  二. 本文提綱

· 1.摘要

· 2.本文提綱

· 3.簡要介紹

· 4.WPF介紹

· 5.WPF基礎

· 6.WPF工具

· 7.WPF開發模式

· 8.WPF團隊協作

· 9.了解并使用MVVM框架

· 10.自己開發MVVM框架

· 11.其他技術引入

· 12.WPF項目及性能優化

· 13.部署與更新

· 14.總結

· 15.詳細技術索引

  三. 簡要介紹

  關于如何做好一個專題的培訓,圣殿騎士也有一些自己的看法,我覺得如果想要一個培訓起到良好的效果,得注意以下幾個方面:

1,了解受眾:首先要確定培訓的受眾,他們是直接的受益者,所以你必須得了解他們的知識背景,這樣才能合理把要講的知識插入到他們各自的知識樹上去,否則效果就會大打折扣。

2,來龍去脈:不管講什么技術,首先得介紹這門技術的歷史淵源、來龍去脈、市場前景,因為只有介紹了這些,才會使受眾仔細聆聽且能夠跟隨你的思路往下走,這也是比較關鍵的一環。

3,把握聯系:我們要講的這門技術往往不可能單獨存在,它或多或少和之前使用的技術有一些聯系,所以在講解過程中適當引入之前的技術會起到很好的效果,并且在項目中,它也不可能單獨存在。

4,大道至簡:必須從基礎講起,從一個”Hello World“講起,因為只有用大眾化的思維來闡述問題,才會引起大眾的共鳴,這同時也體現了一些原則,比如大道至簡、深入淺出、先易后難。之后就開始不斷深入淺出的講解各知識點細節,最好以理論+Demo的形式,這樣收到的效果才會達到或超過預期。

5,工具使用:對于一門技術,或多或少都有適合它的工具,這些工具不僅能提高開發效率,同時也是更好深入學習該技術的一個前提,所以合理使用工具也是一個比較重要的方面。

6,真實項目:前面講了來龍去脈,講了基礎知識以及與其他技術的區別和聯系,同時也講了開發工具,那么這個時候就需要引入最重要的關注點——如何把之前講過的各個方面關聯起來,讓它們作用在真實項目當中,一般最容易接受的當屬簡單頁面+CRUD操作。

  下面這幅圖是我在半年前寫的一份PPT,因為公司要求用英文表述,所以寫的很簡約,這也怪圣殿騎士英文不好:-D,表達不像中文那樣靈活自如,不過大家可以將就看一下大綱(PPT和代碼在后面的文章中提供下載,暫時還沒找到提供下載的地方):

2010-10-21 17-08-32

  因為上面的PPT基本涵蓋了WPF的所有重要知識點,所以得為每一個知識點準備相關的Demo,只有這樣才能把每個知識點完全講透,否則只能起到云里霧里、不知所云的效果。如下便是與之配套的Demo截圖:

2010-10-21 16-54-49

  上面的代碼包中主要包括:

WPFBasic:主要講解WPF的基礎概念,涵蓋了WPF的方方面面。

WPFPatterns:強調Presentation模式的重要性,主要包括MVC/MVP/MVV以及一些MVVM的框架。

WPFProject:具體項目中如何把握,如何引用之前的技術和經驗。

WPFTools:一門技術都有與之相應的開發、管理、協助工具,WPF也不例外。

WPF.PPT:這里是一些簡單的介紹,熟悉的可以略過。

  這些Demo主要來源于兩個方面,一是自己寫了一些;二是改編了網絡上的一些素材;如果大家仔細看,可以發現它涵蓋了WPF的方方面面,并且對重點和難點也做了區別對待。

  四. WPF介紹

  1,概念引入

  Windows APIWindows Presentation Foundation (WPF) 是新一代顯示系統,用于生成能帶給用戶震撼視覺體驗的 Windows 客戶端應用程序。使用 WPF,您可以創建廣泛的獨立應用程序以及瀏覽器承載的應用程序。 WPF 的核心是一個與分辨率無關并且基于向量的呈現引擎(這樣就可以保證圖像和影像具有高清晰度),旨在利用現代圖形硬件的優勢。WPF 通過一整套應用程序開發功能擴展了這個核心,這些功能包括可擴展應用程序標記語言 (XAML)、控件、數據綁定、布局、二維和三維圖形、動畫、樣式、模板、文檔、媒體、文本和版式。WPF 最先包含在如下圖的 Microsoft .NET Framework 3.0中,它使您能夠生成融入了 .NET Framework 類庫的其他元素的應用程序(因為WPF包含在.NET Framework 3.0 里面,所以我們這里不列出3.5和4.0的框架圖)。

  2,歷史淵源

  微軟在1983年春季就宣布開始研究開發Windows,到現在已經有27年的歷史,這27年來,微軟官方主力推行的編程語言與API有四個主要階段:

  • 1983~1991年:C搭配Windows API。當時的程序員是很少的,并且開發一個項目也比較的不容易。

  • 1992~2001年:這段時期C++搭配MFC庫。在歷史上MFC是最多人用的Windows編程方法。但此后MFC技術也逐漸退出了歷史的舞臺。

  • 2002~2006年:(C#、VB以及其他語言)+Windows Form框架。這段期間IT技術的焦點是在Web上,所以雖然大家都在用.NET,但真正的主角是ASP.NET,而不是Windows Forms。Windows Forms還沒等熬出頭,WPF就出現了。Windows Forms注定會是歷史中“最少人使用的微軟開發技術”。Windows Forms其實是不錯的技術,在很多方面都做得挺不錯,比如在UI上、圖形編程上、開發效率上、穩定性上都做得很讓人敬佩,但是我們最后看到的結果卻是大家沒有引起足夠的重視,很多人更偏向于用Delphi和MFC,對Windows Forms卻視而不見,所以造成的最后結果就是Windows Forms生不逢時。

  • 2007~現在 :2007年1月30日,Windows Vista正式全球同步發布。它之所以能實現那么絢麗的效果,最關鍵的一點就是其內在也使用了Windows Presentation Foundation(WPF)類似的技術,所以帶來的震撼視覺效果和用戶體驗使Vista的效果如此絢麗,雖然Vista在后來最終成為了一個敗筆,但它為 Windows 7打下了堅實的繼承。后臺語言(C#、VB以及其他語言)+XAML構成的WPF。你可能覺得很奇怪,微軟為何釋出兩個作用相似,卻不同且不相容的.NET API。因為時代的改進,用戶對視覺感受需求不斷提高。因為WPF支持硬件加速、精確顏色、浮點坐標、動畫實現、三維、視頻感受等要求提高。而傳統的 Winform 是到不到這些效果的。

  3,技術更替

  舊的事物遲早會退出歷史舞臺,新的生命會經過曲折的里程登上王座。從圖像界面的出現那一刻起,用戶界面(UI)就進入了一個特殊的歷史時期。在隨后幾年里,出現了很多具有歷史意義的界面風格?,F在,經典的Windows窗口風格已經存在了10多年,即使是深受用戶喜愛的Windows XP風格也已出現五年有余。無疑大家與我一樣,期待著全新視覺界面的出現。另一方面,當今計算機處理芯片飛速發展,特別是顯示芯片,顯示卡幾乎成為了一臺微型的計算機。但是,其強大的處理能力卻沒有得到充分的應用。目前,顯示卡GPU(Graphics Processing Unit)的處理能力大多只應用游戲和多媒體領域。為了給用戶提供最強的體驗,滿足不斷提高的用戶視覺需求,Windows Vista引入了全新的圖形子系統——WPF。她能充分利用顯示卡的處理能力提供給用戶最絢的視覺效果。

  在Windows Vista出現之前,Windows平臺的圖形系統主要有:GDI、GDI+、Direct3D。其中,GDI的應用領域最為廣泛。GDI圖形系統已經形成了很多年并且已經逐漸形成了自己的一套開發體系。它提供2D圖形處理、文本處理,以及有限的圖像處理功能。雖然在一些顯示卡上支持部分的GDI加速,但是其效果與現在的Direct3D相比還是很弱小。GDI+開始出現是在2001年,它引入了2D圖形的反走樣、浮點數坐標、漸變以及單個象素的 Alpha支持。它幾乎支持所有的常用圖像格式。但是,GDI+沒有任何加速功能(全部是用軟件實現)。

  4,核心框架

  如圖,在Windows Vista和Windows 7中,GDI、GDI+和WPF并行存在。但是,WPF所有的操作都不依賴于GDI和GDI+,而是間接依賴于強大的Direct3D。右圖中的標示為暗紅色的是WPF的三大核心組件,其中milcore組件,它的職責是完成與Direct3D的交互。并且出于效率和安全考慮,milcore由非托管代碼實現。WPF 中的所有顯示是通過 DirectX 引擎完成的,可實現高效的硬件和軟件呈現。WPF 還要求對內存和執行進行精確控制。milcore 中的組合引擎受性能影響關系大,需要放棄 CLR 的許多優點來提高性能。

  WPF的兩大核心組件PresentationFramework和PresentationCore都位于通用語言運行庫(CLR)之上。那么就可以看出,WPF的大部分代碼都是以托管形式存在的。這兩大組件提供了WPF項目需要的函數庫和功能庫,由于是以托管的形式存在,所以也避免了我們直接操作底層和出現諸如內存泄露的可能性。

  5,功能介紹

  正如上面的這幅圖,可以看出一共分成了五大塊(Core Presentation、User Interface Services、Base Services、Document Servies和XPS Viewer):

  • Core Presentation:包含了所有的圖形效果,如圖形、2D圖形、3D圖形、文本、音頻、視頻和顯示效果。同時還包括強大的動畫效果,動畫可以應用前面的所有元素。最下面的那個就是視覺基本元素。
  • User Interface Services:包含了Application Services(應用程序服務)、Deployment Services(部署服務)、Controls(控件庫)、Layout(布局)和Data Binding(數據綁定).
  • Base Services:提供了XAML支持、Accessibility(提高開發效率)、Input&Events(輸入和事件的支持)、Property
    System(屬性系統)。
  • Document Servies和XPS Viewer則提供了基本的打印和表報服務,可以通過這些組件實現自定義的打印和顯示效果。

  基于上面的特性以及我們使用的情況可以總結出:

      在輸入方面:WPF支持鍵盤、鼠標、手寫筆、觸摸屏,藍牙錄入、視頻撲捉等,所以基本沒有任何限制,在和外部設備的交互上:有驅動、COM、Win32或通信協議支持的任何設備。打印和報表方面:可訪問打印對話框、打印隊列、打印窗體、控件以及很多可選操作,同時對報表也支持得很好。同時支持流文檔和固定文檔,對命令的支持以及對文件的無限制訪問,最后尤其在動畫、圖形圖像、3D、影像的支持相當好(其他技術是很難做到的),所以WPF除了在性能方面存在著缺陷以外,其他方面可以說是做得非常優秀,同時我們有信心相信微軟會在這方面做得更好!

  五. WPF基礎及核心概念

  1,基礎概念

  從2007年開始接觸WPF/Silverlight以來,對學習和使用它們有自己的一些淺薄心得,所以首先讓我們來看看WPF的各個基礎概念:

  1. Application、Window、Navigation、Dispatcher:   這里強調一個應用程序的基本組成部分,也就是說它是每一個項目都會遇到的概念!
  2. 框架結構及類繼承結構:   沒有一個宏觀的認識作為燈塔,是一件很危險的事情,尤其在做深入研究的時候!
  3. XAML基礎:  作為WPF的主打概念,它似乎起著不可估量的作用,這也是大家接觸WPF的首要概念!
  4. 布局基礎:   每一個應用程序,如果沒有良好的布局,似乎是一個不可想象的事情,在WPF中提供了很多布局元素,同時也提供了很多擴展點!
  5. WPF的邏輯樹和視覺樹:  它很有作用,但也很頭痛,很多錯誤不得不歸功于它!
  6. 依賴屬性、路由事件、Binding、命令:   核心中的核心,所以我們把它列為重點講解對象,后面分開闡述!
  7. 資源、樣式、模板:   在很多程度上,它吸取了之前WEB方面的優勢,這三個功能在很大程度上提高了復用,同時也規范了項目!
  8. 尺寸縮放、定位與變換元素:   由于是矢量元素,所以在做各種圖形圖像操作的時候就比較如魚得水!
  9. WPF控件分類介紹與使用技巧: 微軟的每一種UI相關的技術都會伴隨強大的控件庫,有了它們可以大大減輕開發的難度!
  10. 用戶控件和自定義控件開發:    和WinForm、ASP.NET一樣,開發自定義控件也很簡單且類似,這里強調控件的多種分類以及區別對待!
  11. 多語言、皮膚和主題:   開發一個稍微大型的應用程序都會遇到多語言、皮膚和主題,在WPF中做這些元素也非常簡單!
  12. 2D圖形: WPF創建和使用2D圖形主要集中在3個重要的數據類型之上——Drawing,Visual,Shape,所以需要分別進行研究!
  13. 3D圖形: WPF之所以能帶來絢麗且強大的3D圖形功能,這得歸功于DirectX 技術,并且提供的接口也非常簡單,這也使大量動畫應用成為可能!
  14. 動畫(幾種動畫的應用):動畫無疑是WPF中最吸引人的特色之一,因為一想到動畫大家可能都會提到Flash,WPF的確也使動畫變得非常簡單!
  15. 音頻、視頻、語音: 這里強調的影音相關的功能,由于直接使用DirectX,所以較之前的技術,WPF在顯示效果和質量上可謂是質的飛躍!
  16. 文檔、打印、報表: 強調企業使用的一般功能,在WPF中也得到了很好的實現,這也是大量管理應用程序使用WPF的前提! 
  17. Win32、Windows Form以及ActiveX之間的互用性:這里強調與其他技術之間互用的兼容性,當然,在WPF中對這些技術提供了很好的支持!
  18. 部署及更新應用程序:和其他客戶端技術一樣,WPF的部署與自動更新也比較容易,除了傳統的三種方法以外,還提供了XBAP的方式,不過已經逐漸被Silverlight所取代。
  19. WPF的開發模式:其他層可以保持不變,針對Presentation提供了MVC 模式、MVP模式 、MVVM 模式。
  20. 項目和性能相關:WPF在諸多方面都做得很好,除了滿足其他客戶端技術的功能外,也有自己的獨特一面。在性能方面,只要多注意一些細節,就可以超過預期的滿足企業的需求。

  2,核心概念

  可以看到上面的基礎概念很多,但圣殿騎士認為核心概念主要有以下三點:

  A,依賴屬性體系

2010-10-21 17-12-08

  首先從依賴屬性基本介紹講起,然后過渡到依賴屬性的優先級、附加屬性、只讀依賴屬性、依賴屬性元數據、依賴屬性回調、驗證及強制值、依賴屬性監聽、代碼段 (自動生成) 等相關知識,最后我們會模擬一個WPF依賴屬性的實現,來看看它里面的內部究竟是怎樣處理的,這樣就可以幫助我們更好的認清它的本質,出現問題的時候我們也可以根據原理快速找到原因。

  B,事件體系

2010-10-21 17-13-00

  講到WPF事件體系,我們就不得不來一場短暫旅行,由于圣殿騎士之前是從C和C++過渡到.NETJava,所以對Win32程序有一些粗淺的認識,不管是Win32/C++還是MFC/C++,在窗體和事件處理上本質都是用消息(Message)來進行通信,只不過MFC對這些繁雜和通用的代碼進行了一些封裝,到WinForm和WPF也不例外,無疑底層還是通過這些消息在傳遞操作。有了Win32->MFC->WinForm->WPF這種Message的演變之后,我們必須得認識其中的一些核心概念,比如函數指針、委托回調、委托和事件以及現在提的路由事件。由于這些知識太多,所以不進行深究,在這里我們只研究委托和事件的一些知識、委托和事件實現原理、路由事件的原理以及路由事件的使用,通過這么一來回,可能大家會對路由事件有一個比較清晰的認識,最主要的是能在項目中運用自如。

  C,Binding

2010-10-21 17-14-01

  前面講了WPF的依賴屬性體系和事件體系,這里再講第三個核心概念——Binding,WPF 綁定可以在源數據對象和UI 控件間建立聯系,實現單向或雙向變更通知,以此實現更好的業務邏輯和UI的分離。也正是因為Binding,才使得UI和業務邏輯的耦合隔離變得如此輕松,也正是因為Binding,我們才實現了MVVM模式,所以Binding在這個過程中起到了核心作用。同時我們也要注意到Binding的知識點非常多,所以就分成三大塊來講解。

  大家可能會說為什么三大核心不包含其他概念?如為什么沒有Command?為什么沒有動畫?為什么沒有3D?其實這些技術都是比較靠上層的一些技術細節,在最底層還是依賴于上面的三大核心功能,具體本文就不再詳細闡述了,后面的文章再續。

  六. WPF工具

  WPF工具主要分為開發工具和其他幫助工具,當然這里只是列出了使用頻率最高且常見的一些工具。

  開發工具:

Visual Studio 2005/2008/2010

Expression Design 2/3/4

Expression Blend 2/3/4

Expression Encoder 2/3/4

  其他常用工具:

KaXaml

WPF Inspector

Snoop

XAML Power Toys

WPF Performance Suite

  基本上就用到了以上的一些開發和幫助工具,具體使用由于受篇幅所限,這里就不做過多介紹,后面會開單獨的篇幅來詳述。

  本篇小結

  由于“WPF企業內訓全程實錄”這篇文章花了十多個晚上的時間,所以內容涵蓋面廣且文章較長。為了提高閱讀質量,我把它拆分成了三篇,今天先發布內容較少且較簡單的上篇,下周一、二會接著發布其余兩篇,敬請期待!最后聲明一下,由于圣殿騎士才識淺薄,所以以上觀點只是個人的看法與心得,遺漏和錯誤之處也敬請海涵。懷著技術分享與交流的態度分享出來,希望各位多多指教!

NET技術WPF企業內訓全程實錄(上),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久精品国产亚洲网站 | 狠狠色网 | 黄色网址免费在线播放 | 中文一区二区在线观看 | 国产一久久香蕉国产线看观看 | 国产精品无 | 国产美女91 | 在线黄视频 | 多人伦精品一区二区三区视频 | 91网址在线 | 黄色影片免费观看 | 偷拍亚洲色图 | 精品国偷自产在线 | 春色视频一区二区三区 | 在线观看理论福利片 | 国内自拍网址 | 视频在线国产 | 国产美女一区二区 | 一级鲁丝片 | 亚洲最大色网 | 在线播放国产视频 | 亚洲第一黄色网址 | 一区二区在线观看视频 | 中文字幕在线观看91 | 国产成人免费a在线资源 | 97色涩| 日韩亚洲国产欧美精品 | 看美女毛片 | 欧美成年黄网站色高清视频 | 成人的天堂视频一区二区三区 | 另类一区二区三区 | 色哟哟在线资源 | 伊人久久国产精品 | 成人福利在线视频 | 午夜神马视频 | 九月丁香婷婷 | 性做久久久久久网站 | 天天艹天天 | 亚洲性片| 精品国精品国产自在久国产不卡 | 欧美精品无需播放器在线观看 |