[Windows翻译]Windows上的C++现状

438 阅读3分钟

原文地址:kennykerr.ca/2019/01/25/…

原文作者:kennykerr.ca/

发布时间:2019年1月25日

由于2019年的国情咨文似乎被推迟了,我想我将为你提供Windows上的C++状态!而不是。

C++在总体上仍然是一种重要的编程语言,也是Windows平台上唯一有意义的系统编程语言。Visual Studio 2019版本有一些令人难以置信的改进,我希望在未来几周内分享更多的内容,但现在我想给你提供C++/WinRT的最新状态。

随着开发人员摒弃WRL和C++/CX而选择现代和标准的C++,C++/WinRT继续获得采用。你可能听说过Windows UI库最近被开源了。你是否也注意到它是完全用C++/WinRT编写的?这只是一个高调的例子,但有很多团队已经做出了转变,我们强烈不鼓励任何人在未来使用WRL或C++/CX。

即使C++/WinRT被用来实现Xaml的大部分内容,采用C++/WinRT来构建Xaml应用的速度还是很慢。认识到C++/WinRT最经常发挥作用的有三类或场景是有帮助的。

  1. 使用或调用Windows API(也就是消耗WinRT类型)。
  2. 编写Windows APIs(也就是制作WinRT类型)
  3. 编写Xaml应用程序和控件

第一个涉及使用C++/WinRT进行API调用,以实现使用蓝牙通信、流媒体和呈现视频、与Windows shell集成等功能。第二个涉及到编写提供这些功能的API,图形API,存储和文件系统API,网络API等等。第三个涉及到编写建立在Xaml框架上的应用程序和控件。虽然Xaml只是其中的一个API,但它是目前Windows上最主要的UI框架,而且它对WinRT的影响非常大,所以它应该有自己的类别。

C++/WinRT完全不折不扣地支持第一类。编写全新的WinRT API是比较麻烦的,因为开发者在实现API之前,必须先用IDL来定义API的形状。然而这并不比使用C++/CX实质上复杂,而且考虑到使用C++/WinRT的诸多好处,开发者一般都对这个交易非常满意。这是第三类,事情就在这里发生了变化。Xaml是为.NET设计的,它假设并有效地要求反射来发挥预期的功能。虽然你可以用C++/WinRT编写Xaml应用,但相当麻烦。这就是C++反射提案非常有价值的地方。

不过,我还是希望我们能扭转这种局面。对于C++开发者来说,Windows没有一个好的UI故事,这让我很痛苦。从长远来看,C++反射很可能有助于解决这个问题,但我们不能等待它的到来,所以我们也在探索其他一些可能在不久的将来被证明是有用的选择。其中一些包括不需要反射的Xaml的替代方法,以及与DevDiv讨论让Visual Studio在支持C++/WinRT开发者体验方面做得更好。

请继续关注更多关于C++/WinRT和xlang的内容。已经发生了很多事情--我只是低头把它完成,但我计划再次开始写作,并分享一些我们一直在做的工作。

下一篇:用xlang和C++/WinRT构建你的第一个控制台应用(与UWP无关)


www.deepl.com 翻译