日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

WPF For WinForms (and MFC) Developers, Part 1...

 AllHere 2012-05-04

微軟曾經(jīng)對WPF(代號Avalon)抱很大的期望——新一代的華麗用戶界面平臺,一統(tǒng)Web應(yīng)用和桌面應(yīng)用,F(xiàn)lash殺手,盡管微軟口頭上不承認(rèn)。幾年下來,WPF確實實現(xiàn)了當(dāng)初的預(yù)期的大部分功能,但離稱霸軟件開發(fā)領(lǐng)域還有不小的距離。不過,剛轉(zhuǎn)到 WinForm上一兩年的開發(fā)人員們都很困惑,WinForm究竟還有沒有未來。微軟只是模糊地說短期內(nèi)還是WinForm,長期是WPF。想想“維納斯”,“TabletPC”,“Hailstorm”,“IE Channels”等等就知道這位老大的話不能全信。到底何去何從就仁者見仁智者見智了。

英文開發(fā)社區(qū)內(nèi)有句流行的話,叫“No silver bullet”,就是說沒有萬能,沒有一個工具或方法能完美地解決所有的問題。同樣這對WPF也適用。與其說WPF是WinForm的替代品,它更像DHTML和ASP.NET??鋸堃稽c說,如果要給微軟的技術(shù)畫個家譜的話,DHTML就是WPF的直系親屬。WPF里的大量核心概念和結(jié)構(gòu),如屬性引擎、事件模型等,都是繼承自 DHTML,最大的一個不同是外觀和控件邏輯的分離。WPF應(yīng)用和DHTML應(yīng)用(HTA)的相似性也非常大,不同點是WPF應(yīng)用可以完全脫離IE。也就是說,WPF和網(wǎng)頁、ASP.NET、SVG是一套體系,可以比作XML版的Flash,而和WinForm完全不同。WPF的長項應(yīng)該是網(wǎng)頁式應(yīng)用,當(dāng)然它也可以用來做別的東西,就像Ajax可以做在線文本編輯器一樣。

也許有人還沒聽說過DHTML。DHTML即Dynamic HTML,是微軟在90年代末在IE4里支持的擴(kuò)展了的HTML,主要特征就是可以動態(tài)修改網(wǎng)頁上對象的屬性,而且具有類似Flash里的時間線,可以做動態(tài)的網(wǎng)頁。缺點是難于開發(fā)和調(diào)試。后來主要被用來做翻轉(zhuǎn)按鈕。DHTML的一個頁面集合和腳本資源一起可以打包成HTA應(yīng)用,HTA應(yīng)用可以在本機(jī)以及網(wǎng)絡(luò)上使用。但從現(xiàn)在還有多少人記得DHTML就知道這東西沒成才。

回到WPF,WPF只在XP和Vista上有完整的支持,在其他平臺和瀏覽器下,微軟提供了WPF/E(開發(fā)代號)。WPF/E的程序是非編譯的,就是說是發(fā)布源碼的,和HTML加JavaScript一樣。另外WPF/E目前只支持JavaScript。那么,WPF/E能用來做什么應(yīng)用大家也就心里明白了。要在WPF/E和Flash間選擇的話,只要想想XML和壓縮的二進(jìn)制文件的區(qū)別就行了,現(xiàn)在幾兆的Flash比比皆是,改用XML格式的話會有多大,諸位心里明白。不過要是個網(wǎng)頁Form應(yīng)用的話,WPF/E確實比Flash更強(qiáng)一些,不過有Ajax在,殺雞未必要用牛刀。如果你的應(yīng)用只支持XP 和Vista,那么你可以得到WPF的全部優(yōu)勢。

WPF有三種應(yīng)用模式:應(yīng)用、瀏覽應(yīng)用、文檔應(yīng)用。應(yīng)用就是一般的窗口應(yīng)用,瀏覽應(yīng)用就是象網(wǎng)頁一樣的一頁一頁的應(yīng)用,文檔應(yīng)用是用來顯示內(nèi)容的瀏覽應(yīng)用功能子集,而不是MVC模型。一般應(yīng)用其實也就是每個頁面擁有一個獨立的窗口。估計VB用戶想到了當(dāng)年的html控件,Delphi用戶想到了 IntraWeb。簡單的理解就是把WinForm界面換成了網(wǎng)頁,當(dāng)然這個網(wǎng)頁的功能比HTML強(qiáng)得多,也復(fù)雜得多。

WPF是一套很復(fù)雜的體系,它的界面可以用代碼生成,不過絕大多數(shù)人都會用XAML來生成。XAML可以認(rèn)為是WPF的HTML。制定標(biāo)準(zhǔn)的人總是說 XML是可讀的,但多數(shù)人認(rèn)為它是用來給機(jī)器讀的。XMAL基于XML,同時做了相當(dāng)?shù)臄U(kuò)展以彌補(bǔ)功能的不足。要手寫XAML,必須了解WPF,了解 XML(namespace,link等等),了解XAML的規(guī)則,了解XAML擴(kuò)展的語法,能夠記住大量的標(biāo)識符和引用關(guān)系。就像今天人們大多不再手寫 HTML一樣,人們大多不會愿意去手寫更復(fù)雜的XAML。而且按照微軟的設(shè)計目標(biāo),WPF要將界面設(shè)計和程序邏輯分開,交給不同的專業(yè)人員去做。也就是說,界面的設(shè)計是要交給美工的。相信我,找一個能夠手寫XAML的美工很難。微軟為此提供了Expression系列軟件,當(dāng)然不是免費的。當(dāng)然 VisualStudio里也有一定程度的支持,但這意味著由程序員來做靈活復(fù)雜的界面,更容易做出丑陋的界面;或者讓美工來用 VisualStudio,功能有限而且有點昂貴。當(dāng)然也可能有個不錯的UI程序員,兩全其美;或者老老實實地做簡單樸素的界面,以后有機(jī)會再找美工潤色。

程序員都喜歡談?wù)撍俣?。WPF是可以硬件加速的,在DirectX 9級顯卡和安裝了較新的驅(qū)動的情況下,WPF會得到部分或完全的硬件加速。WinForm是基于GDI+的,沒有硬件加速,只有v2.0里的非兼容模式下的文本是通過GDI加速的。所以,長遠(yuǎn)來說,WPF有更好的性能。

那么現(xiàn)在回到最初的問題,WPF和WinForm,賭注該壓哪一邊。編輯器類程序是難以移植到WPF的,如World、Excel、 PowerPoint、Photoshop、IDE等。顯示類和一般的商務(wù)類應(yīng)用都是可以移植的,現(xiàn)有的Web應(yīng)用都是可移植的。也就是說,WPF的應(yīng)用范圍和Ajax、Flash是有很大重合的,WPF的競爭力就是在和代碼的集成上。隨著Adobe加緊升級Flash的應(yīng)用功能,一種可能的結(jié)果是WPF 和Flash壓縮了Ajax的生存空間,WPF/E沒有獲得足夠的支持,WPF成為Windows專用的應(yīng)用,F(xiàn)lash作為跨平臺方案存在。而對 WinForm程序來講,嵌入一些WPF內(nèi)容是容易的。在WPF前途未卜的情況下,WinForm仍然是目前一般應(yīng)用最穩(wěn)妥的途徑。


[討論]對比MFC ,Winform ,WPF

對比MFC ,Winform ,WPF
MFC 生成本機(jī)代碼,自然是很快。可是,消息循環(huán),減緩了界面顯示速度。

winform 封裝了 win32 的api,多次進(jìn)行P/invoke 操作 (大部分使用p/invoke操作封裝),速度慢。

wpf是一種新的模型,不再使用win32 模型,自己新建模型,使用dx 作為新的顯示技術(shù),直接訪問驅(qū)動程序,加快了運(yùn)行速度,可是,這種模型,需要支持dx 9 的顯卡,硬件要求高(你還能找到現(xiàn)代機(jī)器不支持dx9 的嗎?)

開發(fā)效率上,MFC <WPF <winform

盡管MFC開發(fā)界面執(zhí)行效率高但是開發(fā)效率低,作為現(xiàn)在的項目開發(fā)來說時間跟開發(fā)效率往往能決定項目的成敗,所以除非有特別的需求,否則都回盡量避免用mfc來做開發(fā),MFC只是一個弱封裝器。

開發(fā)成本,MFC〉wpf〉winform

用MFC開發(fā)成本太高,對開發(fā)者能力要求更高,作為客服當(dāng)然希望開發(fā)的費用越少越好,開發(fā)者當(dāng)然希望錢賺得越多越好,這樣一比,這也是MFC沒落的一個很大的原因。

界面執(zhí)行效率上,MFC==WPF〉winform

隨著計算機(jī)硬件的性能提高,多核cpu的普及,它們的差距會越來越小。

開發(fā)靈活性上:wpf〉MFC〉winform

美觀上:Wpf〉winform〉MFC

這一項中MFC下要開發(fā)出一個華麗的ui極其困難,也許你可以說你可以用控件,但是商業(yè)開發(fā)控件是要收費的!!Wpf很容易就可以做出vista那樣的ui特效。mfc要寫出這種效果不知要寫到何年何月。
這樣一來MFC存在的價值就更低了。效率和美觀不如Wpf,開發(fā)效率又不如winform,預(yù)計不出10年,隨著vista取代xp,mfc將會退出歷史舞臺。

內(nèi)存使用上:wpf〉winform〉MFC

隨著計算機(jī)硬件的性能提高wpf這個缺點會被忽略。

使用范圍:wpf〉MFC==winform

有以上可知:WPF 大有取代winform 和MFC之勢,從未來net的發(fā)展來看,MFC以后只會變成一種經(jīng)典,作為一種技術(shù)來供開發(fā)者學(xué)習(xí),winform和WPF兩者會并存發(fā)展,但最終都會被WPF取代,最終實現(xiàn)桌面應(yīng)用程序和瀏覽器應(yīng)用程序的統(tǒng)一。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多