移动平台数据库开发心得

最近在PPC平台下开发了一个软件,在开发过程中对于移动平台下的数据库使用有了一定的心得,小记与此,请高手斧正。

一、引言

PPC的开发其实与Windows平台下的WinForm开发并没有太大的区别,所使用的开发环境为Microsoft .NET Compact Framework(CF)。.NET Compact Framework(CF)是.NET Framework的子集,其最主要的优点是与.NET Framework类库具有相同的灵活性。同时所有.NET Framework下的类和方法均能在.NET Compact Framework(CF)中使用。因此开发PPC应用程序与开发WinForm程序并没有太大的区别,需要注意的是以下几点:

1. 作为.NET Framework的子集,.NET Compact Framework并没有导入所有的引用,因此在使用一些命名空间时会出现问题,比如下面要提到的SqlClient和SqlServerCE。因此在使用前需要查看自己所要使用的命名空间是否已经导入项目中,方法是:在Visual Studio下,打开项目后,点击工具栏的项目?添加引用?点击.NET选项卡,将相应的导入项目即可。

2. 使用PPC开发项目,需要使用仿真器,因此需要正确安装仿真器。在Visual Studio 2003下,默认能使用的仿真器只有一个,但是安装了比较完整的网络协议。Visual Studio 2005下能使用的仿真器较多,但却没有安装相应的网络协议,可能是出于安全的考虑,但却给应用开发带来了不便。如果使用PPC环境开发网络应用程序,便需要安装虚拟网卡驱动程序,在微软的官网上可以下载。

3. 同时,使用PPC开发网络应用程序,需要使用ActiveSync与仿真器连接,在安装好虚拟网卡驱动程序的前提下,才能使仿真器拥有网络功能。测试仿真器是否连接好的一个简易方法就是用仿真器的IE上一下页面试试~~。当然,用PPC开发网络应用程序所需要配置的内容还远不止如此,有相应需要的可以在网上搜一下相应的内容,也可以和我交流。

二、ADO.NET

使用微软的平台开发数据库应用程序,肯定要使用ADO.NET进行数据处理的,然而在PPC的特殊应用平台下,为了程序运行的速度和效率,微软还提供了另一种截然不同的数据处理方式--SQL Server CE。

1. SQL Server CE 2.0的全名是SQL Server 2000 Windows CE Edition version 2.0,他伴随着.NET Compact Framework于2002年末推出。作为ACCESS NetFront的替代品,SQL Server CE是一个是运行在Pocket PC以及其他Windows CE平台上的一个很简化的SQL Server 2000/7.0。既可以作为PPC本地数据库程序,也可与远程的SQL Server 2000/2005进行数据更新和同步。

2. 在程序开发中使用SQL Server CE的优点是非常明显的,作为一个本地的数据库,可以将远程数据库服务器中的数据库内容下载到本地后,进行本地下的数据库增删改查的操作,在必要时再提交给远程数据库服务器进行更新。其实现本质与ADO.NET的dataset有着一定的一致性,对于远程数据库服务器的压力会有极大的降低和改善。

3. 在程序开发中使用SQL Server CE的缺点是:配置SQL Server CE的步骤比较繁琐。使用SQL Server CE连接远程SQL Server数据库时,需要使用IIS服务器通过HTTP或者HTTPS传输协议,因此,需要安装配置好IIS,同时,要求SQL Server数据库配置好本地发布。也就是说,使用SQL Server CE通过RDA(Remote Data Access)与远程SQL Server数据库进行连接,便要求SQL Server数据库和IIS都安装配置无误。但很遗憾的是,能保证这两个麻烦的家伙不出一点问题,并不是一件容易的事情,至少对于初学者而言(本人在配置过2台服务器,其中一台IIS不可用,一台数据库不能用,大概是人品比较差,呵呵)。

4. 因此,在开发程序的时候,我们的项目小组选择了另一种数据库处理方式:Sql Client。其实,Sql Client是在WinForm开发以及Web开发中使用最普遍的ADO.NET方法。作为.NET Framework的子集,.NET Compact Framework同样支持.NET Framework下的Sql Client――在项目小组为配置SQL Server CE服务器而头疼的时候,Sql Client方法为我们提供了另一条解决之路,虽然这并不是很好的解决方案。

5. 与SQL Server CE不同,Sql Client的数据库并不能保存与PPC中,换句话说,在PPC中使用SQL Client之是与远程的服务器进行数据传输和交换,因此对于网络的要求比较高,移动设备网络速率较低的现状下,方案是否可行还需要一定的测试。同样的,对于服务器的压力也相对较大――只是相对而言,Web应用对于服务器要求与之相仿。

6. 无论是SQL Client还是SQL Server CE,在编程时总会出现各种各样的错误。因此,在必要的位置使用try{}catch{}语句时非常必要的,提一个初学者易犯的错误,在使用catch时,不应该使用Exception异常类,而应该使用SqlException异常类,前者对于Sql操作异常只会给出SqlException的提示,而后者能给出详细而具体的异常提示,为你调试程序提供良好的帮助。

7. 最后,说点别的。对于一个项目而言,正确的模块划分和任务分工是非常重要的,对于项目开发中遇到的问题,急着去问别人是不应该的,也是不礼貌的,Google,MSDN,CSDN等地方都是我们寻找答案的最佳场所。对于一个技术人员而言,个人并不仅仅体现在掌握的知识上,同样体现在他对于陌生问题的处理能力上。如何快速的为自己所不了解的问题提供解决方案,是所有技术开发人员的必修课。项目开发是快乐的,希望大家能多多的与我分享项目开发的经验和乐趣。

西安交通大学微软技术俱乐部
黄海鹏
[返回][关闭]