C# Windows CE特点之可移植性是什么?让我们来看看。
一个成功的操作系统,必然在应用程序和设备驱动这两种关键软件的可用性上有特别之处。
如果每类软件没有达到一定数量,这个操作系统的能力就肯定会有所限制。为了解决这一问题,微软在增强已有软件对C# Windows CE的可移植性方面做了大量工作,目的就是要在构造成功C# Windows CE环境的同时,使软件开发人员能够方便地利用已有的成功软件。
首先,微软将Win32 API设置为C# Windows CE应用程序和设备驱动的***编程接口。正如本章前面所介绍的,自从1992年Win32 API问世以来,在微软所有的Windows操作系统中,它都占据着重要地位,C# Windows CE也不例外。
在C# Windows CE中,也可以使用其它桌面版本的编程接口。这其中包括MFC库,这个库为C++程序员提供面向对象的Win32 API。另外还包括ActiveX模板库(ATL,ActiveX Template Labrary),这是***个支持Internet Explorer中简单ActiveX控件的库。还有eMbedded Visual Basic,它是桌面版Visual Basic环境的简装版本。(Pocket PC 2003将是***支持eMbedded Visual Basic的设备,将来, eMbedded Visual Basic程序员需要转为使用.NET精简框架,或者使用像NS-BASIC10这样的第三方工具。)
为了支持新设备驱动的开发,C# Windows CE设备驱动都尽可能遵循桌面版本的Windows NT/2K/XP驱动模型。这在网络(NDIS)驱动方面成为了现实,显示终端、打印机、键盘和USB等设备驱动也是如此。对这些驱动基本的做法就是简化、缩简桌面版本的相应驱动。设计驱动的指导思想和体系结构都包含在桌面版本的驱动程序中,但是更好的方法就是鼓励桌面驱动的作者去开发基于C# Windows CE的设备驱动。
Win32 API被设计为一种可移植的编程接口,使其可以在不同的CPU平台之间实现源代码级移植11。其目标是使独立的主体源代码通过重新编译后可以在不同的CPU环境下运行,这在C# Windows CE中大部分已经成为了现实。几乎每个C# Windows CE开发人员都利用了这一设计,有时甚至是不经思考的。假设有一个开发人员,他为基于StrongARM的Pocket PC开发软件,那么他如何从源代码移植中受益呢?显然,如果他能重用桌面版本(或服务器版本)Microsoft Windows中的代码,那么他就已经受益了。
另外,它还可以使用在基于x86的开发环境中运行的Pocket PC模拟器。模拟器在Windows 2000或者Windows XP的一个窗口中运行与Pocket PC中一样的软件。Pocket PC程序在模拟器上运行时实际使用的是本地的x86指令;而同样的程序在实际的Pocket PC设备上编译运行时,使用的则是它的StrongARM(或者XScale)处理器,只是这个程序可能需要重新编译为StrongARM的可执行程序。
.NET精简框架将可移植性的概念更深入了一步,它支持不同处理器平台之间的二进制移植。一经编译,独立的.NET精简框架(.exe)程序就可以无需改变地运行,只要有.NET精简框架环境,任何处理器支持都可以,如StrongARM、MIPS、SH3、SH4和x86的CPU。另外,同样的可执行程序也可以在桌面版本Windows的.NET框架1.1版本中运行12。
能够做到这一点是有原因的。首先,编译.NET程序时与C或C++程序的不同在于,其生成的可执行文件不是特定CPU的机器代码,而是与CPU无关的机器级语言,也就是微软中间语言(MSIL,Microsoft Intermediate Language),有时也叫做通用中间语言(CIL,Common Intermediate Language)。
允许.NET精简框架程序在桌面版本.NET框架中运行的第二个因素是我们马上要介绍的C# Windows CE编程接口与桌面版本编程接口的兼容性。
C# Windows CE特点之可移植性的相关内容就向你介绍到这里,希望对你了解和学习C# Windows CE特点之可移植性有所帮助。
【编辑推荐】