小编给大家分享一下C# Windows CE特点之模块化的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
C# Windows CE特点之模块化是什么呢?
C# Windows CE是模块化的,这对可配置的操作系统来说是必要的。桌面版本的Windows是作为独立的文件集来开发和使用的,然而C# Windows CE本身就是由一些模块(像.exe的应用程序文件和像.dll的库文件等)组成的,一些模块又是由两个或者更多的组件(每个组件包含Win32的某些函数或者操作系统的某些特性)组成的。
在开发团队设计新的设备时,可以使用微软一种叫做Platform Builder7的工具。Platform Builder允许第三方根据特定智能设备的需求,通过增加或者减少各种模块来定制其操作系统。构建平台时,需要“打开文件”和“保存文件”的对话框吗?它有一个这样的模块;需要显示驱动和网络驱动吗?Platform Builder可以让你很好的调节操作系统的要素,以便你能够拥有你所需要的内容。.NET精简框架自身也是这些可调的Platform Builder组件之一,也就是说,客户设备也可以在其ROM8映像中包含.NET精简框架。例如,Pocket PC 2003就将.NET精简框架作为一个内建组件。
在我们的培训课上,经常有人问起Pocket PC和使用Platform Builder构建的定制设备之间的区别与联系。简要的回答是,它们的核心操作系统都是一样的。因此在Pocket PC和其它C# Windows CE设备之间进行软件移植是可行的。对于Win32程序来说,问题的关键在于需要有支持各种设备的函数集。如果两个使用C# Windows CE操作系统的设备都支持同样的Win32函数集,Win32程序或者微软基础类(MFC,Microsoft Foundation Class),那么程序的移植将会相当容易。跨平台移植通常会出现兼容性问题,因为在源代码中可能已经假定了特定的屏幕大小,特定的CPU,可安装文件系统中特定的目录名,或者是另一个应该在运行的时候查询得到而非硬编码写入的系统状态。
Pocket PC和Platform Builder
智能设备开发人员的问题中经常会提及Pocket PC和Platform Builder。Platform Builder可以用来为Pocket PC创建定制的操作系统映像吗?一般说来,答案是否定的。只有开发人员使用特殊的针对Pocket PC版本开发的Platform Builder工具时,才能创建定制的Pocket PC操作系统映像。Pocket PC设备的安全性需要保障,因为在给定平台上安装新操作系统通常都需要了解该平台的特定知识。
对于开发人员,给定了智能设备,C# Windows CE的可配置性就意味着可以很好地调节操作系统来包含确切需要的特性和函数集合。这一性质对于封闭平台(只有原始开发团队才能进行扩展的平台)的开发人员尤其有用。
对其它软件开发人员来说,C# Windows CE的可配置性可能会导致一些潜在的问题与危险。特别是开发人员为多种C# Windows CE平台开发软件时,需要考虑对于不同的平台,哪些Win32函数是可用的。这在开发Win32程序、库或者开发工具时都很重要。“打开文件”对话框是否存在?哪些字体是有效的?不同的设备都有什么样的显示屏?应该如何处理那些没有显示终端的平台?
为了帮助解决这些问题,微软在C# Windows CE 4.1的Platform Builder中定义了一套标准的软件开发工具包(SDK,Software Development Kit)。这个SDK为进行多平台开发提供有价值的参考资料。这一标准将帮助推进可以在多种平台上运行的工具软件的研制进程。这个标准SDK定义了一个大致与Pocket PC相当的平台,尽管两者存在一些差异。同时,它还为新平台的开发提供了起点(大多数平台开发人员将可以很好地调节他们的平台,使其库文件和函数集能够满足特定平台的需要)。可以从Platform Builder导出定制的SDK,以提供针对不同平台的库文件和为指定平台构建本地可运行文件所需要包含文件的集合。
C# Windows CE的可配置性对Win32程序员来说不一定是好事。伴随着可配置性,必然会出现一些平台可能不支持特定程序必需的特性或者函数。下面的文字介绍了某个必需的库文件或者函数缺失时的情况。
对缺失库和缺失函数的响应
对缺失库或者缺失函数如何响应与调用是由Win32还是由.NET精简框架发起有关。在本地代码中,如果程序引用了一个缺失的DLL文件,这个程序就不能运行,或者会给用户一条提示信息,说明找不到这个程序或者组件。
如果本地调用的所有必需的DLL都存在,但是某些引用的函数不存在,那情况就又不一样了。调用缺失函数会出现异常,但如果没有运行调试器(运行调试器时,异常会中断调试器),这个异常就会被忽略。
系统对.NET精简框架调用缺失库文件的要求比调用缺失函数的要求要宽松一些。当.NET精简框架程序调用的模块不存在时,它依然可以装载;但是在.NET精简框架程序中有对缺失函数的调用时,就会出现异常,如果不作处理,这个异常就会导致程序终止。
对.NET精简框架程序员来说,操作系统的可配置所带来的潜在问题还不能算是太大的问题。这些问题现在还不能彻底消失,是因为.NET精简框架库必须存在对最小Win32特性集的支持9。然而一旦跨过了这个极限,这对.NET精简框架程序员就不再是问题了。现在这个问题依然存在,也是因为.NET精简框架程序可以通过平台调用(P/Invoke,Platform Invoke,本书将在第四章介绍)直接调用本地的DLL文件。
虽然C# Windows CE本身具有很强的可配置性,但目前版本的.NET精简框架还不具备这一特性。也就是说,支持.NET精简框架的任一平台都应该能够运行任一.NET精简框架程序。因此,现在.NET精简框架程序员在设计和开发软件时暂时只考虑.NET精简框架自身所支持的函数。
由于对.NET精简框架类的配置是静态的,在根据不同设备的需求进行编码时就会有所差异。例如,Pocket PC上的程序要么是全屏运行,要么是最小化运行的;而其它使用C# Windows CE操作系统的设备则可能允许多个程序同时运行(与桌面版本的Windows类似)。另外可以看看Smartphone的例子,它体现了程序菜单的局限性,***菜单只能有两个菜单项,而且只有右键菜单才能有子菜单。这些限制对维持用户界面的一致性是必要的,因为界面提供了两种进入程序菜单的途径。
看完了这篇文章,相信你对“C# Windows CE特点之模块化的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。