Windows Mobile开发:选择.Net compact与Native(c ++)代码

时间:2009-04-08 05:20:22

标签: c# .net c++ windows mobile

我在一个经验丰富且多元化的开发团队工作,我们正准备接近第一个针对Windows Mobile 6的移动开发(平台更改不是一个选项)。

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

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

我们正在尝试使用托管代码或本机代码编写移动客户端。我们将分别使用C#或C ++。

我的问题是:

  • 这些语言之间的预期性能差异有多大?我听说本机代码在移动设备上明显更快,但我很乐意听取有经验的人的意见。

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

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

  • 还有其他专业应该知道吗?

感谢您的反馈意见。

3 个答案:

答案 0 :(得分:4)

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

考虑到所有这些,我们无法在我们的应用程序中添加对.Net的支持,因为这会在我们的应用程序中引入额外的模块权重。如果您的应用程序有很多依赖项,您可能需要考虑这一点。

答案 1 :(得分:1)

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

对您的问题的简短回答:

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

答案 2 :(得分:1)

除了在kgiannakakis提到的另一个问题中的伟大和长期答案之外,我还要添加一些想法和观点。

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

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