欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Wpf開(kāi)源收集

1,到底有哪些開(kāi)源MVVM框架?

  前面介紹了WPF的基本概念和一些相關(guān)知識,我們了解到開(kāi)發(fā)WPF應用程序可以使用現成的框架和模式,最為合適的莫過(guò)于時(shí)下正熱的MVVM模式,所以這里我們也列出針對MVVM模式的已有開(kāi)源框架:

                                             圖3

  上面除了WPFToolKit和MEF之外都是一些常用的MVVM框架,連帶自己開(kāi)發(fā)的一共是八個(gè),所以自己也取了一個(gè)響亮的名字——MVVM 八大框架!圣殿騎士本人實(shí)際項目中只用到了三個(gè)框架,之前WPF使用過(guò)MVVM Helpers,在Silverlight項目當中用過(guò)MVVMLight+MEF,后來(lái)就一直使用自己開(kāi)發(fā)的框架,其他框架也研究了很長(cháng)時(shí)間,但都是為了開(kāi)發(fā)MVVM框架借鑒之用??蚣茈m然眾多,但萬(wàn)變不離其宗,通用功能如下:

1,Model、View 和 ViewModel之間的關(guān)系:View和ViewModel如何關(guān)聯(lián)起來(lái)(IOC)以及如何通信(通常采用Message),ViewModel和Model之間的弱關(guān)聯(lián)(通常采用接口或者簡(jiǎn)單注入)。

2,事件驅動(dòng)模式在MVVM模式采用Command和Attached Behaviors的形式。

3,屬性及ViewModel的NotifyPropertyChanged處理。

4,提供完整的單元測試,這也是保證框架的穩定性和維護性的保證。

  也許有一些朋友會(huì )問(wèn)我為什么要研究這么多框架,其實(shí)做項目只需要認真研究并實(shí)踐其中一個(gè)就行,研究它們的原因則主要歸功于自己開(kāi)發(fā)MVVM框架的需要。下面就讓我們來(lái)看一下具體有哪些MVVM的開(kāi)源框架(具體到每一個(gè)框架后面有時(shí)間再闡述,一篇文章寫(xiě)得確實(shí)很累):

2,最強大且功能最多的組合框架——Prism

下載地址:http://compositewpf.codeplex.com/

開(kāi)發(fā)者:微軟patterns & practices團隊

是否支持Silverlight:是

學(xué)習資料:Composite Application Guidance for WPF and Silverlight - May 2010.chm以及Quickstarts和StockTraderRI等。

源碼截圖如下:

 

                                             圖4

  Prism——之前又叫Composite Application Guidance for WPF and Silverlight,它是構建復雜的基于WPF/Silverlight企業(yè)級應用的主流框架。Prism中有幾個(gè)比較重要的概念:

1,BootStrapper:應用程序切入點(diǎn),繼承Prism的UnityContainer或MEF提供的MefUnityContainer,為系統提供一個(gè)容器。

2,Shell:它是一個(gè)外殼,通過(guò)UI元素和Region布局頁(yè)面。 它是應用程序的頂級窗口,顯示的內容一般就由View來(lái)填充,Shell本身并不知道它包含了哪些內容,所以功能則是由各個(gè)Module來(lái)具體提供。

3,View:它等同于MVP模式、MVVM模式中的View??梢酝ㄟ^(guò)IRegionManager注入到Region中。

4,Module:可以把一個(gè)大項目拆分開(kāi)來(lái),每一個(gè)Module都包含View、數據、模型,主要用于實(shí)現復雜業(yè)務(wù)操作。

5,IModuleManager:主要用于管理模塊加載,可以實(shí)現動(dòng)態(tài)加載。

6,IEventAggregator:事件處理接口,實(shí)現訂閱和發(fā)布模式,這也是MVVM框架的一般做法。

  Prism是一個(gè)比較龐大的組合框架,4.0引入MEF及功能調整以后變得更加強大了,現在可以說(shuō)是組合框架和應用框架的統一體,而且是微軟團隊的力量,所以選它是值得保證的。

3,最強大且功能最多的應用框架——Caliburn

下載地址:http://caliburn.codeplex.com/

開(kāi)發(fā)者:Rob Eisenberg

是否支持Silverlight:是

學(xué)習資料:我主要參考項目實(shí)例、源碼、單元測試用例、國外一些博客和社區。

源碼截圖如下:

                                             圖5

Caliburn中有幾個(gè)比較重要的概念:

1,在A(yíng)ctions基礎上的Commands帶有很多功能,其中包括多參數、過(guò)濾操作以及異步調用。

2,窗體和控件的生命周期事件也處理得比較好(包括activation、deactivation、shutdown等)。

3,不管是整個(gè)框架還是基于這個(gè)框架的應用程序的可測性都比較好。

4,提供了很多常用功能,這些在項目當中都比較有用。

5,除了支持MVVM模式之外,還很好的支持MVP模式以及其他的一些變種模式。

6,強大的依賴(lài)注入框架以及AOP框架,這里可以靈活選用其中一種。

Caliburn是一個(gè)非常強大的MVVM應用框架,對很多功能都提供了靈活且多種實(shí)現,不論是項目使用還是研究代碼,感覺(jué)都受益頗多。

4,輕量級且適用的MVVMLight

下載地址:http://mvvmlight.codeplex.com/

開(kāi)發(fā)者:Laurent Bugnion

是否支持Silverlight:是

學(xué)習資料:除了online documentation,我主要參考項目實(shí)例、源碼、單元測試用例、國外一些博客和社區。另外這三篇文章非常不錯,用MVVMLight開(kāi)發(fā)了一個(gè)比較完整的Silverlight企業(yè)項目

源碼截圖如下:

                                             圖6

MVVMLight中有幾個(gè)比較重要的概念:

1,RelayCommand:通過(guò)對Command進(jìn)行封裝,使得MVVM模式在WPF和Silverlight上更加容易。你只需要在 ViewModel中定義好各個(gè)RelayCommand,然后在View中通過(guò)Command來(lái)綁定ViewModel中定義好的 RelayCommand,就可以實(shí)現像WinForm、ASP.NET事件一樣的效果,只不過(guò)這里是解除了UI和邏輯的強耦合。

2,Messager:MVVMLight中的Messager作用比較大,前面講了MVVM模式解除了ViewModel和View的強引用,那么它們如何來(lái)進(jìn)行交互呢?就是靠它來(lái)讓ViewModel和View來(lái)進(jìn)行通信的。一般我們會(huì )定義一個(gè)靜態(tài)AppMessages類(lèi)來(lái)作為通用的一個(gè)通信類(lèi),原理就是發(fā)布訂閱模式。

3,EventToCommand:這里就比較類(lèi)似于附加行為的概念,是在MVVM Light Toolkit V3中開(kāi)始引入的概念。

4,ICleanup接口:當顯示某個(gè)View時(shí),需要先調用Cleanup方法清除數據,這也是由于ViewModel和View的耦合隔離產(chǎn)生的一些必要操作。

  MVVMLight是一個(gè)非常好用的MVVM框架,提供了VS和Blend的模板及智能感知。它結合MEF使用真的感覺(jué)很輕量級且高效,而且提供了WPF和Silverlight的支持,尤其在Silverlight的支持上比較好,所以一般選擇輕量級的Silverlight MVVM模式,它比較被看好。

5,功能齊備且易用的MVVM Helpers

下載地址:http://mvvmhelpers.codeplex.com/

開(kāi)發(fā)者:Mark Smith

是否支持Silverlight:否

學(xué)習資料:http://www.julmar.com/blog/mark/以及提供的實(shí)例、源碼及測試用例。

源碼截圖如下:

                                             圖7

MVVM Helpers又叫JulMar MVVM Helpers + Behaviors,其中有幾個(gè)比較重要的概念:

1,提供了MVVM模式的基本功能,包括ViewModel、View及Model之間的隔離,另外還提供了一些常用功能。

2,ViewModel的創(chuàng )建使用標簽的形式注入,現在也可以引入MEF。

3,IOC/DI的支持,屬性都有驗證機制,Wait Cursor的支持,當使用完viewmodel之后能及時(shí)釋放,這樣避免內存泄露。

4,提供了常用的Attached Behaviors支持。

5,消息機制的引入,避免強引用產(chǎn)生的耦合。

MVVM Helpers是一個(gè)非常適用的MVVM框架,尤其是提供了MVVM常用功能+MEF+Attached Behaviors,所以項目中的問(wèn)題基本都能解決。

6,功能強大且輕巧的Cinch

下載地址:http://cinch.codeplex.com/

開(kāi)發(fā)者:Sacha Barber

是否支持Silverlight:否

學(xué)習資料:http://sachabarber.net/以及提供的實(shí)例、源碼及測試用例。

  1. A walkthrough of Cinch, and its internals - Part I
  2. A walkthrough of Cinch, and its internals - Part II
  3. How to develop ViewModels using Cinch
  4. How to Unit test ViewModels using Cinch app, including how to test Background work threads which may run within Cinch ViewModels
  5. A Demo app using Cinch

源碼截圖如下:

                                             圖8

如果仔細研究其代碼,你會(huì )發(fā)現它和上面講的MVVM Helpers有很多相似的代碼,估計是相互參考了一番:-D。Cinch 中有幾個(gè)比較重要的概念:

1,這個(gè)框架在沒(méi)有MEF出現之前就已經(jīng)實(shí)現了ViewModel和View之間的強引用隔離,它既沒(méi)有一般IOC的配置,也沒(méi)有IView來(lái)做中轉,并且窗體和控件的生命周期事件也處理得比較好,所以在這方面來(lái)說(shuō)是非常不錯的。

2,提供了常用的Attached Behaviors支持,另外也提供了一些MVVM常用功能。

3,DI/IOC使用Unity實(shí)現,多線(xiàn)程的實(shí)現,避免系統出現不可預料的錯誤。

4,當使用完viewmodel之后能及時(shí)釋放,這樣避免內存泄露,驗證機制的加入,常用導航實(shí)現。

5,消息機制的引入,避免強引用產(chǎn)生的耦合。

Cinch 是一個(gè)非常強大的框架,尤其是它比較著(zhù)眼整個(gè)應用程序的搭建,所以也比較受到青睞。

7,功能簡(jiǎn)單且易擴展的MVVMFoundation

下載地址:http://mvvmfoundation.codeplex.com/

開(kāi)發(fā)者:Josh Smith

是否支持Silverlight:否

學(xué)習資料:http://joshsmithonwpf.wordpress.com/以及提供的實(shí)例、源碼及測試用例。

源碼截圖如下:

 

                                             圖9

MVVMFoundation中有幾個(gè)比較重要的概念:

1,Messenger:這里主要用在各種不同的ViewModel之間通信(比如相互關(guān)聯(lián)的ViewModel、主從ViewModel等),當然也可以擴展成ViewModel與View之間進(jìn)行通信。

2,ObservableObject:這里相當于ViewModelBase的概念,每一個(gè)ViewModel繼承自該類(lèi),調用完成之后立即釋放,防止內存泄露。

3,PropertyObserver:主要是對INotifyPropertyChanged.PropertyChanged進(jìn)行封裝,這樣封裝可以精簡(jiǎn)代碼,同時(shí)可以防止不當操作引起的內存泄露。

4,RelayCommand接口:封裝command的聲明,包括execution執行邏輯,可選的can-execute邏輯等。外部只需要實(shí)例化并Binding就可以簡(jiǎn)單使用。

MVVMFoundation是一個(gè)非常簡(jiǎn)單的MVVM框架,如果你覺(jué)得研究源碼比較困難,就可以先從這個(gè)框架入手,代碼簡(jiǎn)單而且精煉。

8,附加:支持插件式的依賴(lài)注入MEF

下載地址:http://mef.codeplex.com/

源碼截圖如下:

 

                                             圖10

9,如何充分利用這些框架

  上面我們已經(jīng)介紹了七大MVVM框架+支持插件式的依賴(lài)注入MEF,其實(shí)另外這三個(gè)框架WPF Application Framework (WAF)、Calcium、CoreMVVM(Basic MVVM framework)也很值得研究,由于時(shí)間和精力的關(guān)系,針對這三個(gè)框架圣殿騎士也沒(méi)有進(jìn)行仔細的剖析,只是粗略看了一下基本功能。

其他一些框架諸如Onyx、nRoute、Nito MVVM、Ocean、GoodLight就沒(méi)有太多關(guān)注,有興趣的朋友也可以選擇其中某一個(gè)或多個(gè)框架作為研究和學(xué)習,不過(guò)還是推薦研究主流的框架,畢竟這些主流框架的開(kāi)發(fā)團隊和成熟度都比較強。

上面看到了這么多MVVM框架,那么我們應該怎么去學(xué)習和使用呢?簡(jiǎn)單來(lái)說(shuō)可以歸納為以下幾句話(huà):

1,根據具體的項目選擇適合的框架,團隊和項目有大有小,所以得根據這些來(lái)選擇具體的框架,其實(shí)終歸來(lái)說(shuō),幾個(gè)框架功能都比較類(lèi)似。

2,框架不用研究太多,只要適用于項目就行,尤其是熟練使用并根據其提供的TDD測試代碼追溯其原理。

3,框架不是萬(wàn)能的,對于某些應用和功能可以對框架擴展,這也開(kāi)源最大的好處之一。

針對框架的研究,自己也總結了幾點(diǎn):

1,首先看框架的相關(guān)介紹,了解相關(guān)的背景、功能、架構圖以及其他一些相關(guān)信息——認識了解。

2,根據介紹查看并調試框架所提供的實(shí)例——熟悉功能。

3,自己寫(xiě)一些相關(guān)的項目,主要是熟悉該框架,如果說(shuō)要急于做項目,后面就可以把框架引入到項目當中——具體使用。

4,根據該框架提供的詳細單元測試研究其源碼,這也是我最喜歡研究這些開(kāi)源框架的原因——原理剖析。

5,通過(guò)上面的步驟認真分析其原理及細節——準備重現。

6,自己也根據之前的思路重復開(kāi)發(fā)這個(gè)框架,最好能用TDD——框架復原捷徑。

  上面我們談了一些開(kāi)源框架相關(guān)知識,下一步我們得自己開(kāi)發(fā)一個(gè)MVVM框架,一方面是對知識的總結,另一方面也是對知識的再提煉,同時(shí)也能使自己的認識提升到另一個(gè)高度,緊接下文。

十. 自己開(kāi)發(fā)MVVM框架

  由于之前自己做了一套框架,但是還沒(méi)有趨于完善,所以暫時(shí)不準備共享出來(lái)(主要是WPF和Silverlight版本更替比較頻繁且沒(méi)有加入模板及智能感知)。對于開(kāi)發(fā)一套MVVM框架,具體需要做一下幾個(gè)操作:

1,要能解決Model、View和ViewModel之間的強關(guān)聯(lián),這也是核心功能,尤其是View和ViewModel,不管是使用IOC Container還是MEF都行。

2,命令和附加事件的處理,對Command進(jìn)行封裝,滿(mǎn)足多參數、方法過(guò)濾、泛型、異步回調等,對附加事件進(jìn)行封裝,使它像使用命令一樣簡(jiǎn)便。

3,由于View和ViewModel是弱關(guān)聯(lián)或者是無(wú)關(guān)聯(lián),如何讓它們進(jìn)行通信?這就需要加入Messenger機制。

4,前面引入了消息機制(一般是靜態(tài)化處理),如何來(lái)管理、實(shí)例化、清除消息呢?這里得建立一套消息機制。

5,由于前面采用了弱關(guān)聯(lián)或者無(wú)關(guān)聯(lián),并且引入了消息機制,所以需要對操作有日志記錄,否則出了問(wèn)題無(wú)法快速定位及追查原因。

6,如何統一管理ObservableObject、PropertyObserver等這些對象呢?所以得自己建立一套變更體系。

7,對常用功能及操作進(jìn)行封裝,提供一些常用類(lèi)庫以及UI Helper等。

  總之,開(kāi)發(fā)MVVM框架不能求全,只要適合項目就行,也不要想一次就能完善整個(gè)框架,在使用時(shí)不斷根據需求擴展才是明智之舉。另外附加三點(diǎn)開(kāi)發(fā)MVVM框架心得:

1,充分借鑒其他開(kāi)源框架,研究各個(gè)框架的不足和優(yōu)勢,然后把思想貫穿于自己的框架中,當然有些常用功能代碼也可以直接借鑒過(guò)來(lái)。

2,對于這樣一個(gè)比較龐大的框架,使用TDD+反復重構無(wú)疑會(huì )提高開(kāi)發(fā)效率,同時(shí)也能提高框架的可維護性和穩定性,這也是團隊使用的一個(gè)前提。

3,框架會(huì )使用一些常用設計模式,有了它們可以讓框架更具有擴展性,同時(shí)也減少了開(kāi)發(fā)成本、增加了可維護性。比如觀(guān)察者模式(消息的發(fā)布、訂閱、觸發(fā))、中介者模式(直接通信的類(lèi)轉化為中間類(lèi)來(lái)處理,隔離耦合)、外觀(guān)模式(提供一個(gè)簡(jiǎn)單的接口出來(lái),在內部進(jìn)行大量的封裝,這樣就可以起到易用且功能強大的目的)、裝飾模式(原來(lái)已經(jīng)穩定的功能模塊,如果在不改變原有結構的基礎上進(jìn)行擴展,無(wú)疑這是一個(gè)很好的實(shí)踐)等。

----------------------------------------------------------------------------------------

 

以下是各種開(kāi)源控件,就不介紹了。

Fluent Ribbon Control Suite


Microsoft Ribbon for WPF


AvalonDock


PropertyEditor for WPF


WPF Property Grid


PropertyInspectorView


WPF Dynamic Data Display


Swordfist WPF Charts


WPF Toolkit


AvalonEdit

 

 

wpf學(xué)習資源站點(diǎn):http://www.cnblogs.com/KnightsWarrior/archive/2010/11/01/1866641.html

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
MVVM模式介紹
MVVM、MVVMLight、MVVMLight Toolkit之我見(jiàn)
MVC,MVP,MVVM之異曲同工
新加坡面試經(jīng)歷
表現層持續解耦帶來(lái)的模式轉變 MVC MVP MVVM (微軟WPF帶來(lái)的團隊變化和軟件技...
重量級
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久