Windows Mobile开发:.Net精简版与原生(C++)代码的选择
我致力于一个经验丰富且多样化的开发团队,我们正在准备迎接我们的第一个针对Windows Mobile 6的移动开发(平台变更不是一个选项)。Windows Mobile开发:.Net精简版与原生(C++)代码的选择
我们在用于Windows桌面和服务器开发的Visual C++和.Net技术方面拥有相关技能和经验。
移动开发将包括一些图像处理和对蓝牙设备的读/写访问。不幸的是,我不能提供更多的细节。
我们试图在使用托管代码或本机代码编写移动客户端之间进行选择。我们将分别使用C#或C++。
我的问题是:
有多大,这些语言之间的预期差的表现?我听说移动设备上的本机代码显着加快,但我很乐意听到有经验的人。
在使用Windows Mobile服务访问蓝牙设备方面,两种语言都有哪些主要优势?
对托管代码或本机代码之间的电池寿命是否有影响?
有没有其他主要的应该知道我们要考虑?
我很感谢您的反馈。
除了在kgiannakakis提到的其他问题的伟大和长期回答,我不得不补充一些想法和观点。
在我的工作场所,我们一直在使用C++和ATL/WTL编写Windows CE 5.0应用程序。与MFC和.Net相比,这最终能够很好地工作并且非常轻巧。
需要考虑的另一点(正如这里的高级开发人员所解释的),每当应用程序切换到时,.Net压缩框架需要将字节码重新编译为机器码。这可能需要很长时间和处理器能力,所以要小心。
另一个考虑因素是内存使用情况和模块大小问题。我们遇到了移动开发中的重大问题,只是试图让操作系统将我们所有的DLL加载到内存中。与普通的Windows开发不同,32Mb的限制非常严格,必须加载所有模块。我们必须执行很多非常肮脏的技巧才能成功加载所有的东西。我们发现,即使用户打开手机或使用蓝牙设备,这些设备的驱动程序也会导致应用程序失败,因为它们会占用我们模块的空间。
考虑到这一切,我们无法在我们的应用程序中添加对.Net的支持,因为我们的应用程序会引入额外的模块权重。如果您的应用程序有很多依赖关系,您可能需要将其纳入补贴范围。
您的高级开发人员对.Net的JIT编译器以及Windows CE的工作方式感到困惑,或者您误解了他所说的内容。无论哪种方式,在WinCE中切换应用程序都没有显着的性能影响,无论这些应用程序是否为.Net。 – MusiGenesis 2009-09-16 00:43:10