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++的所有好处.