2009-04-08 17 views
2

我致力于一个经验丰富且多样化的开发团队,我们正在准备迎接我们的第一个针对Windows Mobile 6的移动开发(平台变更不是一个选项)。Windows Mobile开发:.Net精简版与原生(C++)代码的选择

我们在用于Windows桌面和服务器开发的Visual C++和.Net技术方面拥有相关技能和经验。

移动开发将包括一些图像处理和对蓝牙设备的读/写访问。不幸的是,我不能提供更多的细节。

我们试图在使用托管代码或本机代码编写移动客户端之间进行选择。我们将分别使用C#或C++。

我的问题是:

  • 有多大,这些语言之间的预期差的表现?我听说移动设备上的本机代码显着加快,但我很乐意听到有经验的人。

  • 在使用Windows Mobile服务访问蓝牙设备方面,两种语言都有哪些主要优势?

  • 对托管代码或本机代码之间的电池寿命是否有影响?

  • 有没有其他主要的应该知道我们要考虑?

我很感谢您的反馈。

回答

1

一个非常相似的question被问及几天前回答。你可以在那里找到有用的信息。

简短回答您的问题:

  • 本机代码更快,但是对于许多应用程序的速度差别不会明显。不要仅仅为速度使用本地代码,除非这是您应用程序的关键因素。托管应用程序也可以运行得更快 - 启动时间可能会延长。
  • 对于.NET应用程序,有一个很好的蓝牙library。我不知道C++应用程序的类似库。
  • 这是取决于您的设计,以实现良好的电池寿命。平台的选择并不重要。
1

除了在kgiannakakis提到的其他问题的伟大和长期回答,我不得不补充一些想法和观点。

在我的工作场所,我们一直在使用C++和ATL/WTL编写Windows CE 5.0应用程序。与MFC和.Net相比,这最终能够很好地工作并且非常轻巧。

需要考虑的另一点(正如这里的高级开发人员所解释的),每当应用程序切换到时,.Net压缩框架需要将字节码重新编译为机器码。这可能需要很长时间和处理器能力,所以要小心。

+1

您的高级开发人员对.Net的JIT编译器以及Windows CE的工作方式感到困惑,或者您误解了他所说的内容。无论哪种方式,在WinCE中切换应用程序都没有显着的性能影响,无论这些应用程序是否为.Net。 – MusiGenesis 2009-09-16 00:43:10

4

另一个考虑因素是内存使用情况和模块大小问题。我们遇到了移动开发中的重大问题,只是试图让操作系统将我们所有的DLL加载到内存中。与普通的Windows开发不同,32Mb的限制非常严格,必须加载所有模块。我们必须执行很多非常肮脏的技巧才能成功加载所有的东西。我们发现,即使用户打开手机或使用蓝牙设备,这些设备的驱动程序也会导致应用程序失败,因为它们会占用我们模块的空间。

考虑到这一切,我们无法在我们的应用程序中添加对.Net的支持,因为我们的应用程序会引入额外的模块权重。如果您的应用程序有很多依赖关系,您可能需要将其纳入补贴范围。