最近微软宣布发布了用于移动设备程序开发的.NET运行工具的最新版本。这一.NET Compact Framework为.NET开发人员打开了移动设备软件开发的新天地,但是,这一开发环境到底与它的孪兄有什么区别?显然,对于一个移动设备,将23-MB的运行库压缩到1.5MB,微软不得不丢弃了许多东西。所以,哪些是他们丢弃的?这些变化是否可以使这两个框架相互兼容?现在让我们先回答后一个问题,然后再看看精简框架与它的孪兄的主要区别。
轻便产生的问题
微软的Ed Kaim说过,建立精简框架的目的是双重的。一方面的是建立一个比完整版本更小更简洁的.NET运行框架,这一点很明显。除此之外,微软还想把所有的开发平台集中在Visual Studio .NET,这是第二个目的。
“我们希望一个Visual Studio .NET程序开发人员能在IDE中实现他所需要的东西,并在所有平台实现他的编程过程。” Kaim如此说。
微软在这一话题上发布了多种信息。最近的一次信息即为有关MSDN的“The .NET Show”,这一信息主要是讨论是在一个具体框架内编写的代码能否在另一框架内运行的话题。
对于这一疑问,Kaim指出,虽然不能达到“write once, run anywhere”(跨平台)的程度,然而却应该力求于往这样的便利发展。现有的.NET程序将需要与精简框架相兼容。他说,如果NET程序涉及到有关的移动设备软件开发的API,就需要能够在不同的运行框架上使用。
应该删除的部分
所以,标准框架中的哪些部分应该删除掉?从精简框架版本中去掉的绝大部分应该是那些过多消耗内存的资源,主要包含以下:
No ASP.NET―既然绝大多数的移动设备操作系统不能集成网络服务器,ASP.NET功能是不能缺乏的。
No Web services―虽然简洁程序不能适用网络服务,它们也不能提供网络服务功能,这主要是因为缺乏网络服务器。
Scaled-down XML support―简洁程序通过读写类而全面支持读和写的XML,但它们不支持XSLT或XPATH,主要是因为是占用过多的资源。
No typed datasets―只有返回数据集的网络服务,并且简洁程序利用数据集,这一观点才成立。
Assembly loading changes―这是很重要的技术,微软认为绝大多数的开发人员都不会在移动设备环境中错过。
除了以上这些,微软认为应该通过去掉一些帮助文件和开发人员认为多余的类,从而减小精简框架的类库的容量。
其它内容
在精简框架中,还剩下很多功能。我认为任何一个.NET开发人员都愿意使用精简框架来进行软件开发,下面是最突出的几点:
Full ADO.NET support―精简框架包含ADO.NET的全部特性:范围数据控制,XML的全部支持,SQL服务器CE提供者。
Datagrids and Treeviews―缺乏数据栅格控制严重影响开发人员使用微软提供的入口点把程序转移到移动装置的开发环境。通过反馈回来的不足,微软增加了很多标准GUI的控制,比如文本框,命令框等。
Full socket API support―如果简洁程序需要一些网络服务器功能,可以自动生成。简洁框架包含了socket程序开发对象的所有类库。
Built-in support for IR ports―这些端口主要是面对PDA的标准装置。
我的程序应该使用精简框架吗?
与所有其他开发工具一样,.NET精简框架有它独特的功能,但也有它自己的不足之处。在我的印象中它的主要缺点是不能在第一时间内获得移动设备环境下的框架运行时间,而且,不是所有支持Windows CE都支持精简框架。没有显示屏幕功能的装置出现的问题比较多。
把这些看法放在一边,精简框架却带来了移动设备的.NET平台的强大功能,能够建立一个快速开发的,高水平的,用户能够进行商业活动的软件。对于不太习惯移动设备软件开发的程序员,也适合于使用精简框架,因为可以充分使用很多传统的工具箱,比较嵌入式的Visual C++。