国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

詳解Silverlight和WPF互相擴展

原創
開發 后端
雖然大部分Windows Presentation Format (WPF)和Microsoft Silverlight應用程序應用場景完全不同,但有時候需要同時使用這兩種技術來創建更完美的程序,當然,在這種情況下,要對其進行整合和協調,以實現高效開發和可長期維護性。

51CTO.com獨家特稿】1.更適合WPF或Silverlight的場景

WPF被設計為創建Windows桌面應用程序,具有訪問富用戶界面特征,如動畫、3D圖形、音頻和視頻,以及直接訪問圖 形加速硬件以實現更好的圖形性能。由于大部分WPF應用程序是在計算機本地運行,因此不會涉及到象Web應用程序那樣 的安全限制,因此,如果對文件系統有訪問限制的話,WPF應用程序可以只在用戶計算機上存儲少量的數據,同樣,由于 應用程序不用從遠程計算機上下載,這非常適合Microsoft .NET® Framework,可以不用包括創建它時的所有完整特性。

Silverlight 被設計為比WPF更廣闊的擴展,因為它支持多平臺,截至目前,它不僅支持Windows,還支持Mac,Novel 和Linux(Moonlight – 目前和Silverlight  1.0相當,等價于Silverlight  2.0的版本目前也正在開發中 )。

然而,為了實現這個偉大的目標,Silverlight 必須要能夠在各種瀏覽器及不同操作系統環境下能夠運行,這需要在 Silverlight 上增加一些結構性限制,因為在不同系統下對硬件驅動的方式可能不一樣,如Windows下的Direct X®和 Windows顯示驅動模型,它們在Mac和Linux上就沒有。

接下來就是Silverlight 在瀏覽器中的插件的大小了,微軟被要求省略掉.NET Framework中許多特性,否則插件過大 ,其中很多特性又不常用,對用戶而言用處不大,這會影響用戶的下載積極性,正是由于這個限制,Silverlight 短期 內還做不到WPF那么豐富的功能。

在選擇哪種技術更適合項目時,如果考慮圖形加速,或那些只有WPF中才有的特性,或者對性能要求很高時,那選擇 WPF是最恰當的,相反,如果你對性能要求不是太高,同時又想將應用擴展到Mac和Linux平臺時,那只有選擇 Silverlight 了。

2.既適合WPF又適合Silverlight的場景

最開始在WPF下開發的Windows客戶端應用程序可能會擴展到Mac或Linux平臺上運行,例如,當WPF引入時,我創建了 一個XBAP應用程序(XAML瀏覽器應用程序),它包括了我2006年在塞內加爾旅游時拍攝的照片,不幸的是,由于我們的 朋友沒有安裝.NET Framework,因此在它的電腦上不能看到這些照片,通過將這個程序轉換成Silverlight,我的朋友或 那些不想安裝.NET Framework的人都可以輕松看到這些照片了。

在Mike Tucker的博客站點上有一篇很有趣的文章,講的是最初是由Silverlight 創建應用程序,然后又轉換到WPF應 用程序的例子,Tucker在尋找一種方法來調整它的Silverlight 程序性能,但他沒有找到這樣的工具,于是決定創建一 個等價的WPF程序。

Caliburn是一個應用程序框架,它被設計用來幫助開發人員實現不同的模型,如MVC,MVP,Presentation模型(MVVM ),命令和應用程序控制器就是一個同時使用了Silverlight 和WPF開發的程序示例,與此類似,開發人員也想使用這兩 種技術創建自己定制的控制器。

3.WPF和Silverlight 特性對比

由于Silverlight 是WPF的一個大子集,Silverlight 有些特性WPF沒有,而且它們共同的技術特性其實現形式也有所 不同,Vertigo Software的Christopher Vigna允許我們使用下面的簡圖來說明這一點。

 

圖- 1 WPF和Silverlight 對比圖(2009年二月)

特性集包括依賴屬性、風格和可視化樹是兩者共同的特性,但實現方式卻不一樣

網絡上不缺乏對這兩種技術進行對比的博客文章和論壇討論主題,但由于這兩個技術都處于不停的發展階段,因此, 如果從博客文章去收集整理它們之間的不同之處顯得非常不可靠,因為你看到的博客文章可能已經過時了,如果非要說 的話,那MSDN在線幫助文件可能要算最權威的了,但它也有過期的那一天,盡管如此,它在檢查WPF和Silverlight 當前 的不同之處時還是非常有用的,它不僅說明了在編程時如何處理它們,還對未來這兩者之間可能合并的功能進行了闡述 。

3.1數據綁定

數據綁定可能是WPF給人印象最深刻的特性之一了,Silverlight  2也支持部分數據綁定功能,但有些例外,如 Silverlight  2不支持綁定一個UI元素到另一個UI元素,在WPF中一個經典的例子是Slider綁定到一個TextBox或 TextBlock上;相反,Silverlight 被限制,綁定UI元素只能綁定到標準的.NET對象上,如數值變量(如綁定一個 TextBlock到某個時間點上),Silverlight 也不支持直接綁定到XML上,但在WPF中可以通過XmlDataProvider來實現。
這并不意味著Silverlight 不能將某個UI元素的屬性值鏈接到另一個UI元素的屬性值上,只不過不是通過數據綁定 實現的;如果要在Silverlight 中實現這個鏈接功能,需要開發人員自己編寫事件處理程序,但沒有使用數據綁定那么 省事,WPF也支持事件處理程序。

為了對Silverlight 數據綁定有一個詳細的了解,我建議你閱讀Jesse Liberty和Tim Heuer合作寫的文章(鏈接地址 :http://www.devx.com/RIA/link/38130)。

領會WPF和Silverlight 包含相同的類也很重要,這也并不意味著這兩個類共享相同的成員,例如,下面的圖片說明 了WPF中的綁定類要比等價的Silverlight類具有更多的屬性,最能說明這些不同之處的是Silverlight 瀏覽器插件大小 希望做得非常小,在Silverlight 中缺少某些屬性,如ElementName屬性,正是如此,也解釋了為什么在Silverlight 中 不支持將一個UI元素綁定到另一個UI元素了。

 

圖- 2 WPF綁定類屬性列表

 

圖- 3 Silverlight 綁定類屬性列表

3.2觸發器

WPF中的觸發器已經被證明在啟動和停止動畫非常有用,不過遺憾的是,在Silverlight 中幾乎就沒有觸發器, Silverlight 只支持事件觸發器(EventTrigger)和BeginStoryboard行為,由于WPF和Silverlight 一個共同特性就是 都支持動畫,而Silverlight 又缺乏觸發器的支持,因此在那些嚴重依賴動畫的應用程序上,這是一個很大的負面影響 ,Silverlight通過使用VisualStateManager減輕了這個影響,微軟計劃將VisualStateManager移植到WPF,如果真的那 樣的話,Silverlight /WPF開發就可以聯合起來了,應用程序的聯合也就變得更簡單了。

3.3控件支持

目前,WPF比Silverlight 包含更多的控件,Silverlight 中最注目的省略是FlowDocument,ToolBar,ListView, Menu,Context Menu和Ribbon控件,在MSDN幫助文件中詳細列出了WPF有的控件和Silverlight有的控件,還有兩者都有 的控件。

Silverlight 控件開發正在飛速發展,在CodePlex網站上可以看到Silverlight 工具集,這個站點反應了微軟關于 Silverlight 控件新的開發策略,現在已經轉向開源了,目前至少有一打的控件處于開發階段,大部分都處于beta階段 ,很快你就能看到最終發行版了。

3.4 3D圖像

3D圖像在WPF中雖然還沒有得到普遍支持,但在Silverlight 中卻完全沒有支持。

#p#

4.預先規劃你的應用程序

預先規劃應用程序的***步是***確定你該做什么,實際上,在你的解決方案中同時需要WPF和Silverlight ,如果 其中一個或有其它解決方案能夠滿足你的需要,通過只構建一個解決方案而不是兩個,這樣可以大大節約工作量,而且 在只使用一種技術的前提下,你可以充分使用該技術的特性,在同時使用兩種技術的情況下,你需要考慮每個特性的兼 容性。

假設你的確需要這兩種技術,接下來你需要找出WPF和Silverlight 之間的結構化差異對項目的影響,如果WPF和 Silverlight 解決方案都還沒有完全完成,這樣特別有用,通過預先規劃可以減少實現兩個解決方案的工作量,例如, 假設有個項目的實現方法不止一個,其中一個或更多在其它技術中不可用,也可能其中一個或多個在兩種技術中都可用 。一個***的例子就是WPF中的內嵌內容可以使用下列方式實現:

<BUTTON>我的內容

</BUTTON>

但這種實現在Silverlight 中是不能工作的,一個好的解決辦法是將內容設置為屬性,這樣在兩種技術中都能工作, 如:

<BUTTON Content="我的內容">

與此類似,WPF和Silverlight 都支持通過關鍵字引用樣式設置應用程序特定元素的樣式,但只有WPF可以使用 TargetType應用隱含樣式。

接下來最關鍵的就是決定是啟動一個Silverlight 項目還是啟動一個WPF項目,我推薦只有極少例外的情況才使用 Silverlight 項目,因為Silverlight 是WPF的一個子集,你在Silverlight 中實現的應用程序特性毫無疑問可以在WPF 中通過相同的方法或類似的方法實現。

5.聯合開發指南

改善應用程序兩個不同版本之間的長期可維護性的一個絕對有效的方法是在兩個項目之間共享文件,可以在一個項目 中常見文件,然后在另一個項目中創建到該文件的鏈接即可,而不是直接拷貝一份。

 

圖- 4 添加一個文件鏈接而不復制該文件

在兩個不同的項目之間共享文件不是沒有問題,前面已經說過,在Silverlight 中能夠運行的代碼在WPF中不一定能 夠運行,在某些情況下,可以使用條件編譯來解決這個問題。

#if 

SILVERLIGHT
             //Silverlight compatible code goes here
#else
             //WPF compatible code goes here
#endif

雖然條件編譯只適合后臺代碼而不適合XAML,但幸運的是XAML在這兩種技術之間幾乎沒有不相容的地方。

2009年2月,微軟的模式和實踐組發布了Prism v2,它是一個WPF和Silverlight 混合應用指南,Prism v2由可重用代 碼庫,引用(示例)實現和文檔組成,包括許多快速入門和動手實驗,這些項目的共同目的是幫助開發人員使用WPF或 Silverlight ,或者兩者一起來創建模塊化應用程序,這里的模塊化應用程序指的是由大量分離的,松散耦合的,獨立 的片段組成的程序,這些片段之間是可以相互交互的,這里的前提是這些模塊是可以獨立開發,測試和部署的,而且這 些模塊在之后是可以獨立修改和擴展的。

Prism的初始版本僅僅將目標瞄向WPF,版本2傾向于同時用于WPF和Silverlight ,Prism V2允許在WPF和Silverlight 之間***化代碼共享,而且,引用實現和相關的文檔傾向于提供明確的指南,示例代碼則集中于WPF/Silverlight 應用 程序聯合開發。

6.開發轉換指南

現實中你可能要面對一個已經開發完成或接近尾聲的項目,你的任務是選擇一種技術來實現,這個時候你必須做出決 定,是在現有的解決方案上進行拷貝還是創建一個嶄新的方案,然后再從現有的項目中復制粘貼代碼,創建一個全新的 解決方案有一個好處就是可應用的模板會使用正確的項目設置創建,而修改現有的解決方案可能需要手工修改它們。如 果這是一個一次性轉換,那么從創建一個全新的解決方案開始是個不錯的辦法,如果不是,那你***先強迫自己了解它 們的差異。

7.小結

任何人都希望實現在WPF和Silverlight 之間的無痛快速轉換,但事實上可能會讓人失望,聯合開發需要預先做好規 劃,如果你按照正確的策略和步驟,其實還是相當可行的。

我建議的清單包括以下步驟:

(1) 是聯合開發還是進行轉換,究竟是選擇WPF還是Silverlight,都要仔細評審。

(2) 評審WPF和Silverlight 之間的不同之處,MSDN幫助文件已經詳細列出了它們之間的差異。

(3) 在評審結果基礎之上,決定是WPF還是Silverlight 更適合你的項目。

(4) 對于一個新開發的項目,決定是先創建WPF項目還是先創建Silverlight 項目(一般情況向應該先創建 Silverlight 項目)。

(5) 然后確定在這兩個項目之間有多少文件可以共享。

(6) 仔細考慮這兩個項目之間是否允許有分歧,以便確定是否可以***化使用每種技術的特性。

(7) 對于將一個現有項目要轉換成另一種技術實現,首先要決定是創建一個全新的項目,然后從現有項目中 復制粘貼代碼,還是就在現有項目基礎之上進行轉換。

【編輯推薦】

  1. 使用LINQ和ADO.NET創建 Silverlight程序
  2. 微軟MVP評Silverlight的功能特 性和價值
  3. 走向銀光 —— 一步 一步學Silverlight2

責任編輯:彭凡 來源: 51CTO.com
相關推薦

2009-08-31 16:49:23

WPF線程模型

2009-11-17 10:47:14

Silverlight

2009-12-31 16:56:40

Silverlight

2009-12-31 10:07:08

Silverlight

2009-12-23 17:42:37

WPF Control

2009-12-28 11:41:04

WPF 3.5特點

2009-12-28 10:47:58

WPF繪圖

2009-12-30 14:36:29

Silverlight

2009-12-29 18:29:09

Silverlight

2009-09-27 10:03:53

Silverlight

2009-07-27 09:46:28

Silverlight

2009-12-31 17:31:23

Silverlight

2009-02-02 10:53:34

SilverlightSilverlightRIA

2010-01-04 18:33:39

Silverlight

2009-02-20 08:54:20

DownloaderSilverlight對象

2009-12-29 17:25:36

Silverlight

2009-08-12 10:47:38

Silverlight

2024-09-09 17:00:25

XAML開發

2009-12-28 16:54:30

WPF注釋

2010-01-04 13:09:51

Silverlight
點贊
收藏

51CTO技術棧公眾號

国产麻豆一精品一av一免费| 疯狂做受xxxx高潮欧美日本| 亚洲va欧美va国产综合剧情| 黄色成人免费网| 欧美性xxxx极品hd满灌| 91xxxxx| 国产精品无遮挡| 熟女人妇 成熟妇女系列视频| 国产一区二区三区综合| 日本欧美色综合网站免费| 欧美激情视频一区二区三区在线播放 | 久久久av亚洲男天堂| 18aaaa精品欧美大片h| 日韩欧美一卡二卡| а√天堂资源地址在线下载| 欧美喷潮久久久xxxxx| 国产特黄在线| 欧美性受极品xxxx喷水| 91最新在线| 777欧美精品| 青青草视频在线免费直播| 日韩欧美国产高清| 悠悠资源网亚洲青| 最新中文字幕亚洲| 97久久综合精品久久久综合| 97视频免费在线看| 欧美日韩国产一区二区三区不卡 | 久久精品人成| 亚洲免费网址| 中文字幕一区二区中文字幕| 国产精品一区二区无线| 国产在线视频在线| 欧美高清在线精品一区| 亚洲精品少妇久久久久久 | 日本成人精品在线| 99伊人成综合| 97久久久免费福利网址| 林ゆな中文字幕一区二区| 97色在线观看| 一个色综合网| 免费日韩电影在线观看| 国产自产高清不卡| 水蜜桃色314在线观看| 成人在线视频免费看| 99久久自偷自偷国产精品不卡| 一本久道久久综合狠狠爱| 久久久国产精品麻豆| 欧美在线视频免费观看| 欧美呦呦网站| 久久久久资源| 懂色av噜噜一区二区三区av| 99爱免费视频| 日韩欧美成人精品| 少妇淫片在线影院| 国产成+人+综合+亚洲欧洲| 欧美日韩第一区| 午夜久久久久久久久久久| 26uuu亚洲综合色| 在线免费av观看| 亚洲国产天堂网精品网站| 欧美高清hd| 99高清视频有精品视频| 国产成人亚洲综合色影视| 1pon在线| 亚洲第一精品夜夜躁人人躁| 在这里有精品| 蜜桃精品久久久久久久免费影院| 不卡的av电影在线观看| 夜色资源站国产www在线视频| 亚洲精品二三区| 欧美色女视频| 日本中文字幕一级片| 亚洲综合一二区| 毛片无码国产| 99久热re在线精品996热视频| 成人涩涩免费视频| 国产二区在线播放| 九九热这里只有在线精品视| 在线成人国产| 成人黄色激情网站| 日韩大陆欧美高清视频区| 免费av一区| 青青草国产免费| 欧美三级日本三级少妇99| 91蜜桃臀久久一区二区 | 日韩精品欧美大片| 在线国产99| 色综合久久中文综合久久97| 成人精品在线| 综合一区中文字幕| 欧美三区免费完整视频在线观看| 精品精品视频| 亚洲图片欧洲图片日韩av| 无吗不卡中文字幕| 另类视频一区二区三区| 日韩精品一线二线三线| 精品国产老师黑色丝袜高跟鞋| 日本国产亚洲| 青青草原国产免费| 91精品国产综合久久精品麻豆 | 黄色免费在线播放| 欧美在线日韩在线| 国产欧美一区二区精品久导航 | 日韩欧美亚洲一区二区| 黑丝美女一区二区| 日韩中文字幕免费在线| 亚洲欧美中文日韩在线| 亚洲女同在线| 国产玉足榨精视频在线观看| 97碰碰碰免费色视频| 99精品视频在线播放观看| 日韩脚交footjobhdboots| 欧美日本亚洲| 日韩一级欧美一级| 欧美一级专区| 好吊日视频在线观看| 亚洲影院高清在线| 亚洲成在人线在线播放| 加勒比色老久久爱综合网| 成人精品小视频| 欧美理论片在线观看| 91色porny| 国产精品久久久久久久久久辛辛 | 在线免费中文字幕| 日本国产精品视频| 国产成人免费视频| 26uuu色噜噜精品一区| 中文无码久久精品| 一区二区在线观看不卡| 色狠狠一区二区三区| 99热这里只有精品7| 亚洲第一福利在线观看| 日本不卡在线视频| 久草在线资源站手机版| 五月天在线免费视频| 亚洲视频精品在线| 国产福利91精品| 四虎国产精品永久在线国在线| 女性女同性aⅴ免费观女性恋| 日韩在线高清视频| 久久久久久久久久久电影| 精品国产一区二区三区性色av| 日韩伦理在线免费观看| 日韩在线欧美在线| 国产女人18水真多18精品一级做| 男人操女人免费软件| 中文字幕一区三区| 亚洲日本中文| 成人做爽爽免费视频| 亚洲午夜精品久久久久久久久| 成人区精品一区二区婷婷| 最近最好的中文字幕2019免费 | 中文av一区特黄| 欧美美女一区| 国产区高清在线| 亚洲欧美国产精品桃花| 国产一区二区激情| 国产精品欧美综合在线| 国产精品看片资源| 欧美一乱一性一交一视频| 国产精品扒开腿做爽爽爽的视频| 中文字幕不卡一区| 波多野结衣在线播放一区| 九一国产在线| 亚洲一卡二卡| 久久精品欧美视频| 亚洲精品福利视频网站| 激情自拍一区| 九七影院97影院理论片久久 | 先锋av资源在线| 日韩av电影免费在线| 色综合亚洲精品激情狠狠| 国产精品欧美一级免费| 小处雏高清一区二区三区| 免费黄色在线观看| 大肉大捧一进一出好爽视频| 国产+成+人+亚洲欧洲| 欧美色视频一区| 男人的天堂亚洲一区| 精品国产亚洲一区二区三区| 在线观看国产高清视频| 亚洲人体一区| 日韩av手机在线观看| 欧美一区二区免费观在线| 国产亚洲精品aa午夜观看| 伊人久久大香| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 亚洲综合免费观看高清完整版 | 亚洲va久久久噜噜噜| 日本在线免费中文字幕| 亚洲人成在线影院| 久久老女人爱爱| 51精品在线观看| 最新理论片影院| 永久免费观看精品视频| 日本成人在线一区| 亚洲国产精品成人综合| 成人免费视频在线观看| 色综合视频在线观看| 精品国产sm最大网站|