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

标签 c# c++ xaml windows-8 microsoft-metro

我想了解将 WPF/Silverlight 组件移植到 Windows 8 的路线。关于上下文,该组件是 real-time WPF Chart ,它使用 WPF/XAML 和位图渲染的混合来实现高性能。

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

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

感谢您的意见/建议。

编辑:

如果您投票关闭此线程,请发表评论原因。这是一个有效的问题,有 +6 票,四个答案和一个最爱。把它留给我似乎是合理的!

最佳答案

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

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

C++ 不会使用垃圾收集器,因此可以降低一般内存使用量。这在平板电脑等资源受限的设备上变得越来越重要。 IIRC,.NET 4.5 对 GC 暂停有更多的缓解措施(这可能导致 UI 困惑),它们仍然是托管代码的现实。

由于 .NET 和 C++ 使用相同的 WinRT 框架,因此与 XAML/WinRT 平台交互可能不会有太大差异(通过 C++ 与 WinRT 对象交互在技术上更快,但影响非常小),但当然,使用 C++ 的用户代码通常比使用 .NET 更快。

C++ 通常更难逆向工程,即使与模糊的 .NET 代码相比也是如此。尽管狡猾的小偷无论如何都可以窃取您的 IP。

由于 .NET 最初是为了方便开发人员和开发人员的工作效率而创建的,因此您在构建应用程序时将拥有更多方便的选择(例如,基于反射的工具,例如 DI/IoC)。

通过 .NET 迭代应用程序代码可能更容易,因为 .NET 的编译速度比 C++ 快,但正确创建的 C++ 项目可以大大缓解这种情况。

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

因为 WinRT 是从一开始就支持多种语言的,所以我对不熟悉 C++ 的开发人员的建议是坚持使用 .NET,但探索受益于 C++ 的领域。 Microsoft 在/CX 预测方面做得很好,大多数 C# 开发人员应该能够找到自己的方法。我对 C++ 开发人员的建议是坚持使用 C++ 并获得 C++ 的所有好处。

关于c# - 在 Windows8 中编写 C#/XAML 与 C++/XAML WinRT 应用程序的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10031929/

相关文章:

C# Linq 完全外连接重复值

javascript - RESTful API 及相关资源

c++ - 来自 Xcode 编写的 C++ 程序的 Linux Makefile

c# - 如何使用多个 GridView ItemTemplate (WinRT/XAML)

c# - 将继承的 NHibernate-Object 转换为另一个从同一基础继承的对象

c# - 为什么 SQL Server 数据库用户写入错误的架构?

c++ - 在初始化列表中创建的 C++ 值是否进入堆栈?

c++ - 将成员函数指针强制转换为另一个类并再次返回是否安全?

wpf - WrapPanel 中的 ListViewItem 折叠时占用空间

xaml - UWP 中的 GroupBox 控件?