Windows_Mobile开发常见问题

Windows Mobile开发常见问题之一
------------------------------------------------------------------
1、Q:新建项目的时候选择哪个项目类型才能创建智能设备的应用程序?
   A:在Visual Studio的新建项目对话框中选择Visual C#或者Visual Basic项目类型,选择智能设备模板,然后再选择相应的设备SDK,最后选择“Device Application”,就可以创建一个移动设备的应用程序了。

2、Q:托管代码与本地代码有哪些区别?
   A:托管代码是指使用.NET Compact Framework开发的程序代码,可执行文件被编译成IL,执行时需要有.NET的运行时环境。而本地代码指用C 等语言开发的程序代码,可执行文件被编译成与CPU指令集有关的机器码,可以直接运行。

3、Q:能不能简要介绍一下Magneto里面对OTA和MMS的支持?
   A:Magneto对OTA有很好的支持,SDK文档的通讯部分中,有针对OTA的专门介绍。MMS的应用程序基本都是由第三方开发的,因为MMS是基于WAP协议的,而Magneto本身对WAP的支持也很好,具体的协议也可以在SDK文档里找到。

4、Q:请问用Visual Basic .NET开发PDA数据库程序能不能使用ADO.NET?
   A:Visual Basic .NET开发PDA数据库不需要引用System.data.oledb,只需要引用System.Data.SqlServerCe命名空间就可以了。该命名空间中的数据库操作类和ADO.NET是基本一致的。可以用它们来开发针对SQL Server CE的应用程序。

5、Q:在Visual C 2005中,可以使用.Net Compact Framework吗?
   A:不能,现在.NET Compact Framework只支持C#和VB.NET,而不支持C /CLI。但是在VS.NET 2005中可以用C 来开发Native代码来支持移动设备。

7、Q:托管性的代码执行效率怎么样?和使用Visual C 编写的代码相比较。
  A:托管代码的执行效率肯定不如本地代码高,但是托管代码也有一些好处是无法取代的。


Windows Mobile开发常见问题之二
------------------------------------------------------------------
1、Q:请问如何才能保证应用程序能够及时地释放系统资源?
   A:由于.NET Compact Framework所运行的移动设备,受限于CPU、内存、电源,因此其中的Garbage Collection时经过调整的,垃圾回收的速度比.NET Framework更快。通过调用Dispose()方法,可以立即释放掉对象所占用的非托管资源。

2、Q:在Visual Studio中可以定义一个所有文件都可以使用的宏吗?比如:#define AA,要求在所有的.cs文件中都可以使用#if AA public class A() #else public class B();
   A:可以。在VS 2005的解决方案资源管理器中,用鼠标右键单击项目,选择其属性。在属性对话框的Build页中,可以找到conditional compilation symbol,在其中输入AA,即可在该项目的所有C#源代码文件中使用这个符号。

3、Q:可以将Smartphone应用程序转换为Pocket PC应用程序吗?
   A:可以。在.NET Compact Framework 2.0中,只要您没有用到某些特殊的API,Pocket PC应用程序与Smartphone程序是可以互相转换的,只需要在控件上做些调整即可。

4、Q:.Net Framework 2.0有没有对Media coder/decoder的支持?开发第三方的媒体播放程序可以不依赖.Net CF2.0吗?
   A:.NET Compact Framework 2.0本身可以开发Direct3D Mobile的应用程序。也可以在VS 2005中以C 开发Native Code的媒体播放程序,而无须依赖.NET Compact Framework 2.0。

5、Q:使用.Net开发的智能设备程序是否比用C语言开发的程序效率低很多?
   A:使用.NET开发的程序会比使用C语言开发的本地程序要慢一些,不过对于一般的应用软件来说,下率不会差太多,除非是需要实时处理硬件或I/O的程序,必须要使用C语言进行开发之外,一般的应用程序用.NET Compact Framework开发即可,因为这样可以获得最好的灵活性和可移植性。

6、Q:用托管C 开发的应用程序执行效率会不会比用C#开发的应用程序高?
   A:不会。由於托管C 与C#源代码在经过编译之后,都将成为IL代码,由.NET Compact Framework来执行,因此在效率上不会有差别。

7、Q:请问.NET Compact Framework 2.0对于使用不同CPU的移动设备支持好吗?.NET Compact Framework 2.0在GSM应用方面有没有增强?
  A:.NET Compact Framework具有Windows Mobile跨平台的特性,因此开发时不需要考虑底层的OS、CPU和其它硬件因素。目前.NET Compact Framework对常见的CPU都能够支持,例如ARM、MIPS、SH、x86等。另外在GSM应用方面,主要针对Smartphone的应用作了加强。

8、Q:请问MFC在Windows Mobile Development中处于什么地位?Douglas Boling写的Programming Microsoft Windows CE .NET一书中好像并不推崇使用MFC开发Windows Mobile应用程序。
   A:MFC还是以本地C 的方式进行开发,其特点是执行效率高,但必须花费更多的心思在資源分配、回收等编程技巧上。如果使用.NET Compact Framework进行开发,虽然执行效率比本地程序略差,但整体而言,可移植性与灵活性都较好,而且不必为回收资源担心,开发者能够专注于真正重要的业务逻辑流程。

9、Q:.NET Compact Framework 2.0与1.0有什么区别?
   A:.NET Compact Framework 2.0主要针对1.0原有的控件及类库进行了改善,提供了更多的支持,并新增了许多类型和控件,.NET Compact Framework 2.0更加接近.NET Framework,同时在效率上也相对1.0有所提升。

10、Q:在制作安装程序的时候,如何在start->program菜单中生成程序的快捷方式?
    A:在VS 2005中建立Smart Device Cab Project,在File System页面中,可以看到Application Folder,这就是Start->Program的位置,可以先建立Primary Output的快捷方式,然后将此快捷方式移到Programs Folder,并构建Cab文件即可。

11、Q:移动设备与WEB网页设计有什么主要区别?
  A:Visual Studio开发环境中移动设备与Web设计是非常类似的 ,可以使用同样的语言进行设计, 不同的只是能够使用的类以及控件有所区别。

12、Q:.NET Compact Framework中可以实现鼠标的双击、右击、中间键单击等用户事件吗?
  A:运行Windows Mobile的设备没有鼠标,所以这些事件也不存在。对于常用的右键弹出上下文相关菜单,在触摸屏上一般用单击并且按住一段时间来实现。

13、Q:Mobile应用程序的界面处理可以使用CSS样式表吗?
  A:不可以。

14、Q:Smartphone上面能够支持横屏幕吗?
  A:不支持。

15、Q:如何在Pocket PC中调整控件的位置使得应用程序可以支持横向屏幕?
  A:可通过设置控件的Anchor和Dock属性来自适应屏幕。

16、Q:界面开发完成后,在移植方面需要注意些什么?
  A:一般来说,要移植到不同平台上必需要重新设计用户界面;可以重用的只是业务逻辑,不是用户界面。

17、Q:我在移动开发过程中用到了很多控件,难以在一页之内显示,如何为它们添加一个滚动条?
  A:可以将这些控件放到一个Panel中,并设置其AutoScroll属性为true即可;如果使用VS2005,拖拽数据源到窗体上时,会自动将所有控件包括在一个Panel里。

18、Q:TableAdapter在.NET Compact Framework 1.0中从未出现过,是新特性吗?
  A:是的,TableAdapter是.NET Compact Framework 2.0中新增加的。

19、Q:SQL Mobile带有像SQL Server那样企业管理器吗?Visual Studio 2005支持在桌面上直接查看SQL Mobile的数据库吗?
  A:您可以通过SQL Server 2005的企业管理器连接到SQL Mobile数据库进行编辑。Visual Studio 2005也支持在桌面上创建或修改SQL Mobile数据库文件。

20、Q:提交成功后如何取消保存?
  A:目前BindingSource尚不支持事务,因此提交成功后是没有办法再undo的。

21、Q:移动设备内存较小,填充DataSet是否有大小限制?
  A:DataSet在逻辑上并没有对大小的限制。但是DataSet的大小必须小于当前前的可用内存,否则会有内存分配不成功的异常出现。

22、Q:如果数据源中的数据在显示前需要处理(例如格式转换),可以使用DataBinging吗?
  A:BindingSource是直接将DataSet与控件进行关联,所以如果需要进行其他操作的话,就不能使用BindingSource。或者,可以在访问数据库后,先在DataSet里对需要转换的数据进行必要的处理之后,再进行显示。

23、Q:DataSet实际上在内存中产生了一套数据副本,如何解决版本控制的问题?
  A:DataSet本身不存在版本控制的问题。在把数据提交回SQL Mobile的时候,的确需要有一些机制来保证修改完成的数据应该是最新的,但是DataSet本身的数据结构是不会发生变化的。

24、Q:能否通过Pocket PC上的程序更新服务器上的数据库信息?
  A:可以。可以使用SQL Mobile中的RDA或者是合并复制的方法和远程SQL Server数据库进行数据同步或更新。具体的实现可以参考SQL Server相关部分的文档。

25、Q:SQL Mobile一定要要安装在移动设备上吗?
  A:是的。SQL Mobile需要安装在Windows Mobile或者Windows CE设备上。

26、Q:SQL Moble支持存储过程吗?
  A:目前还不支持。

27、Q:SQL Mobile必须和应用程序部署在同一台设备上吗?可否远程连接?它是否是一个文本数据库?
  A:是的。SQL Mobile必须和应用程序部署在同一个设备上,现在还不支持远程连接。SQL Mobile是一个文件数据库,但不是一个文本数据库。

28、Q:能不能在一些应用中以XML替代SQL的作用?
  A:可以的。XML的查询效率比SQL Mobile要低,但是在数据比较少的情况下不需要安装更多的组件,这是XML的一个优势。

29、Q: Tableadapter与DataAdapter之间有何区别?DataAdapter是多个TableAdapter的组合吗?
  A:不是的,TableAdapter是对DataAdapter的一个扩展,TableAdapter本身包括了对应数据表的信息。TableAdapter完成从数据库连接、执行SQL语句到将结果填充到DataSet中的一个完整操作,而DataAdapter只支持数据填充的操作。

30、Q:做了SQL Moblie的sdf文件后,Publications后的数据库表中会出现msrepl_tran_version或rowguid字段,这是为什么?
  A:这两个字段是为了保证数据同步,由系统自动添加的,请不要进行修改。

31、Q:网上出了个Reflector反编译工具,可以99%反编译用C#开发的EXE和DLL,怎么才能更好地保护应用程序?
  A:目前大部分应用程序采用混淆和对关键字符串加密的方式,更好的方式可能还要继续探讨。


Windows Mobile开发常见问题之三
------------------------------------------------------------------
1、Q:SQL Mobile的SQL语法和SQL Server的语法有差异么?
   A:SQL Mobile的语法和SQL Server的语法略有差异,可以从SQL Mobile的文档中查找SQL Mobile具体支持哪些SQL语句。总的来说,对绝大部分的开发来说,这些差异不会造成影响。

2、Q:SQL Mobile支持B/S模式吗?
   A:不支持。

3、Q:可以在.NET Compact Framework 1.0上访问由.NET Compact Framework 2.0产生的数据库吗?
   A:SQL Mobile数据库的格式和SQL Server CE 2.0是相同的,因此可以直接在.NET Compact Framework 1.0中进行访问。

4、Q:SQL Mobile数据库文件支持XCOPY吗?可以简单地复制到其他Windows Mobile设备上吗?
   A:是的。SQL Mobile数据库本身是一个文件数据库,直接复制到其他安装了SQL Mobile支持组件的Windows Mobile设备或模拟器上就可以使用了。

5、Q:Visual Studio .NET 2003是否支持Windows Mobile 5.0的开发?
   A:不可以,如果开发基于Windows Mobile 5.0的应用程序请使用Visual Studio 2005。

6、Q:要想从传统的PC程序员转向到移动设备的开发上来,需要在技术上作哪些准备?
   A:移动设备的开发对于基础开发语言和开发技术的要求与PC上是相同的,只需要了解移动设备在哪些方面与PC平台有所不同即可。

7、Q:C#可以开发Windows Moblie应用程序吗?
   A:可以。

8、Q:如果获取.NET Compact Framework 2.0的安装程序并将其安装到Windows Mobile 5.0设备中?
   A:Visual Studio 2005提供了.NET Compact Framework 2.0安装程序,在开发部署时会自动部署到移动设备上。

9、Q:Windows Mobile 5.0中没有集成.NET Compact Framework 2.0,是不是生成的应用程序安装包就应该带上.NET Compact Framework 2.0?
   A:技术上来说是的。但能否在应用程序中提供.NET Compact Framework 2.0取决于微软对此的授权情况。

10、Q:如何把.NET Compact Framework 2.0与应用程序一同打包发布?
    A:.NET Compact Framework 2.0有一个单独的CAB安装包,可以把此文件与应用程序打成一个安装包。

11、Q:用Visual Studio 2003开发可以获得很好的兼容性吗?
    A:用Visual Studio 2003开发的基于.NET Compact Framework 2.0的程序可以在Windows Mobile 5.0的设备上运行。

12、Q:在Windows Mobile上面是否开发COM 或者DLL?
    A:可以开发DLL动态共享库。

13、Q:C#是否支持Windows Mobile 5.0的DirectX开发?
    A:支持。

14、Q:现有的使用Visual Studio开发的Smartphone 2003应用程序,可以移植到Windows CE 5.0平台上吗?
    A:可以。

15、Q:Windows Mobile 5.0内置红外线接口API吗?
    A:Windows Mobile 5.0对红外接口的支持并没有更新,需要采用之前的方法进行红外接口的开发,例如与串口通信等。

16、Q:如何开发手机游戏,特别是能够交互的网络游戏?
    A:Windows Mobile对游戏开发的支持是比较充分的,可以采用DirectX技术进行3D或2D界面的开发;对于网络部分,Windows Mobile可以支持socket通信方式。所以,从技术上来讲,开发网络游戏是完全没有问题的。

17、Q:我们公司目前更多关注的是嵌入式领域,也就是Windows CE,而非Windows Mobile。我们主要是在关注IPTV领域,在这方面有哪些的资源?
    A:Windows CE是一种可自定义的嵌入式操作系统,适用于各种内存很少的设备。OEM可以使用Windows CE设计平台和自定义应用程序,使用户可以获得各种设备的最佳体验,例如手持设备、瘦客户机、逻辑控制器以及各种高级消费类电子产品。 Windows Mobile是基于Windows CE构建的一种完善的软件平台。与Windows CE不同,Windows Mobile Smartphone和Pocket PC操作系统专为要求特殊硬件配置的设备而设计。该软件包括标准化的接口和应用程序,可确保在各种硬件设计中的兼容性。 所以Windows Mobile和Windows CE的资源是通用的,您可以在http://www.microsoft.com/china/mobile、http://www.microsoft.com/windowsmobile/,以及微软社区http://www.microsoft.com/china/windowsmobile/communities/default.mspx获得相应的资源和帮助。

18、Q:我们在Windows Mobile上进行应用开发遇到一些底层的接口问题,如何取得微软的技术支持?
  A:微软将一如既往地对基于Windows Mobile操作系统开发的独立软件开发商和开发人员进行支持,可以直接向800-820-3800全球技术支持中心寻求支持,或者提供具体问题细节,我们将给出相应的解决方案。

19、Q:如何才能将我们的软件放到微软的Mobile2Market项目中去?对MVP有没有什么优惠?
   A:Mobile2Markert项目在中国是非常优惠的,目前对MVP没有特别优惠。另外,如何将软件放到微软的Mobile2Market中请参考http://www.microsoft.com/china/mobile/developer/developerprograms/mobile2market/default.asp。

20、Q:哪些工具可用于Pocket PC 2003开发?
  A:要构建Pocket PC 2003本机C 应用程序,您需要Microsoft eMbedded Visual C 4.0、Microsoft eMbedded Visual C 4.0 Service Pack 3,以及Pocket PC 2003 SDK。

21、Q:为了支持 Windows Mobile 2003 Second Edition 的增强功能(例如高分辨率或横向屏幕),应该在应用程序中做些什么?
  A:Windows Mobile 2003 Second Edition 提供了全新的屏幕方向和分辨率,包括针对Pocket PC的横向、方形和VGA支持以及针对Smartphone的QVGA支持。这种版本不需要新的SDK。

22、Q:Pocket PC 2002应用程序可以在Pocket PC 2003 设备上工作吗?
  A:使用文档化API且功能良好的Pocket PC 2002 应用程序无需重新编译即可在 Pocket PC 2003 设备上运行。

23、Q:如何从eVB迁移到Visual Basic .NET?
  A:从eVB迁移到Visual Basic .NET并不容易,但迁移的好处远远超过了成本: ? 数据类型更丰富:eVB只有16 字节的VARIANT;Visual Basic .NET使用.NET Framework通用类型系统。 ? 执行更快:eVB需要解释;Visual Basic .NET在执行前由JIT(实时)编译器编译为本机代码。 ? 错误处理更完善:eVB仅支持“On Error”;Visual Basic .NET支持结构化异常处理。 ? 支持结构:eVB不支持;Visual Basic .NET支持命名空间、类和结构。 ? 面向对象:eVB是面向过程的;Visual Basic .NET支持完全的OOP(面向对象编程)。 ? “一等公民”:eVB总是希望迎头赶上MFC;Visual Basic .NET则是.NET的核心。 ? 本机XML支持:eVB不支持;Visual Basic .NET支持本机XML和XML Web服务。 ? 数据模型更完善:ADO.NET远远超过了ADOCE;它是最好的数据模型。 ? 执行更安全、更可靠:eVB是一种脚本语言;Visual Basic .NET为托管代码。 ? 还有许许多多! 同时,还有各种各样的资源(从移植实验到技术文章)可以帮助开发人员进行这种过渡。

24、Q:应该使用什么开发工具来编写基于.NET Compact Framework的Pocket PC应用程序?
  A:Microsoft Visual Studio .NET 2003允许Visual Basic .NET或C#编程人员创建Pocket PC 2000、Pocket PC 2002和Pocket PC 2003设备的托管代码应用程序(即那些以.NET公共语言运行库为目标的应用程序)。要开发Pocket PC 2000和Pocket PC 2002设备的托管代码应用程序,您可以使用即装即用的Visual Studio .NET 2003。在开发过程中,Visual Studio .NET 2003将会自动地将.NET Compact Framework安装到这些设备的RAM中。.NET Compact Framework已经在所有Pocket PC 2003设备的ROM 中,而且Visual Studio .NET 2003通过Pocket PC 2003 SDK支持它。

25、Q:有什么资源可以用于进行Windows Mobile 2003 Second Edition的开发?
  A:下载新的Windows Mobile Developer资源包,其中包括白皮书以及新的和更新的代码示例。该版本不需要全新的SDK。可以用新的模拟器软件包对应用程序进行测试。eMbedded Visual C 4.0开发人员应当下载eMbedded Visual C 4.0 Service Pack 3。

26、Q:什么工具可用于Smartphone 2002开发?
  A:要开始开发Microsoft Smartphone 2002应用程序,您需要eMbedded Visual C 3.0和Smartphone 2002 SDK。两者都可以在Windows Mobile Developer获得。

27、Q:MFC或ATL可用于Smartphone 2002开发吗?
  A:不可以,Smartphone 2002不支持MFC与ATL开发。

28、Q:可以使用eMbedded Visual Basic 3.0来构建Smartphone 2002应用程序吗?
  A:不可以,不支持以Smartphone 2002为目标的eVB 开发。

29、Q:哪些工具可用于进行Microsoft Smartphone 2003开发?
  A:对于Smartphone 2003,有两种开发选择,或者通过带有Service Pack 3的eMbedded Visual C 4.0开发本机代码,或者通过Visual Studio .NET 2003开发托管代码。这两种情况都需要下载Smartphone 2003 SDK。Windows Mobile 2003 Second Edition模拟器软件包使您可以在Second Edition设备上测试应用程序。eMbedded Visual C 4.0和Smartphone 2003 SDK都可以在Windows Mobile Developer获得。


Windows Mobile开发常见问题之四
------------------------------------------------------------------
1、Q:在Smartphone 2003上可以使用.NET Compact Framework的哪一个版本?
   A:Smartphone 2003允许开发人员使用.NET Compact Framework 1.0 Service Pack 1进行编码。.NET Compact Framework可以放在Smartphone 2003的ROM中。.NET Compact Framework 1.0 Service Pack 2放在Smartphone 2003 Second Edition的ROM中。

2、Q:什么是示例Smartphone 2002设备和Smartphone 2003设备?
   A:原始的Orange SPV与Orange SPV e100运行Windows Mobile 2002。Orange和AT&T上的MPX200都是基于Windows Mobile 2002的Smartphone。Orange SPV e200运行Windows Mobile 2003。

3、Q:MFC或ATL可用于Smartphone 2003开发吗?
   A:MFC不可用于Smartphone 2003。可以使用ATL 4.0进行Smartphone 2003开发。有关ATL 4.0的更多信息,请参阅SDK文档。

4、Q:从哪里可以找到更多有关Smartphone应用程序安全模型的信息?
   A:为了帮助开发人员了解基于Windows Mobile的Smartphone应用程序安全模型,我们创作了一本白皮书。请参见http://msdn.microsoft.com/library/en-us/dnsmtphn2k3/html/smartphone_security.asp。

5、Q:可以使用eMbedded Visual Basic 3.0来构建Smartphone 2003应用程序吗?
  A:不可以,不支持以Smartphone 2003为目标的eVB开发。如果您希望利用Visual Basic的开发技巧,可以考虑使用Visual Basic .NET并以.NET Compact Framework为目标。

6、Q:什么是Microsoft eMbedded Visual Tools 3.0?
  A:eMbedded Visual Tools 3.0是一种集成开发环境(IDE),用来为基于Microsoft Windows CE操作系统的32位设备编写软件应用程序。其中包括完整版的Microsoft eMbedded Visual C 3.0语言、Microsoft eMbedded Visual Basic 3.0语言、特定于平台的SDK、远程工具和文档。

7、Q:eMbedded Visual Tools 3.0支持哪些设备平台?
   A:eMbedded Visual Tools 3.0 - 2002 Edition附带于Pocket PC 2000、Pocket PC 2002和Smartphone 2002的SDK,并支持开发自定义的Windows CE 3.0设备应用程序。注:Pocket PC 2002 SDK可以与eMbedded Visual Basic 3.0和eMbedded Visual C 3.0一起使用,但是Smartphone 2002 SDK却只受eMbedded Visual C 3.0 支持。

8、Q:什么是eMbedded Visual C 4.0?
   A:eMbedded Visual C 4.0是一种强大的开发工具,在为下一代基于Windows CE的设备(包括Pocket PC 2003和Smartphone 2003)构建本机代码应用程序时可以为企业提供相当大的好处。这种独立的集成开发环境(IDE)带来了新水平的Windows CE开发效率,但却没有牺牲灵活性、性能或控制能力。要使用eMbedded Visual C 工具构建Pocket PC 2003与Smartphone 2003应用程序,还需要安装eMbedded Visual C 4.0 Service Pack 3和Pocket PC 2003以及Smartphone 2003 SDK。

9、Q:我可以使用eMbedded Visual C 4.0开发Pocket PC或Smartphone应用程序吗?
   A:可以使用带有Service Pack 2的eMbedded Visual C 4.0来开发包括Windows Mobile 2003 Second Edition在内的Pocket PC 2003与Smartphone 2003应用程序。也可以用它来开发Pocket PC 2002或Smartphone 2002应用程序。

10、Q:我可以使用Windows CE Standard SDK开发Pocket PC或Smartphone应用程序吗?
    A:Windows CE SDK提供了一个通用的功能子集,使得编写的应用程序能够符合Standard SDK,以便运行在基于自定义显示的Windows CE .NET平台上。为了构建Pocket PC和Smartphone智能设备应用程序来利用这些平台提供的丰富的设备功能集,需要使用特定于设备的SDK。

11、Q:eMbedded Visual Tools 3.0和Visual Studio .NET之间有什么不同?
    A:eMbedded Visual Tools 3.0是一种专门针对移动与嵌入式技术开发人员的独立开发环境。对于Pocket PC和Smartphone,都可以利用eMbedded Visual Tools和适当的平台SDK来构建丰富的“本机代码”客户端应用程序。Visual Studio .NET是Microsoft的最流行桌面开发工具的最新版本。可以使用Visual Studio .NET 2003来构建基于.NET Compact Framework的Pocket PC智能客户端应用程序。同时,还可以使用Visual Studio .NET和ASP.NET移动控件构建以各种设备(包括Pocket PC和Smartphone类别的设备)为目标的基于浏览器的应用程序。

12、Q:为什么没有将eMbedded Visual C 集成到Visual Studio .NET中? 
    A:根据客户的反馈,我们最初的工作主要集中于使Visual Basic .NET开发人员能够更轻松地对设备进行编程。但是,利用本机代码(C )创建设备应用程序的功能将会集成到Visual Studio的下一个版本中。

13、Q:什么是.NET Compact Framework?
    A:.NET Compact Framework是.NET Framework的子集,设计为能运行在资源受限的设备上,以便为托管代码和XML Web服务提供支持。.NET Compact Framework大大降低了编写运行在诸如Pocket PC设备上的应用程序和服务的开发成本。由于.NET Compact Framework是开发人员用来编写桌面和服务器应用程序的.NET Framework的一个子集,所以他们已经具备了编写Pocket PC和Smartphone 2003设备应用程序所必需的全部技巧。

14、Q:使用.NET Compact Framework的主要好处是什么?
    A:目前编写设备应用程序的一个最大障碍在于,大多数设备都要求开发人员了解不同的API和使用不同的编程工具(与用于桌面应用程序相比)。由于.NET Compact Framework使用的.NET Framework编程模型和Visual Studio .NET开发工具与开发人员已经在桌面和服务器上使用的相同,所以它可以大大降低开发设备应用程序的成本,并提高开发人员的工作效率。而这些好处又能够使企业以新的方式使用智能设备,从而改进他们的业务。.NET Compact Framework也是唯一带有XML Web服务本机支持的移动开发平台。 软件开发网

15、Q:什么设备可以运行.NET Compact Framework?
    A:NET Compact Framework 1.0可以用作Pocket PC 2000和Pocket PC 2002设备(包括Phone Edition)的RAM安装,并且可以放在Pocket PC 2003的ROM中。Smartphone 2003设备包含.NET Compact Framework 1.0 Service Pack 1。所有的Windows Mobile 2003 Second Edition设备均包含.NET Compact Framework 1.0 Service Pack 2。

16、Q:何时可以使用.NET Compact Framework?
    A:.NET Compact Framework的1.0版可以作为Visual Studio .NET 2003版本的一部分使用。有关更多信息,请参阅Device Development。

17、Q:.NET Compact Framework可以运行所有的.NET语言吗?
    A:最初,.NET Compact Framework可以运行Visual C#和Visual Basic。只要其他.NET语言符合.NET Compact Framework支持的公共语言运行库子集,它们就可以运行。

18、Q:.NET Compact Framework应用程序和eMbedded Visual C 应用程序的执行情况一样吗?
    A:在大多数情况下,用eMbedded Visual C 编写的应用程序的运行速度比用Visual Basic .NET或Visual C# .NET编写的应用程序快。但是,对于应用程序计算密集的部分,开发人员将会看到他们的Visual Basic .NET应用程序比他们的eMbedded Visual Basic应用程序有实质性的改善。

19、Q:.NET Compact Framework与ASP.NET移动控件之间有什么不同?
    A:对设备进行编程有两种不同的方法。一种方法是将应用程序放置在智能设备上。另一种方法是将代码放置在服务器上,并通过浏览器呈现用户界面。.NET Compact Framework支持前者,而ASP.NET移动控件(以前称为Microsoft Mobile Internet工具包)则支持后者。使用设备上的代码构建移动应用程序使应用程序在没有Internet连接的情况下可以继续工作。直接在设备上运行的应用程序还支持更丰富的用户界面,以及与操作系统上的可用资产(例如多媒体和其他的应用程序)进行集成的可能性。可以使用.NET Compact Framework将高效模型用于构建智能设备应用程序。构建代码位于服务器的移动应用程序也有其优点。在必须使用Internet支持的各种移动设备时,这种体系结构非常有用。这些应用程序也不受资源的限制,因为它们作为桌面Web应用程序运行在相同的服务器上。在Visual Studio .NET中使用ASP.NET移动控件可以完成这些应用程序的编写。

20、Q:Visual Studio .NET 2003和Visual Studio 2005开发的Mobile在部署(方法和平台)上面有什么具体的不同?
    A:从Visual Studio 2005 beta版的情况来看,和Visual Studio .NET 2003的部署过程是相同的。在开发方面,Visual Studio 2005直接提供了Skin功能,可以使开发者在设计界面时能够更加直观。并且在调试时,其调试环境不再是在模拟器环境当中,而直接使用本地计算机的资源,调试速度更快。

21、Q:我想使用GPS采集数据,然后将数据实时显示在客户机屏幕上,采用什么连接方式比较好?
    A:数据连接的方式主要取决于GPS的类型。目前GPS接收器有两种方式,串口或USB连接和蓝牙连接。如果是串口和USB连接,你可以使用CreateFile或者OpenNETCF中的串口类进行操作;而蓝牙设备,就需要使用Windows CE的Bluetooth API了。

22、Q:怎样生成一个像PC上Setup一样的安装程序在Pocket PC上来完成安装工作?
    A:Windows Mobile设备的标准安装文件是CAB格式的。您可以在Visual Studio.NET中选择“生成CAB文件”,或者直接使用命令行工具cabwiz生成CAB文件。

23、Q:用Windows Mobile把一个XML传入Web Service,处理后返回一个XML。传入的XML可有多种形式,请问共有哪几种写法?他们有什么区别?例子:1.public XmlDo***ent GetXml(XmlDo***ent xmlfile);2.public XmlElement GetXml(XmlElement xmlfile)...返回的XML其实是个SOAP消息,如何去掉SOAP?
    A:1)建议传递参数直接传递XML格式的字符串而不要传递对象。2)Web Service传递的信息中必定有SOAP消息,如果只想传递XML实体内容的话,建议通过Http请求直接POST数据,然后返回订制好的XML格式的实体数据。

24、Q:XML数据内容的安全性如何?与SQL CE相比哪个效率更高些呢?
    A:1)XML的数据内容本质上就是纯文本,没有安全性可言。要实现安全性,您可以通过一些别的加密手段对内容进行加密。2)相比来说,在处理大数据量的时候SQL CE的处理速度要比直接处理XML快一些。


Windows Mobile开发常见问题之五
------------------------------------------------------------------
1、Q:如果创建一个XML节点<a>1<b>2</b></a>,怎样创建a节点的第一个子节点?也就是那个没有LocalName但是有InnerText的节点?
   A: XmlDo***ent doc = new XmlDo***ent();

    XmlElement a = doc.CreateElement(\"a\");
    a.InnerText = \"1\";
    XmlElement b = doc.CreateElement(\"b\");
    b.InnerText= \"2\";
    a.AppendChild(b);
    doc.AppendChild(a);
  或者:

    XmlDo***ent doc = new XmlDo***ent();
    XmlElement a = doc.CreateElement(\"a\");
    XmlText aText = doc.CreateTextNode(\"1\");
    XmlElement b = doc.CreateElement(\"b\");
    XmlText bText = doc.CreateTextNode(\"2\");
    b.AppendChild(bText);
    a.AppendChild(aText);
    a.AppendChild(b);
    doc.AppendChild(a);

2、Q:System.Environment起什么作用?
   A:System.Environment类提供有关当前环境和平台的信息以及操作它们的方法。

3、Q:100多k的数据载入都要30几秒,这个速度是否太慢了?有没有什么办法使时间提高到10秒以内? 软件开发网
   A:数据量大的情况下,建议使用XmlTextReader来读取而不要使用XMLDo***ent和DataSet来处理。

4、Q:能具体讲讲tick吗? 软件开发网
   A:Ticks的值为自0001年1月1日午夜12:00以来所经过时间,以100毫微秒为间隔表示时的数字。

5、Q:可以使用哪些库来处理XML?保存XML的常用方法有哪些?
   A:1)在.NET Compact Framework中,我们主要使用XmlDocoment对象或者是XmlTextReader以及XmlTextWriter对象来处理XML数据。2)使用XmlDo***ent的Save方法或者XmlTextWriter可以很方便地将XML数据保存成文件。

6、Q:有没有一个标准来区分是使用XmlReader好还是XmlDo***ent好?
   A:XmlDo***ent类因为采用的是W3C的DOM模型所以在遇到大型XML数据的时候性能偏低,但是XmlDou***net类支持修改和删除;而XmlReader虽然性能较好但是是只读的。

7、Q:Xml序列化后的数据,PDA能读取吗?有能读取条码的PDA吗?
   A:XML序列化之后的数据就是XML文本,可以用PDA读取。市面上有可以读取条形码的PDA,具体型号可以自行搜索。

8、Q:请问有没有使用XML和SQL Mobile的性能对比方面的数据?
   A:没有。

9、Q:Windows Mobile 5.0中Pocket IE支持AJAX吗?或者.NET Compact Framework 2.0有些什么样的支持吗?
   A:AJAX其实是一组技术的一个集合,主要是DHTML、Javascript、XML等等,Pocket IE支持其中的很多特性,具体请参见http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceinternet5/html/wce50oripocketinternetexplorer.asp。至于.NET Compact Framework 2.0(包括.NET Freamework 2.0)中,并没有对AJAX做什么样特殊的支持。

10、Q:请问XML跟HTML最大的区别是什么?它的优越性主要在哪里?
    A:XML注重对数据内容的描述,HTML注重数据表现的描述。优势在于XML可以将数据内容和显示分离。

11、Q:Mobile 5.0是否支持.NET Remoting?
    A:很遗憾,在.NET Compact Framework 2.0中尚不支持Remoting。


12、Q:既然XML的效率不高,能处理的数据量不大,在哪些实用场合中使用XML更合适?
    A:在处理小数据量的数据,以及一些非结构化的不适于数据库存储的数据的时候用XML比较方便。


13、Q:在Mobile开发的时候,考虑到程序的运行性能,怎样处理好使用技术和硬件约束的矛盾呢?有没有一个量化的标准?
    A:没有量化的指标,实践是检验的指标。

14、Q:Window PC上的程序移植到CE上时,XML文件读写什么要注意的地方?
    A:.NET Compact Framework上的XML处理方式比完整版的.NET Framework要少很多可用的类和方法,需要加以修改。同时,在Mobile设备上,性能的优化很重要。

15、Q:如果要在.NET Compact Framework 1.0上写XML反序列化为对象的方法时,该怎样进行类型转换呢?
    A:在.NET Compact Framework 1.0中不支持XML序列化,所以反序列化XML数据到对象的工作相对比较麻烦,可以自行定义一套XML数据的Schema来规范XML数据中的结构,然后再来解析它生成对象。

16、Q:既然不建议使用Web Service返回DataSet,那么使用什么方式将信息反馈回客户端好呢?能给一些建议吗?比如将一张表的信息通过Web Service反馈回客户端?
   A:建议通过纯粹的字符串数组等来传递数据,Mobile端接受到之后再将其转换为本地便于处理的对象。

17、Q:调用窗体的this.Close()方法是否将该对象在内存中销毁?
    A:是的。

18、Q:使用什么方法能在打开SIP键盘输入框时,不会挡住该范围内的控件?
    A:应该尽可能不在屏幕下方80个像素之内的区域中放置输入控件,如果一定要放置,可以在激活SIP时调整控件位置或者使用滚动条来让控件不被遮挡。

19、Q:设置用户界面在Pocket与Smartphone有什么需要注意和区别的地方吗?可具体讲解一下InputPanel控件吗?
    A:最大的区别是Pocket PC和Smartphone可以使用的控件不同,例如最常用的Button控件在Smartphone中不能使用,还有一点就是Smartphone不支持手写。InputPanel控件的功能是控制Pocket PC上的软输入面板(SIP),其用法十分简单,属性和事件非常少,可自行查找MSDN上面的文档。 软件开发网

20、Q:请问,如何在Visual Studio 2005中制作手机安装程序?
  A:在Visual Studio 2005创建Smart Device CAB Project类型的项目即可。

21、Q:.NET 2.0中的开发的控件可以在.NET 1.0中使用吗?
  A:不可以。

22、Q:string d1 = DateTime.Now.ToString(\"yyyymmddhhmmssfff\"); DateTime.P***(d1);为什么遮掩做会出现错误?
  A:DateTime.P***只能针对当前区域性初始化的DateTimeFormatInfo中的格式信息来分析字符串,不可能识别自定义的日期格式字符串。

posted @ 2010-12-01 15:05  Wolves  阅读(496)  评论(0编辑  收藏  举报