微軟平臺(tái)上的嵌入式開(kāi)發(fā)技術(shù)大展廳
從微軟的嵌入式 Roadmap 圖可以看到,Cashmere 代號(hào)很可能是微軟即將發(fā)布的 Windows Embedded CE (08年又被改名為 Windows Embedded Compact )的R3版本的代號(hào),Chelan 代號(hào)很可能是2010年發(fā)布的Windows Embedded CE 7.0版本的代號(hào)。
自從前年R2版本的發(fā)布到現(xiàn)在,Windows Embedded CE 已近很久沒(méi)有大的變化了,Cashmere 版本給我們帶來(lái)了不少亮點(diǎn),比如系統(tǒng)集成了 Adobe FlashLite、Gesture,優(yōu)化了網(wǎng)絡(luò)協(xié)議棧等。相關(guān)新聞?wù)埧催@,但是這些新聞的真實(shí)性我不敢保證。
本文的目的在于和各位學(xué)習(xí)討論微軟平臺(tái)上的嵌入式界面開(kāi)發(fā)技術(shù)。目前確定的是Windows Embedded CE R3版本上將支持這個(gè)最新技術(shù),很可能在Windows Embedded其它產(chǎn)品上也支持這個(gè)技術(shù),所以標(biāo)題我用嵌入式替代了Windows Embedded CE,桌面系統(tǒng)WPF、Silverlight如此多的資源也讓我們相信這一點(diǎn)。微軟總會(huì)想辦法讓它的技術(shù)在它的平臺(tái)上通用,讓其平臺(tái)下的程序員當(dāng)起來(lái)不是那么的辛苦。

目錄
如果給大家和自己帶來(lái)了價(jià)值,我想也許能繼續(xù)寫(xiě)下去。前面的文章Windows Embedded CE 6.0 Internals等系列我仍然會(huì)繼續(xù)。我簡(jiǎn)單整理了下,這個(gè)系列大概分為以下幾個(gè)部分,未來(lái)我會(huì)結(jié)合自己目前做的項(xiàng)目,將收獲和大家一起分享。這篇文章將做簡(jiǎn)單介紹。
1.微軟UX技術(shù)概述
2.Alchemy帶來(lái)的開(kāi)發(fā)流程的變化
3.Alchemy的一些Feature
4.Silverlight、Alchemy整體架構(gòu),及其比較
5.深入Alchemy
6.Alchemy的性能問(wèn)題及優(yōu)化
7.動(dòng)手寫(xiě)一個(gè)Alchemy Shell
8.將編寫(xiě)的好的Shell編譯進(jìn)內(nèi)核鏡像中
9.Alchemy對(duì)手勢(shì)(Gesture)的支持
10GPU插件的編寫(xiě)
11.把Silverlight(Web)、WPF(Desktop)應(yīng)用程序移植到Alchemy上
#p#
1.微軟UX技術(shù)概述
在博客園中我們經(jīng)??吹絊ilverlight的文章,讓我們先看一下這個(gè)技術(shù)是怎么來(lái)的。
微軟UX(User Experience,或稱(chēng)UE)技術(shù)一覽:

為了更高的開(kāi)發(fā)效率,為了滿(mǎn)足用戶(hù)更高的視覺(jué)要求,新技術(shù)就這么不停的誕生了。從1981年MS DOS的第一個(gè)Release到現(xiàn)在已近28年了,很難看到還有使用DOS API編程的。當(dāng)然使用Win32 API編程的還是挺多的,特別是Windows嵌入式開(kāi)發(fā)。當(dāng)然為了提高開(kāi)發(fā)效率,也會(huì)用上MFC或者ATL/WTL,如果你要問(wèn)用哪個(gè)適合,在這篇文章有解釋?zhuān)簭?開(kāi)始Windows Mobile 開(kāi)發(fā)。
博客園的討論最多的話(huà)題就是.Net,從.Net Framework第一個(gè)版本發(fā)布時(shí)(2002年2月13日)就作為微軟的核心產(chǎn)品。Windows Form介紹資料可以看這里。我在大學(xué)的時(shí)候自學(xué)過(guò)一點(diǎn)Asp.Net知識(shí),對(duì)Web Forms印象還在,不過(guò)說(shuō)實(shí)話(huà)當(dāng)時(shí)學(xué)的確很浮躁,從來(lái)沒(méi)有問(wèn)過(guò)自己為什么。希望你不要像我哦。如果你想找點(diǎn)介紹資料看,維基的請(qǐng)看這里,微軟的資料看這里。
跟一些人聊過(guò)WPF等新技術(shù),有人反對(duì),有人支持,不管如何我認(rèn)為作為一名技術(shù)人員,不能總隨波逐流,應(yīng)該靜下心來(lái)看看新技術(shù)到底有什么好的地方,好東西為什么不學(xué)習(xí)一下呢?如果說(shuō)Windows Form大部分是對(duì)Native Win32的“包裹”的話(huà),得到絢麗的用戶(hù)界面比較困難,那么可以說(shuō)WPF改變了這個(gè)尷尬的局面。
看看維基對(duì)WPF的解釋?zhuān)?/P>
"The Windows Presentation Foundation (WPF) is a graphical subsystem for rendering user interfaces in Windows-based applications.WPF, initially released as part of .NET Framework 3.0, is another step in Microsoft’s evolving rich client strategy. Designed to remove dependencies on the aging GDI subsystem, WPF is built on DirectX, which provides hardware acceleration and enables modern UI features like transparency, gradients and transforms. WPF provides a consistent programming model for building applications and provides a clear separation between the user interface and the business logic.” (WPF基于DirectX,提供硬件加速和一些高級(jí)的特效。目前我跟大家一樣有個(gè)疑問(wèn):Alchemy跟DirectX的關(guān)系。相信以后編寫(xiě)Alchemy GPU插件可以看到Alchemy與DirectDraw、Direct3D、OpenGL ES等的關(guān)系。)
WPF被完整的包含在Windows Vista、Windows 7、Windows Server 2008中,WPF Full package大概有200M。為了在Web和Embedded上使用這個(gè)技術(shù),微軟推出了更精簡(jiǎn)的Silverlight Web(大概有4M)和Alchemy。
#p#
一提到Silverlight大家就想到了Adobe的Flash。是的,Silverlight是如此的相似Flash,以至于開(kāi)發(fā)工具Expression Blend都像Flash的開(kāi)發(fā)工具。(我最早接觸Flash是大一的時(shí)候?qū)W習(xí)Macromedia“網(wǎng)頁(yè)三劍客”^^,好懷念!)
下圖為Expression Blend:

下圖為Adobe Flash Professional:
  
我簡(jiǎn)單跑起來(lái)自帶的SmoothBlends例子,效果挺不錯(cuò),相信在嵌入式設(shè)備上會(huì)更有吸引力:

Silverlight目前可用的學(xué)習(xí)資源已經(jīng)很多,這里就有關(guān)于Designer和Developer Workflow的介紹。我簡(jiǎn)單列了一些,當(dāng)你使用 Alchemy 時(shí),你會(huì)發(fā)現(xiàn)它們?cè)谶@些方面是通用的。
XAML是銜接Designer和Developer的關(guān)鍵:

#p#
這些經(jīng)驗(yàn)同樣可以用在Alchemy上,特別是Designer部分工作:



當(dāng)然這里的項(xiàng)目類(lèi)型現(xiàn)在看來(lái)還應(yīng)該加上Alchemy:

經(jīng)過(guò)上面這一介紹,你可能你還沒(méi)有弄清楚Silverlight、WPF、Alchemy之間是啥關(guān)系。其實(shí)它們的關(guān)系并不像三角戀那么復(fù)雜,捋一下就順了:
(1).使用相同的開(kāi)發(fā)工具(Visual Studio、Expression),Designer和Developer的協(xié)作方式是相同的(上面圖中看到的那樣)。
(2).近乎通用的XAML(Extensible Application Markup Language)和UI,Controls、Graphics、Animations等都可以定義在XAML中。
(3).下面的截圖是Silverlight支持的類(lèi),Alchemy基本與其相似,除了沒(méi)有CPanel(記的可能不準(zhǔn)確)。

#p#
2.Alchemy帶來(lái)的開(kāi)發(fā)流程的變化
從第一部分我們已經(jīng)看到帶來(lái)了什么變化。這里僅僅新技術(shù)談?wù)劷oWindows嵌入式產(chǎn)品帶來(lái)的影響。

XAML來(lái)自XML,微軟為了能夠統(tǒng)一Web、Desktop、Embedded的界面開(kāi)發(fā)而推出了XAML。XAML不光分離了Designer和Developer的工作,也為將Desktop和Web上的界面移植到Embedded設(shè)備上帶來(lái)了便捷。Alchemy給我們帶來(lái)了"Code Behind”式的嵌入式開(kāi)發(fā)體驗(yàn)。"Code Behind”式編程相信有過(guò)開(kāi)發(fā)Asp.Net網(wǎng)站的應(yīng)該都有所體驗(yàn)。
快速的UX方案將大大縮短嵌入式產(chǎn)品的開(kāi)發(fā)周期。新的設(shè)備可能僅僅只需要設(shè)計(jì)人員去設(shè)計(jì)一個(gè)新的UI。這些新的UI從哪來(lái)?也許并不需要你重新構(gòu)思,從Desktop的WPF程序、從Web的Silverlight程序中都可以輕松的移植過(guò)來(lái)。
3.Alchemy的一些Feature
這里我簡(jiǎn)單列出一些比較重要的Feature,更詳細(xì)的請(qǐng)等微軟正式發(fā)布這個(gè)技術(shù)時(shí)就可以看到了。
(1).支持Native C++ Code,不支持Managed Code。
(2).R3版本只支持2D加速,支持方式通過(guò)DirectDraw插件或OpenGL ES插件。Windows Embedded CE 7.0上將支持3D加速。
(3).支持Animation(這里不支持Adobe Flash,只支持使用Expression Blend開(kāi)發(fā)的動(dòng)畫(huà)),支持Transparency。
(4).不支持Build-in Media Control。
(5).支持Custom Control、Win32 Control,不支持Sub-Classing Control。
(6).不支持DeepZoom。不知道什么是DeepZoom?看了下面的截圖你應(yīng)該知道了:
 
4.Silverlight、Alchemy整體架構(gòu),及其比較
下圖是 Silverlight 版本1和2的架構(gòu)圖:
 
Silverlight 版本 2 支持兩個(gè)編程模型:Silverlight 的 JavaScript API 和 Silverlight 的托管 API。托管 API 基于 .NET Framework 的一個(gè)子集。Alchemy并不是基于.NET Framework,它不能使用托管語(yǔ)言(比如C#),而只能使用Native C++編寫(xiě)。在上面有說(shuō)過(guò)。

Alchemy使用的了Silverlight Core。從圖中可以看到OEM商需要編寫(xiě)的GPU插件的位置。從GPU插件中指定使用硬解碼還是軟解碼等配置。
5.深入Alchemy
這一部分可以進(jìn)一步細(xì)分成下列部分:
(1).組件詳解,包括XamlRuntime.dll、Hgcore.dll等。
(2).Alchemy編程模型
(3).Visual Host
(4).資源管理
(5).控件,包括Native Control、User Control、Custom Control、Win32 Control。
(6).事件處理,特別值得注意的是Loaded事件
(7).2D加速原理
6.Alchemy的性能問(wèn)題及優(yōu)化
未來(lái)不知微軟是否會(huì)推出相應(yīng)的工具來(lái)讓我們檢測(cè)我們開(kāi)發(fā)好的Alchemy程序的Performance(包括我們開(kāi)發(fā)的GPU Plugin),以及整體設(shè)備的Performance。如果沒(méi)有可能要我們自己做些這樣的工作,以及之后的優(yōu)化。
7.動(dòng)手寫(xiě)一個(gè)Alchemy Shell
8.將編寫(xiě)的好的Shell編譯進(jìn)內(nèi)核鏡像中
以上2部分內(nèi)容后續(xù)推出。
9.Alchemy對(duì)手勢(shì)(Gesture)的支持
Gesture架構(gòu):
 
支持這些手勢(shì):
 
在使用Map、圖片查看等Application時(shí),手勢(shì)會(huì)提供很大的便捷。但是像逆時(shí)針旋轉(zhuǎn)、順時(shí)針旋轉(zhuǎn)、半圓旋轉(zhuǎn)等手勢(shì)可能不支持。
10.GPU插件的編寫(xiě)
11.把Silverlight(Web)、WPF(Desktop)應(yīng)用程序移植到Alchemy上
以上2部分內(nèi)容后續(xù)推出。
以上就對(duì)微軟平臺(tái)上的嵌入式開(kāi)發(fā)技術(shù)進(jìn)行了一番大致的總結(jié)。本文來(lái)自王克偉的博客:《微軟最新嵌入式界面開(kāi)發(fā)技術(shù)》
【編輯推薦】















 
 
 
 
 
 
 