栏目搜索
 
 
 
 
你的位置:首页 > 移动开发 > 微软.NET手持设备开发工具包基础篇 >
 

微软.NET手持设备开发工具包基础篇

发布者:[本站编辑] | 来源:[]

微软.NET手持设备开发工具包基础篇_电脑维修资料库


  [编者按:] 随着移动通讯的发展,移动应用软件的需求也随之升温,目前移动应用软件开发工具有c++、embedded visual c++、embedded visual bsiac以及j2me系列。sun发布的midp开发工具包受到众多移动通讯厂商的支持,“基于java技术的手机”已经成了一句广告词。在这个领域微软处于困难的境地,虽然微软在evc之后又发布了evb,但evb具有vb相同的缺点,在windows条件下vb尚能被接受的话,在嵌入式开发中evb的缺点就是不容忽视的。 .net compact framework 和smart device extensions (sde) for visual studio.net是微软专门针对移动通讯设备开发的工具包,其目的就是夺取移动软件开发工具市场,或许不久我们就可以看到“基于.net技术的手机”这样的广告词。由midp到.net compact framework 和smart device extensions (sde) for visual studio.net,我们从另一个角度来看可以发现未来的开发工具将更专业。

  windows ce简述 

  microsoft windows ce是一个紧凑、高效和可扩展的操作系统,适用于各种嵌入系统和产品。它拥有多线程、多任务、确定性的实时、完全抢先式优先级的操作系统环境,专门面向只有有限资源的硬件系统。同时,它的模块化设计方式使得系统开发人员和应用开发人员能够为多种多样的产品来定制它,例如客户电子设备、专用工业控制器以及嵌入式通信设备等。

  凭借windows ce,开发者可以充分利用他们已拥有的基于windows的编程技巧。windows ce支持超过1,400条的普通microsoft win32 api和其他的编程接口,包括:

   组件对象模型(com)

   microsoft基本类库(mfc)

   microsoft activex控制

   microsoft活动模板库(atl)

   在microsoft windows ce下开发压缩和高性能的嵌入应用程序

  嵌入式系统设计员们长期被一些技术和功能性障碍所困扰,这些因素降低了产品性能和兼容性,提高了开发成本,而windows ce这个32位、与windows兼容的确定性实时操作系统消除了这些障碍。windows ce为了满足小型可扩展系统的需求而实现,这些系统在各种产品上工作:包括移动式计算机、终端、工业控制器和其他许多产品。最突出的一点是,它允许开发者使用win32 api,方便而功能强大的开发平台以及其他资源。

  windows ce的模块化设计使得它能够在大量的平台上定制使用,从客户电子设备到专用的工业控制器。由于它是模块化的,故而你能使用满足平台系统需求的最小软件模块和组件集合来设计嵌入式系统平台,从而使内存用量最小并最大可能地提高了操作系统的性能。

  windows ce直接支持多类硬件外围设备,象键盘、鼠标设备、触摸面板、串行口、以太网、调制解调器、usb设备、音频设备、并行口和存储设备(ata或闪存),同时,由于windows ce扩展了新的外围设备类型,对嵌入式系统开发者来说,在增加新的外围设备类型方面就有了巨大的潜力可挖,实现起来也很容易。这是通过windows ce简洁而良好定义的设备驱动模型来实现的,它提供了良好文档化的设备驱动程序接口(ddi)和展示如何实现它们的例程代码。这一模型使得嵌入式系统开发员(oem和ihv)很容易地为运行在windows ce平台上的设备实现自己的驱动软件。

  windows ce支持超过1,400条最频繁使用的win32 api,借此windows ce开发者就能利用大量其他的编程资源、工具、软件例子以及文档来进行windows ce开发工作。全世界有多于五百万的win32开发者,其中有些有经验的程序员可能已谙熟microsoft windows ce平台的开发工作,从而降低了培训成本,缩短了进入市场的时间。

  在windows ce平台上可以使用的数据库包括:pocket access ,sql server ce, oracle 9i lite, db2 lite等数据库。在编写数据库方面的访问时,主要使用adoce方式,即windows ce平台上的ado。

  目前windows ce的开发中,最主要的工具就是microsoft embedded visual tools 3.0(evt),其中包括 embedded visual basic ( evb )、embedded visual c++ ( evc )和分别用于不同设备的sdk。在evt之前,要开发windows ce应用的话,是通过将windows ce toolkits 嵌入vc++ 和 vb来实现的。从 evt3.0 开始微软正式的将这部分功能独立出来,形成了独立的开发软件,其中两个主要的开发工具:evc和evb在界面和开发风格上分别继承了vc6.0和vb 6.0的开发界面和开发风格。两者的功能和特性各不相同,下表为evc和evb的主要特性和他们之间的区别:

  表:evc和evb的比较:

功能与特性:evc evb模拟器,模拟器调试支持支持ce设备直接调试支持仅h/pcs、pocket pc支持h/pcs支持 支持palm-size pc支持 支持pocket pc支持支持1.0版本以上的ppc设备com组件和activex控件开发支持不支持hosting activex controls支持(很难开发)支持(很难开发)驱动开发支持不支持activesync开发支持不支持开发调试速度慢快开发自由度高低(局限于vb语法和事件)windows ce设备支持所有windowsce设备 支持ce2.11以上版本设备远程服务 支持 支持(通过winsock控件)pocket pc 新增功能 支持支持pocket pc api 支持 不支持(可通过activex控件实现)adoce 不支持 支持
  我们从上表可以看出,evc功能强大,但是开发难度大,开发速度慢;evb开发简单,尤其适合作数据库方面的开发,但是在组件开发、网络通信等方面存在缺陷。正如vb6.0和vc6.0的区别。

  在这里需要说一下的是,在windows ce .net中内置了evc 4.0(windows ce .net即windows ce 4.0,在今年1月7日在美国ce show首次露面)。evc4.0和在此之前的evt3.0没有冲突,可以共存。evc4.0的自带sdk称为standardsdk,如果使用模拟器调试,须选择win32(wce emulator)release/debug ,而不是x86....。并且evc4.0是专门针对windows ce .net系统开发而设计的。而evb已经终止于3.0版本了。淘汰evb后,他的简单和快速进行数据库开发的特性将在我们这篇文章的重点―smart device extensions for visual studio .net上有更好的表现。

  下面是一些链接地址,大家可以去了解更多的关于embedded visual tools的知识。

  关于evc4.0:

  http://msdn.microsoft.com/vstudio/device/datasheet.asp

  关于embedded visual tools 的更多详细情况和下载方式请访问微软站点:

  http://msdn.microsoft.com/vstudio/device/prodinfo.asp

  由于windows ce所应用的硬件设备的特殊性,在windows ce的开发中有一些注意事项,在这方面微软公司提供了一些建议。

  microsoft windows ce 编程的十点忠告:

  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnce21/html/msdn_10ce_tips.asp



  .net开发技术

  在介绍compact framework之前需要说明一下,由于微软公司的 .net framework 和visual studio .net 已经正式发布了一段时间了,所以在这里我们就不再就整体的 .net架构和 .net framework 加以介绍了,各为读者朋友如果不了解 .net 的话,请浏览http://www.microsoft.com 。所有的关于.net compact framework 的介绍均是基于 beta1版本。

  .net compact framework 简介

  .net compact framework(beta1),顾名思义,即紧缩版的.net 开发框架。他和smart device extensions (sde) for visual studio .net 一起,将更强的开发能力和强大的编程平台带到了手持设备的开发工作中。.net compact framework 是一个硬件无关的运行环境,他主要用在手持设备上,包括:个人数据助理(pdas) ,移动电话,机顶盒和各种运行window ce .net操作系统嵌入式设备。需要注意的是目前你使用.net技术作出的程序只能在windows系列平台上使用,但是现在ximian公司(linux上著名的xwindow系统gnome的制造商)正在推行一个在linux平台上支持.net 的项目mono(http://www.go-mono.com)相信不久的将来,.net程序一样可以在非windows的操作系统上运行。

  the .net compact framework包括一部分 .net framework 类库和部分 .net compact framework 所独有的类库。他继承了所有的.net 框架结构中的中间语言运行时和受管代码执行。

  the .net compact framework 提供了下列关键功能:

   · 程序的硬件与操作系统无关性

   · 支持公共的网络协议,无缝连接xml web services.

   · 无论开发者的目标应用或组件是提供给大范围的设备还是几个特殊的设备,他都提供一个统一的模型

   · 提供了有助于设计和优化有限的系统资源的功能

   · 包含最优性能的产生本地代码的运行时编译器

  .net compact framework 的平台结构


.net compact framework 的平台结构图
  .net compact framework 提供了对设备上的本地操作系统进行直接存取的功能。你可以有选择的的调用本地api。你可以同时运行受管的和本地的应用。

  .net compact framework的类库是.net framework中类库的一部分,一些基本类库如
  system,system.io,system.drawing,system.net,system.security,system.web,system.xml等都是.net  framework中的类库。由于篇幅有限,这里我们就不再就类库进行介绍了,有些类库我们会在开发实例中进行简单说明。

  与.net framework的比较

  我们主要从相同点和不同点两个方面来说明一下这个问题。

  相同点:

   中间语言运行时

    中间语言运行时包括受管代码执行、运行时编译器和垃圾收集。他们都遵循通用语言定义 (cls)。.net compact framework的 运行时的大小大约是整个 .net framework 运行时的12%。

   装配和文件格式

    所有的framework的应用都使用装配(assemblies). 两种frameworks 都为pe文件格式,都包括微软中间语言和定义 .net framework 应用的元数据。

   多语言支持

    跨语言支持集成在了 .net compact framework中。

   通用数据类型系统

   线程模型

     两种framework 都提供了使用主机系统的时序机制的多线程编程模型。

   标准

    两种framework的核心技术都提交给了欧洲计算机产业协会(ecma)。

  不同点:
 
   类库

    在这方面compact framework就小的多了,只有一些基本的类库。而.net compact framework中所独有的类库主要集中在红外数据传输(system.net.sockets命名空间下)和sql server ce的数据库操作(system.data.sqlserverce命名空间下)两部分。这两部分的类库是.net compact framework所特有的,在.net framework中是没有这两部分内容的。

   内存管理

    .net compact framework通过电池管理、更快速度的动态内存文件存取、最小工作区只需128 kb 到 1 mb 的动态内存和优化的硬件驱动等几种特性优化了整体系统性能。 如果系统内存缺乏时,.net compact framework将会强制的释放现在运行的代码不需要的部分数据,即使在低内存状态下,程序仍然可以运行。

   全球性

    由于.net compact framework 可以使用的资源远比完整的 .net framework少,所以他的本地化和全球化应用可以使用的资源大大减少,这部分内容主要依赖于所使用的操作系统。第一版的.net compact framework 提供了下列全球化支持:

    · 可以处理所有windows ce .net 和pocket pc 2002 所支持的所有文化、语言、地区的日期和字符。

    · 本地化的违例信息(pocket pc 2002支持的语言)

   安全特性

  在第一版本的.net compact framework中,安全政策采取了一种开放式的政策,所有的代码都具有全部权限。.net compact framework 提供了部分the .net framework的 system.security.permissions 和 system.security.policy 的类库。.net compact framework 并没有全面的提供密码服务,基于角色的安全性和基于区域的安全性。代码权限界别和各种安全特性计划在将来版本加入。


  与现有开发技术比较

  与之前的evb,evc相比,.net compact framework 和smart device extensions (sde) for visual studio.net具有很大的优势,一方面,ms所有的开发技术和开发工具都在向.net平台进行迁移。visual studio 6.0(包括vb和vc) 已经被visual studio.net所取代。在手持设备的开发中采用.net方式开发的话,你将获得.net技术的所有优势:il中间语言、类似vm(虚拟机)机制的运行时编译器(run-time)等,你将从这些特性中获得平台无关性和程序快速移植的能力。

  我们可以通过.net的优势来看一下compact framework和sde相对于evc,evb等编程工具的优势所在:

  . 提供了一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在 internet 上分布,或者是在远程执行的。

  . 提供一个将软件部署和版本控制冲突最小化的代码执行环境,您不必再担心臭名昭著的dll漏洞。

  . 提供一个保证代码(包括由未知的或不完全受信任的第三方创建的代码)安全执行的代码执行环境。由于.net程序会先编译成il(中间语言),并且有jit(just-in-time)编译器实时编译为native code(本地代码,即机器码),所以在jit编译器实时编译时完全可以控制代码本身和调用类库的安全性问题。

  . 提供一个可消除脚本环境或解释环境的性能问题的代码执行环境,我们可以不必再考虑应用平台的问题,这部分问题由.net framework负责解决。

  . 使开发人员的经验在面对类型大不相同的应用程序(如基于 windows 的应用程序和基于 web 的应用程序)时保持一致,因为在winform和webform中使用同样的基础类库,只是在涉及表现层的控件时,有点差别。

  . 按照工业标准生成所有通讯,以确保基于 .net 框架的代码可与任何其他代码集成。 并且微软公司将使.net应用可以使用多种语言编写,c++,pascal,cobol等等,其中也包括.net最大的竞争对手sun公司的java语言。

  . 在.net下进行编程,你将不必考虑垃圾收集问题,.net有自动的垃圾回收器

  基于以上优点,我想您能体会到.net的巨大力量了吧,在手持设备开发方面,尽管现在的windows ce上大多数应用还是使用的evb,evc等工具,但是不久的将来,.net的应用将快速占领这一市场。在整个手持设备开发方面.net compact framework已经落后于唯一的劲敌j2me了,不过微软公司强大的技术创新能力和市场开拓能力将弥补时间上的缺陷。

  而.net的核心语言c#是一个真正面向对象的高级编程语言,他在很多方面借鉴了java语言成功的经验并且又对java语言加以扩充。我们的示例项目都将采用c#语言编写,在这里也极力推荐大家在今后的学习和编程中使用c#这一新兴的语言。当然,你也可以使用其他语言来编写.net的应用,只要你符合.net的编程规则。

</t