当你想要创建一个新的桌面应用的时候,第一个你需要做的决定是使用Win32 和COM 还是使用.NET两个选项.

C++ 和 Win32 使你“离奖牌更近”,并使你可以获得最佳的应用性能。.NET 使你使用较低语言达到较高的编码水平并实现更高的效率。

下面是两者的区别:

补充:

.NET

开发语言:C#,C++,F#,VB

.NET为桌面、Windows Phone和Windows存储提供了一致的、一流的开发经验。

它提供了更高水平的编码和生产率,封装了很多公用可重复使用高效的代码,比如语言集成查询(LINQ),日期和时间库,序列化,Web服务安全与密码学,并行编程库等

NET允许您在桌面上继续开发基础应用程序,并添加令人兴奋的新体验,同时使用现有的技术和在设备之间重用代码。

如果你想创造更多的定制平台适当的经验,在任何设备上,Visual Studio的行业合作伙伴(VSIP)提供解决方案,使重新用C #技能和代码和非Windows设备。

可选UI栈: .

1.  .NET Windows Presentation Foundation (WPF)

2.  .NET Windows Forms

其他功能:

Model-View-ViewModel design pattern (MVVM)

Portable class libraries  NET可移植库允许二进制文件在多个平台之间共享

Modernize your user experience 使用户体验现代化,谨慎使用动画,并实现.NET异步编程

C++和Win32 :

语言:C++调用COM接口

C++和Win32对开发者要求比较高,需要较高的编码水平

原生操作系统权限功能

DirectX技术

C++ Win32 更加接近底层,高性能的图形访问

可以让你更好地实现内存分配和CPU性能分配。

不需要一个高层次的运行环境等

c++ 对游戏和丰富的图形应用支持

C++对传统桌面应用支持

可选UI:

MFC (Microsoft Foundation Class Library)

Win32

Third-party application frameworks

提供功能:

硬件级优化,包括对资源分配的严格控制、对象生命周期、数据布局、对齐方式、字节打包等等。

Access to performance-oriented instruction sets like SSE and AVX through intrinsic functions.

使用模板的高效、类型安全的泛型编程。
高效安全的容器和算法。
特别是Direct3D和DirectCompute DirectX。
C++ AMP

总结:

使用.NET #(C或Visual Basic)高水平的编码,更多的生产力,丰富的框架和服务,现代的客户体验和跨平台支持,资产维护(Windows应用商店的应用程序,Windows Phone应用程序,Windows桌面应用程序,和其他人)。

使用本机C++游戏和其他图形密集型应用程序,当您需要实现最高的性能水平,管理资源或内存布局明确,访问硬件级的优化机会,当你希望你的应用程序没有被移植到平台.NET运行时,或更容易地利用免费的,高质量的C和C++库的存在。

0x00 译文:Windows桌面应用入门选择的更多相关文章

  1. 0x01 译文:Windows桌面应用Win32开发简介

    本节课将简单介绍下使用C++开发Windows桌面应用的一些基础知识 目录: 准备你的开发环境 Windows 代码规范 操作字符串 什么是一个Window? WinMain:程序的入口点 1. 准备 ...

  2. [翻译].NET Core 3 Preview1和Windows桌面框架开源

    原文来自TechViews 今天,我们宣布推出.NET Core 3 Preview 1.这是.NET Core 3的第一个公开发布.我们有一些令人兴奋的新功能可供分享,并希望得到您的反馈.您可以使用 ...

  3. Win32++:可替代MFC的Windows桌面应用开发框架

    写在前面 有过Win32编程经验的朋友都知道,使用Windows提供的API开发桌面应用是相当繁琐的,创建一个功能简单能接收并处理消息的窗口至少也得几百行代码.创建一个可视化的窗口一般要以下几个步骤: ...

  4. Linux系统VPS/服务器安装WINDOWS桌面环境可以采用的几个方法

    我们公司的几个项目需要在WINDOWS桌面类型的界面操作,哪怕仅有一个浏览器远程操作也是可以的,我们运维部门得到的任务就是需要能在已有的Linux系统的VPS.服务器环境中能够远程操作,至少需要能可以 ...

  5. 使用EXE4J和Inno Setup 编译器将java程序打包成windows桌面应用安装程序

    java项目结构如下: Demo是模仿程序快照,主要设计两个按钮:保存快照和恢复快照: 保存快照将对象(窗口)序列化保存下来,后面无论做了什么操作,只要点击恢复快照, 就会读取之前保存的序列化的对象. ...

  6. Linux远程连接Windows桌面

    Ubuntu对初始用户的界面友好是有目共睹的:Fedora一向以创新.傲慢的姿态示人.其实,对于两者,我虽然更倾向于选择Fedora,但不可避免地会两者比较,发现Ubuntu更加人性化,这点是经过很多 ...

  7. 如何将程序添加到Windows桌面右键菜单

    在Windows桌面上右键单击鼠标时,将显示默认菜单.如果您想要将其它程序添加到Windows桌面右键菜单中,则可以按照以下步骤执行: 运行WinUtilities上下文菜单管理器 点击添加 选择菜单 ...

  8. Visual C++ Windows 桌面应用程序样例(摘抄)

    //================================== //Windows应用程序框架结构(例子) //参考:<Visual C++宝典>陈国建等编著 //======= ...

  9. 适用于Windows桌面应用程序的.NET Core 3

    介绍 9月,微软发布了新版.NET Core,用于构建Windows桌面应用程序,包括WPF和Windows Forms.从那时起开发人员可以将传统的nfx桌面应用程序(和控件库)迁移到.NET Co ...

随机推荐

  1. spingBoot-自定义过滤器

    package com.cx.springboot.filters; import java.io.IOException; import javax.servlet.Filter; import j ...

  2. SQLAlchemy如何给列和表添加注释comment?

    1.首先需要升级版本到1.2.x,我用的是1.2.14验证的,没有问题 2.看示例: class LoadResource(Base): """施压机资源."& ...

  3. jenkins使用slave报编码错误[WARNING] File encoding has not been set, using platform encoding ANSI_X3.4-1968, i.e. build is platform dependent!

    jenkins:master-slave 模式: master编码配置: slave编码配置: 可以看出master 和 slave的配置是一样的,但是当项目在slave上执行的时候,偶尔会报如下错误 ...

  4. iOS: 沙盒的详解和目录的获取

    沙盒的详解: •iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒 •iOS常用目录: –Bundle       //该目录下的文件是用来存储应用程序包的 ...

  5. ScaleIO 1.2 基础

    The ScaleIO virtual SAN consists of 3 software components =================== Meta Data Manager (MDM ...

  6. 我的Mac必备软件

    1.Svn工具: Cornerstone_v2.7.10 2.iPhone配置文件管理 iPhoneConfigUtility.dmg 3.有道 for mac http://cidian.youda ...

  7. mysql安装错误总结

    1.若在启动mysql服务时出现如下错误,可查看错误日志找出错误原因. Error:Starting MySQL.The server quit without updating PID file ( ...

  8. es6 - 回调深渊

    带着以下疑问来解答以下问题,你会学到很多 1. 回调深渊为什么会出现,为什么需要回调 ? 2. ES6为什么会出现Promise? 3. 回调的作用是什么? 跟闭包有关吗? ES5 ~ ES6 回调深 ...

  9. tomcat启动报错,找不到相应的 queue,从而引发内存泄漏

    tomcat启动报错,无法创建 bean listenerStatusChangeDealHandler, no queue 'STOCK.NOTIFY_CHANGE.INTER.CACHE.QUEU ...

  10. 算法笔记_029:约瑟夫斯问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 引用自<算法设计与分析基础>第三版: 约瑟夫斯问题,是以弗拉瓦斯.约瑟夫斯(Flavius Josephus)的名字命名的.约瑟夫斯是一 ...