溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C# Windows CE特點之模塊化的示例分析

發(fā)布時間:2021-12-01 11:10:29 來源:億速云 閱讀:140 作者:小新 欄目:編程語言

小編給大家分享一下C# Windows CE特點之模塊化的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

C# Windows CE特點之模塊化是什么呢?

C# Windows CE是模塊化的,這對可配置的操作系統(tǒng)來說是必要的。桌面版本的Windows是作為獨立的文件集來開發(fā)和使用的,然而C# Windows CE本身就是由一些模塊(像.exe的應用程序文件和像.dll的庫文件等)組成的,一些模塊又是由兩個或者更多的組件(每個組件包含Win32的某些函數(shù)或者操作系統(tǒng)的某些特性)組成的。

在開發(fā)團隊設計新的設備時,可以使用微軟一種叫做Platform Builder7的工具。Platform Builder允許第三方根據(jù)特定智能設備的需求,通過增加或者減少各種模塊來定制其操作系統(tǒng)。構建平臺時,需要“打開文件”和“保存文件”的對話框嗎?它有一個這樣的模塊;需要顯示驅動和網(wǎng)絡驅動嗎?Platform Builder可以讓你很好的調節(jié)操作系統(tǒng)的要素,以便你能夠擁有你所需要的內(nèi)容。.NET精簡框架自身也是這些可調的Platform Builder組件之一,也就是說,客戶設備也可以在其ROM8映像中包含.NET精簡框架。例如,Pocket PC 2003就將.NET精簡框架作為一個內(nèi)建組件。

在我們的培訓課上,經(jīng)常有人問起Pocket PC和使用Platform Builder構建的定制設備之間的區(qū)別與聯(lián)系。簡要的回答是,它們的核心操作系統(tǒng)都是一樣的。因此在Pocket PC和其它C# Windows CE設備之間進行軟件移植是可行的。對于Win32程序來說,問題的關鍵在于需要有支持各種設備的函數(shù)集。如果兩個使用C# Windows CE操作系統(tǒng)的設備都支持同樣的Win32函數(shù)集,Win32程序或者微軟基礎類(MFC,Microsoft Foundation Class),那么程序的移植將會相當容易??缙脚_移植通常會出現(xiàn)兼容性問題,因為在源代碼中可能已經(jīng)假定了特定的屏幕大小,特定的CPU,可安裝文件系統(tǒng)中特定的目錄名,或者是另一個應該在運行的時候查詢得到而非硬編碼寫入的系統(tǒng)狀態(tài)。

Pocket PC和Platform Builder

智能設備開發(fā)人員的問題中經(jīng)常會提及Pocket PC和Platform Builder。Platform Builder可以用來為Pocket PC創(chuàng)建定制的操作系統(tǒng)映像嗎?一般說來,答案是否定的。只有開發(fā)人員使用特殊的針對Pocket PC版本開發(fā)的Platform Builder工具時,才能創(chuàng)建定制的Pocket PC操作系統(tǒng)映像。Pocket PC設備的安全性需要保障,因為在給定平臺上安裝新操作系統(tǒng)通常都需要了解該平臺的特定知識。

對于開發(fā)人員,給定了智能設備,C# Windows CE的可配置性就意味著可以很好地調節(jié)操作系統(tǒng)來包含確切需要的特性和函數(shù)集合。這一性質對于封閉平臺(只有原始開發(fā)團隊才能進行擴展的平臺)的開發(fā)人員尤其有用。

對其它軟件開發(fā)人員來說,C# Windows CE的可配置性可能會導致一些潛在的問題與危險。特別是開發(fā)人員為多種C# Windows CE平臺開發(fā)軟件時,需要考慮對于不同的平臺,哪些Win32函數(shù)是可用的。這在開發(fā)Win32程序、庫或者開發(fā)工具時都很重要?!按蜷_文件”對話框是否存在?哪些字體是有效的?不同的設備都有什么樣的顯示屏?應該如何處理那些沒有顯示終端的平臺?

為了幫助解決這些問題,微軟在C# Windows CE 4.1的Platform Builder中定義了一套標準的軟件開發(fā)工具包(SDK,Software Development Kit)。這個SDK為進行多平臺開發(fā)提供有價值的參考資料。這一標準將幫助推進可以在多種平臺上運行的工具軟件的研制進程。這個標準SDK定義了一個大致與Pocket PC相當?shù)钠脚_,盡管兩者存在一些差異。同時,它還為新平臺的開發(fā)提供了起點(大多數(shù)平臺開發(fā)人員將可以很好地調節(jié)他們的平臺,使其庫文件和函數(shù)集能夠滿足特定平臺的需要)??梢詮腜latform Builder導出定制的SDK,以提供針對不同平臺的庫文件和為指定平臺構建本地可運行文件所需要包含文件的集合。

C# Windows CE的可配置性對Win32程序員來說不一定是好事。伴隨著可配置性,必然會出現(xiàn)一些平臺可能不支持特定程序必需的特性或者函數(shù)。下面的文字介紹了某個必需的庫文件或者函數(shù)缺失時的情況。

對缺失庫和缺失函數(shù)的響應

對缺失庫或者缺失函數(shù)如何響應與調用是由Win32還是由.NET精簡框架發(fā)起有關。在本地代碼中,如果程序引用了一個缺失的DLL文件,這個程序就不能運行,或者會給用戶一條提示信息,說明找不到這個程序或者組件。

如果本地調用的所有必需的DLL都存在,但是某些引用的函數(shù)不存在,那情況就又不一樣了。調用缺失函數(shù)會出現(xiàn)異常,但如果沒有運行調試器(運行調試器時,異常會中斷調試器),這個異常就會被忽略。

系統(tǒng)對.NET精簡框架調用缺失庫文件的要求比調用缺失函數(shù)的要求要寬松一些。當.NET精簡框架程序調用的模塊不存在時,它依然可以裝載;但是在.NET精簡框架程序中有對缺失函數(shù)的調用時,就會出現(xiàn)異常,如果不作處理,這個異常就會導致程序終止。

對.NET精簡框架程序員來說,操作系統(tǒng)的可配置所帶來的潛在問題還不能算是太大的問題。這些問題現(xiàn)在還不能徹底消失,是因為.NET精簡框架庫必須存在對最小Win32特性集的支持9。然而一旦跨過了這個極限,這對.NET精簡框架程序員就不再是問題了。現(xiàn)在這個問題依然存在,也是因為.NET精簡框架程序可以通過平臺調用(P/Invoke,Platform Invoke,本書將在第四章介紹)直接調用本地的DLL文件。

雖然C# Windows CE本身具有很強的可配置性,但目前版本的.NET精簡框架還不具備這一特性。也就是說,支持.NET精簡框架的任一平臺都應該能夠運行任一.NET精簡框架程序。因此,現(xiàn)在.NET精簡框架程序員在設計和開發(fā)軟件時暫時只考慮.NET精簡框架自身所支持的函數(shù)。

由于對.NET精簡框架類的配置是靜態(tài)的,在根據(jù)不同設備的需求進行編碼時就會有所差異。例如,Pocket PC上的程序要么是全屏運行,要么是最小化運行的;而其它使用C# Windows CE操作系統(tǒng)的設備則可能允許多個程序同時運行(與桌面版本的Windows類似)。另外可以看看Smartphone的例子,它體現(xiàn)了程序菜單的局限性,***菜單只能有兩個菜單項,而且只有右鍵菜單才能有子菜單。這些限制對維持用戶界面的一致性是必要的,因為界面提供了兩種進入程序菜單的途徑。

看完了這篇文章,相信你對“C# Windows CE特點之模塊化的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI