开发Windows CE设备的应用程序是一件魔术般复杂的任务。尽管微软公司发布了两种与Visual Studio 6.0配套使用的开发者工具套件,但都没有被广泛使用:嵌入式Visual C++(eVC)以及嵌入式Visual Basic(eVB)工具套件的主要用户分别是那些编写系统程序以及垂直应用程序的公司。
事实上,许多公司在首次尝试使用eVB工具套件编写CE垂直应用程序后,常常不得不用eVC工具套件重写那些应用程序。eVB的这个严重问题与设备的Windows CE运行时刻的要求(这将导致性能以及内存利用与分配问题)有关。结果导致:在Windows CE环境下编写以及调用的绝大多数应用程序必须用C或者C++开发。
我们可以这么思考该问题:如今Windows CE开发的状态与在Visual Basic 1.0出现之前的Windows 3.x有相似之处:由于缺乏工具和库的支持,只有不多的程序员在一个并不宽广的领域内工作,而且“几乎是与裸机打交道”。基于去年我在Windows CE开发环境下使用.NET的工作经验,我认为我们可能会看到Windows CE开发的爆炸性发展――正如引入了VB之后的Windows那样。
Windows CE应用程序的类型
你可以用Visual Studio开发两种不同的Windows CE应用程序。Microsoft Mobile Information工具套件(MMIT)允许你建立thin client应用程序,它们可以在其访问设备的基础上用来(morph to)传送信息,。这就Windows CE内建浏览器以及使用WAP的移动电话都可以使用你建立的这种应用程序。当然,这就要求你按照最小共同点(the least common denominator)(WAP)编程并且运行该程序会要求宝贵的全时段连接。
另一个选择是编写驻留在Windows CE设备上并在从设备上自运行的应用程序。你可以通过在该设备上安装.NET框架的精简版(Compact Framework,即CF,约2MB)。你可以使用Visual Studio .NET 2002中两个工具(MMIT以及CF)中的任何一种(下载并安装它们的软件开发工具包)。Visual Studio .NET 2003将会把这两个工具集成到开发工具里。
现在还缺什么?
为了把.NET框架缩小到20MB并让它适合Windows CE设备有限的内存容量(目前一般在32MB到64MB之间),微软不得不做出了关于Windows CE设备在应用程序系统担当什么角色的若干重大决定。例如,由于绝大多数Windows CE设备不需要全时段(full-time)的互联网连接而且也没有本地的Web服务器,所以保留主ASP.NET应用程序以及Web服务没有多大意义。这并没有限制设备的Web服务能力,只是限制了它们充当主机的能力。
还有,由于Windows CE设备的硬件以及接口限制,没有必要支持所有的Windows控件。例如,在Windows CE环境下,Windows表单没有水晶报表控件。当然,标准控件,如文本框、列表控件、以及表格控件,得以保留。考虑到eVC和eVB工具套件没有提供表格控件,使用它们的开发者不得不创建自己的控件,.NET无疑在这个方面取得了进步。
本地数据访问
尽管一般在Windows CE设备上运行的应用程序不需要在本地保存任何数据, 然而大多数企业应用程序需要本地数据存储。这也是为什么选择使用Windows CE和CF比其它选项更有竞争力的所在。
微软公司最近发布了为CE服务的SQL Server的2.0版。这个版本的SQL Server将额外消耗2MB的内存,但是为开发移动应用程序的程序员提供了一个高性能并且熟悉的数据访问环境。它在数据库的大小和索引的数量上有限制,但是在绝大多数情况下,你将在遇到SQL资源问题之前先碰到内存限制。
当然,你也可以与CE版的SQL Server的配合下使用现有的eVB和eVC工具套件,而不使用CF。那么是什么让CF变得如此特殊?这是因为它集成了ADO.NET和SQL Server/CE。只要开发者熟悉如何在完全版.NET框架下用VB.NET或者C#开发数据库应用程序,那么他/她就就可以在Windows CE下用同样的技巧来开发应用程序。而且由于SQL Server/CE包含了客户的赋值,你可以轻松的开发通过标准HTTP连接用内建SQL Server 2000来自动下载、按复制放置配置的应用程序。
着手去干吧
在着手开发Windows CE应用程序之前,你的全部所需仅仅是安装一个带有Smart Device Extensions(其中包括CF)的Visual Studio .NET 2002的拷贝。如果你是MSDN用户,你可以下载Visual Studio .NET 2003的测试版,它集成了所有开发基于CF应用程序所需的工具。无论用上述两个途径的哪一种,你都会得到一个熟悉、健壮的、带有终端到终端(end-to-end)调试特性的Windows CE应用程序开发环境。