[翻译搬运]Choose Your Technology(选择你的技术:C#/VB.NET还是C++)

个人理解在:https://www.pizyds.com/c-or-vb-net/

Choose Your Technology(选择你的技术:C#/VB.NET还是C++)英文原版来自MSDN-Windows Dev Center:

https://msdn.microsoft.com/en-us/library/windows/desktop/dn614993.aspx

以下为谷歌翻译……

选择您的技术

当您要创建一个新的桌面应用程序时,您所做的第一个决定是使用Win32和COM API或.NET。这两个选项都可以创建桌面应用程序,如Word,Excel和Photoshop,它们可以在经典的Windows桌面中运行,并充分利用该环境的特定功能。

 

以下是Wind32和.NET技术之间的一些主要区别,以及何时适用于此。

NET / XAML: 语言:C#,C ++,F#,VB

如果您需要更高级别的编码和生产力,或者使用较不复杂的语言,那么雇佣人才可能更容易。

您还可以通过使用便携式类库在Windows Store,Windows Phone,Windows桌面应用程序和其他Microsoft平台之间共享一些.NET Framework代码和库。

C ++和Win32: 语言:C ++与COM

如果您需要达到最高级别的性能或效率,访问本机操作系统功能或想要定位DirectX技术,则最好。

C ++和Win32可让您“靠近金属”,通过直接控制内存分配和性能导向的CPU功能(如SSE或AVX指令),让您实现最佳性能。这是将DirectX技术用于低级,高性能图形访问的最佳方式。

您可以在Windows,Windows Phone和Windows Store以及非Windows平台之间共享C ++代码。

 

选择.NET

.NET在桌面,Windows Phone和Windows Store中提供一致的一流开发体验。它提供了更高水平的编码和生产力。.NET允许您在桌面上继续开发基础应用程序,并添加令人兴奋的新体验,同时使用现有技能并在设备之间重用代码。如果您希望在任何设备上创建更多适合于平台的平台体验,Visual Studio行业合作伙伴(VSIP)将提供可重新使用C#技能和非Windows设备代码的解决方案。

除了您期望的功能(如文件/流和网络通信)之外,以下是.NET提供的一些重点,使构建应用程序非常有效:

  • 运行时生产力和安全性,如自动内存管理,类型安全,异常处理和线程管理
  • GUI技术 – 见下文
  • 丰富的收集数据类型
  • 数据建模(ADO,LINQ,WCF数据服务)
  • 语言集成查询(LINQ)
  • 日期和时间库
  • 序列化
  • 网页服务
  • 安全和密码学
  • 并行编程库

选择一个UI堆栈:桌面应用程序可以在两个UI堆栈之间进行选择。以数据为中心的应用程序受益于数据绑定功能,用于显示数据。以下提供了在两个UI堆栈之间进行选择的指导:

  • .NET Windows Presentation Foundation(WPF):这是基于Windows的桌面应用程序的首选技术,它们需要UI复杂性,样式定制和桌面图形密集型场景。WPF还利用XAML视图。您可以利用.NET 4.5中的新的简化异步功能(async / await)。WPF开发技能与Windows Store开发技能相似,因此从Windows Forms迁移到WPF到Windows Store应用程序的迁移更为容易。
  • .NET Windows窗体:。这是构建桌面应用程序的.NET Framework中的第一个UI技术。它仍然适合许多商业桌面应用程序。对于简单的场景,Windows窗体比WPF更容易使用,重量更轻。Windows窗体不使用XAML,因此稍后决定将应用程序扩展到Windows Phone或Windows Store需要完全重新编写UI。

其他功能 .NET为您提供了多种创新,可将应用扩展到新平台,而不会改变架构。您经常可以重新使用代码,以下.NET功能更容易:

  • Model-View-ViewModel设计模式(MVVM): Microsoft客户端平台(包括WPF)可以使用MVVM模式轻松构建应用程序。通过这种模式,您可以将显示屏与应用程序状态,逻辑和行为分开,从而帮助您创建可轻松在多个设备之间共享的清晰可维护的代码。
  • 便携式类库: .NET便携式库允许在多个平台(如桌面,Windows Store,Windows Phone和其他应用程序)之间共享二进制文件。使用.NET便携式库实现客户端逻辑将大大简化在多个平台上创建多个体验。
  • 使您的用户体验现代化:当今用户所要求的概念可以通过桌面版.NET的最新创新实现。通过为XAML设计采用现代UI,仔细使用动画和实现.NET异步编程,可以将现有的桌面应用程序应用于“快速流畅”,“真正数字化”或“多做少量”的设计原则广泛地

进一步的阅读和更深入,有.NET技术在各种应用中的说明和指导,为企业应用程序的.NET技术指南对此有一个总结。

选择C ++和Win32

C ++提供了广泛的Windows和非Windows平台的一流开发体验,而不依赖于像.NET这样的高级运行时环境。这使C ++成为便携式应用程序的首选语言,当某些目标平台的运行时间不可用或太重时。

使用C ++和Win32 API可以通过比.NET运行时允许的更严格的目标平台的控制来实现最高水平的性能和效率。然而,对应用程序的执行情况进行这样的控制,需要更加注意和注意才能正确使用,并且可以提高运行时性能的开发效率。

以下是C ++提供的一些功能,使您能够构建高性能应用程序。

  • 硬件级优化,包括严格控制资源分配,对象生命周期,数据布局,对齐,字节打包等。
  • 通过内在函数访问性能导向的指令集,如SSE和AVX。
  • 通过使用模板进行高效,类型安全的通用编程。
  • 高效安全的容器和算法。
  • DirectX – 特别是Direct3D和DirectCompute。
  • C ++ AMP

C ++用于游戏和图形丰富的应用程序

如果有一个域名是C ++是明确的赢家,那就是游戏 – 或者需要类似级别的图形和处理性能的应用程序。C ++非常适合这些应用程序,因为它使程序员能够明确地管理资源和对象生命周期; 它提供对硬件级优化机会的访问; 它可以直接访问DirectX和其他性能导向的Win32库,而不是托管语言; 并提供了一些优质的游戏开发库。

即使有很多技术可用于制作像C#这样的管理语言的性能较差的游戏,受管环境使得难以或不可能匹配C ++开发人员可以实现的性能水平。当绝对的表现是目标或任何开销太多时 – 就像在小型设备上带来大量经验时一样 – C ++是最新的语言。

C ++用于传统桌面应用程序

在C ++中编写一个传统的,UI重的桌面应用程序(如电子表格,文字处理程序或业务线应用程序)在应用程序计算密集型时最有意义,或者当有大量现有的C ++代码你可以使用它来构建它。否则,管理语言具有足够的性能,.NET生态系统由于其更现代化的应用程序和UI框架以及更具能力的标准库而提高了生产力。

在C ++编写桌面应用程序时,您可以为UI选择MFC或Win32,还可以选择还支持非Windows平台的多个第三方应用程序框架。

  • MFC(Microsoft基础类库):这是自1992年以来一直为Windows开发人员提供的高级应用程序框架和UI库。它是基于句柄的C语言Win32 API的薄型C ++封装,并为许多预定义的窗口,公共控件和其他Windows对象。尽管.NET生态系统中许多现代化的UI框架在便利性上超越了MFC,但它仍然是许多C ++开发人员为Windows桌面创建应用程序的首选UI框架。
  • Win32:这是Windows平台的基于句柄的C语言API,包括但不限于UI功能,如窗口,绘图和UI控件。因为它是基于句柄的低级别的C语言API,因此创建现代的,用户界面密集型应用程序是不常见的选择。然而,它提供了与Windows平台交互所必需的基本API,并且是具有简单UI要求的应用程序的合适选择,或者只是希望Windows UI尽可能远离的方式,例如游戏。
  • 第三方应用程序框架:由于C ++可以在各种平台上运行,并不与Windows或.NET运行时绑定,因此第三方为C ++开发了新的应用程序和UI框架,以便轻松开发跨平台应用程序丰富的用户界面。其中一些框架提供自己的外观和感觉,而其他框架(如wxWidgets或Qt)可以使用或模拟平台的本机控件。使用这些库,可以在Windows或其他平台(如OSX或Linux)上运行的应用程序的版本之间共享几乎所有应用程序的源代码。

结论

您可能对C ++或C#/ Visual Basic有很强的亲和力,这可能决定了您如何选择编写桌面应用程序。使用.NET / C#(或Visual Basic)进行高级编码,提高生产力,丰富的框架和服务,支持现代客户体验,跨平台维护资产(Windows Store应用程序,Windows Phone应用程序,Windows桌面应用程序等) )。当您需要实现最高级别的性能,明确管理资源或内存布局时,使用本机C ++来访问硬件级优化机会,当您希望将应用程序移植到平台时,无需.NET运行时,或更容易地利用免费提供的存在的高质量C和C ++库。

 

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注