当前位置:  开发笔记 > 编程语言 > 正文

在C#中通过.NET应用程序在C++中开发Win32应用程序有什么优势?

如何解决《在C#中通过.NET应用程序在C++中开发Win32应用程序有什么优势?》经验,为你挑选了4个好方法。

我使用Visual C++和Win32 API学习了Windows编程.如今,似乎大多数应用程序都是使用C#在.NET中开发的.据我所知,大多数情况下,本机代码和托管代码之间没有太大的性能差异.所以我想知道,如果我今天开始编写一个新的桌面应用程序,是否有任何理由(除了我对C++更熟悉的事实),我可能想用非托管C++编写它.NET?使用C++和本机代码还有一些优势吗?或者在Windows平台上用.NET或多或少取代了这种方法?

当然我知道编写低级设备驱动程序和类似程序的人不会在.NET中这样做.我要求参考典型的面向客户端的应用程序,这些应用程序不会直接进行硬件调用.



1> Adrian Grigo..:

对于小型可下载应用程序而言,IMO最重要的一点是本机代码不需要.NET运行时.虽然宽带变得越来越普遍,但几乎每个人都没有.

有些人可能会失望地看到你的2 MB应用程序实际上需要另外20MB的框架下载和一个麻烦的安装过程来运行.如果他们不确定他们是否真的需要您的应用程序,他们可能会在尝试之前将其删除并转向竞争产品.


我希望我可以多次投票.当我想尝试一个新的应用程序,它要求我安装一个我还没有安装的运行时,我立即尝试其他的东西.
Olli:您是一名开发人员,它使您成为计算机用户的精英.除非您的客户也是开发人员(特别是如果他们是没有经验的用户,他们几乎不使用他们的计算机),其中大约一半可能没有安装运行时.

2> Inisheer..:

性能(某些情况,如图形)

内存占用(如Mancuso所说)

使用现有的库

不需要运行时

更好的控制

列举一些.

但是,您可能还希望从相反的角度来看待问题,以公平地评估要使用的语言.

此外,您可以使用C++/CLI来合并本机和.net代码.



3> Daniel LeChe..:

如果您的应用程序需要能够在没有安装的情况下运行(即,如果您不能或不应该执行安装.NET框架之类的操作),那么您不能指望.NET在Windows机器上运行(在Vista之前) ).许多实用程序应用程序可以归入此类别.



4> olli-MSFT..:

我建议托管代码编写每个桌面应用程序..NET/C#是一个很好的平台.

我的理由:

    性能损失可以忽略不计.如果你不接受我的话,谷歌的基准测试.更重要的是代码本身.您可以用C++或.NET/C#编写O(n ^ m)算法.如今,JIT引擎非常成熟.

    单元测试,模拟和重构方面,非托管C++有很大的缺点.这非常麻烦且不灵活.Reflection允许托管代码使这些事情变得非常方便.

    部署是一个小问题.但是,创建一个检查必要的.NET前提条件并自动安装它们的设置是不费吹灰之力的.

    编译更快,没有链接器!它甚至在编辑代码时在后台发生.

    .NET 库支持比STL,MFC和boost更好,更清洁.

    没有头文件和宏.它们只是容易出错.

    安全!好再见缓冲区溢出,坏指针,未初始化的变量......

    例外.清除.NET中的异常层次结构.C++异常搞砸了.


@wdu,编写可移植的本机C/C++应用程序是黑色艺术.这需要很多努力.使用mono/.NET和Java实现相同的功能更加容易.
我同意詹姆斯的观点..net应用程序的内存开销很大.查看Qt(现在使用LGPL)获得一个良好的非托管跨平台解决方案.
推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有