在Windows8中编写C#/ XAML与C++/XAML WinRT应用程序的优缺点是什么?

Dr.*_*ABT 34 c# c++ xaml microsoft-metro windows-8

我想沿着将WPF/Silverlight组件移植到Windows 8的路线.对于一些上下文,该组件是一个实时WPF图表,它使用WPF/XAML和位图渲染的混合来实现高性能.

我希望该组件与Metro兼容,例如在城域模式和桌面模式下使用.我阅读了很多关于在Windows 8和C#/ XAML应用程序中创建C++/WinRT应用程序的内容,但这两个框架之间有什么区别?

如果你选择C#/ XAML而不是C++/XAML会有限制吗?还要考虑如果我坚持使用C#/ XAML,从.NET4.0到Windows8的C#/ Xaml移植会更容易,但是我能用这种方法创建一个功能齐全的Metro组件吗?

您的意见/建议表示赞赏.

编辑:

如果您投票关闭此帖子,请发表评论原因.这是一个有效的问题,有+6票,四个答案和一个最喜欢的.似乎有理由保留给我!

Jer*_*ill 22

我认为差异是一种设计选择,而不是个人对语言的偏好.偏好与VB vs C#更相关.通常,您在选择C++或.NET的任何应用程序中都会遇到相同的差异.

C++将为您提供更快的启动时间.IIRC,.NET 4.5具有自动NGENing功能(不确定它与metro应用程序的关系),因此这可能有助于缓解.NET应用程序的典型慢启动时间.

C++将为您提供较低的一般内存使用率,因为它不使用垃圾收集器.这在资源受限的设备(如平板电脑)上变得越来越重要.IIRC,.NET 4.5对GC暂停有更多的缓解(可能导致用户界面调查),它们仍然是托管代码的现实.

由于.NET和C++使用相同的WinRT框架,因此与XAML/WinRT平台交互可能没有太大的区别(技术上通过C++更快地与WinRT对象交互,但命中率非常小),但当然是您的用户C++的代码通常比.NET快.

即使与混淆的.NET代码相比,C++通常也更难以进行逆向工程.虽然狡猾的窃贼可以偷走你的知识产权.

由于.NET是为了方便开发人员和开发人员的工作效率而首先创建的,因此您可以在构建应用程序时获得更多便利选项(例如,基于反射的工具,如DI/IoC).

迭代应用程序代码可能更容易通过.NET,因为.NET编译比C++更快,但正确创建的C++项目可以大大减轻.

纯.NET项目可以支持"任何CPU",这意味着您的应用程序可以在所有受支持的WinRT平台上运行.C++项目您只需重新编译即可支持ARM,x86/64.如果.NET应用程序依赖于自定义C++组件,则必须针对每个体系结构进行编译.

因为WinRT是从头开始创建的,以支持多种语言,我对那些不熟悉C++的开发人员的建议是坚持使用.NET,但要探索从C++中受益的领域.微软在/ CX预测方面做得非常出色,大多数C#开发人员应该能够找到自己的方式.我对C++开发人员的建议是坚持使用C++并获得C++的所有好处.

  • 您可以使用C++应用程序中的C#WinRT组件.尽管开发人员应该意识到他们正在将整个CLR依赖于它...所以一些纯C++应用程序可能会避免使用它. (3认同)
  • 得到它了.对于Win8首次亮相,C#现有组件的直接端口听起来是最好的选择.但是对于更专业的应用程序,可能值得用C++开发 (2认同)