MFC和.NET有是什么区别?

问题的中心点是问   C++中的 基于MFC和基于.NET开发出来的程序有啥不同吧?

MFC是微软基础类(Microsoft Foundation Classes,MFC)来编写Windows应用程序的图像界面。MFC封装了用于GUI(图形用户界面)创建和控制的Windows操作系统API。没有任何面向对象的特征。但是性能最佳。

.NET主要是指.NET Framework。.NET Framework主要由两部分组成:1.公共语言运行库(Common Language Rutime,CLR).2.名为.NET Framework类库的程序库。

CLR是标准化的程序执行环境,这些程序可以用各种高级语言编写。CLR规范收录在ECMA(欧洲计算机制造商协会)的CLI(通用语言)和ISO/IEC 23271中。CLR是CLI的实现。CLI本质上是一种虚拟机环境规范,这种环境使以各种高级编程语言编写的应用程序能够在不同系统环境中执行,而不用修改或复制原来的代码。跨平台。.NET中的CLR是微软公司对于CLI的一个实现。

.NET类库嘛,就是微软提供的实现各种功能的方法的集合体各种方法,只能在基于微软的CLR中运行执行,脱离CLR就无法执行。

 

所以用C++的.NET编写的程序必选在客户端安装.NET Framework。(包含MS公共语言运行库相当于Java的虚拟机,MS提供的各种方法),而且因为有虚拟机的托管,比MFC多了一个步骤性能上面比MFC有所损失.用MFC编写的就不需要安装任何其他的框架,直接调用操作系统的API就OK。

不知道我的答案伱满意不.呵呵

引用《Visual C++ 2010入门经典》第五版



运行.net开发程序必须安装.net framework,而MFC是调用一些库,不经过.net framwork,所以运行MFC程序只需要将相应的库文件拷贝即可。
MFC在非托管环境中运行,而.NET FrameWork在。NET框架中运行!VC++.NET,是以C++托管代码为基础
1. MFC是在API的基础上封装出来的一个类库,给C++程序员在Windows上快速开发用的

.Net类库是在Windows非托管API的基础上封装出来的一个托管类库,给程序员在各种Windows平台上跨平台开发用的

2. 两个不同平台的编程,一个是NET平台,一个是WIN32

3. .NET的基类是基于.net运行时库的,通过运行时库对操作系统和硬件进行操作,而MFC是直接对操作系统和硬件进行操作的。

.NET有个问题就是你编写的程序只能在装有.net   framework的机器才能运行的,而MFC只需设置在静态库中使用MFC就可能直接到其它机器运行。不过我认为用.NET开发比用MFC方便多了,不过需要CLR的支持,执行效率不如MFC

NET   project使用的是托管的c++,使用.net framework,是基于窗体开发的

4. MFC是微软为了简化win32窗体编程而推出的C++类库。VC.net按你的意思是指。Net环境下的窗体编程

从Vsita开始,微软就规定窗体全部是基于.Net的了

5. .NET 是 Microsoft XML Web services 平台。XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft .NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需。对个人用户的好处是无缝的、吸引人的体验

6. .net是一种框架,也可以说是一种平台,并不是语言

.net是一个平台,也就是说,在.net下编写程序,编译后,执行的时候是需要.NET框架的解析。即:.net下生成的.EXE.DLL在没有.NET框架支持的情况下是无法执行的,及时执行也会出错;.net框架下可以支撑好多语言编写程序,比如c++、vb、java、c#等等,可以满足不同的程序员的编程语言的偏好,可以编写web、windowsform等各种程序,这也是.NET比较实用化的一个特点

7. .NET框架是构建并运行程序的平台,他主要包括公共语言运行库(CLR)和.NET框架类库(FCL)。CLR抽象了操作系统服务,并用作托管应用程序的执行引擎。托管应用程序,即其每一个动作都要经过CLR批准。FCL提供了用面向对象方法写托管应用程序的API,所以,编写.NET框架应用程序,不需要考虑Windows   API、MFC、ATL、COM或其他技术,只需要使用FCL。  

公共语言运行库位于操作系统之上,为托管应用程序提供虚拟环境。如果把.NET框架比作人,那么公共语言运行库就是心脏和灵魂。CLR将托管代码翻译为一种伪汇编语言,即通用中间语言(CIL)
有了.NET框架,语言仅仅是产生CLI(通用中间语言)的工具,不管是使用VB.NET还是C#,所有的托管应用程序都使用相同的API,即.NET框架类库(FCL)。在.NET平台下,所有的高级语言编写的代码最终都被编译为CIL

8. MFC和.Net的根本理念很接近,似乎都是谋求多平台下统一的公共类封包,提高兼容性和开发速度。但是使用后我觉得.Net Framework的开发速度虽然高,但执行效率缺比较低,占用内存多而且发行包的体积太大。虽说号称未来会超越Windows跨越更多系统,虽说C#中的一些开发理念很吸引人,但是事实上一般的Win-App开发中,MFC看起来还是首选嘛
9. NET也好,C#也好,我觉得都是主要服务于网络环境开发和快速开发,当然也有所谓的跨平台移植,而MFC作为一套Framwork来说,可能相对更面向一些纯本地应用开发。所以,MFC还是很有前途的,作为MS的双股剑,MFC/ATL还将继续辉煌!

10. .NET框架设计为一个集成环境,可以在Internet、桌面(如Windows窗体),甚至移动设备(使用精简框架Compact Framework)上无缝地开发和运行应用。其主要目标是:提供一个覆盖整个应用范围的、一致的面向对象环境

提供一个环境,将困扰Windows(COM)程序员的版本冲突(“DLL Hell”,即DLL地狱)问题最小化,简化代码的发布/安装过程

基于公认的标准,提供一个可以在任意操作系统上运行的可移植环境。实际上,C#和.NET运行时的一个主要部分,即通用语言基础设施(Common Language Infrastructure,CLI),已经得到了ECMA的标准化

ECMA国际(ECMA International)全名是欧洲计算机制造协会(European Computer Manufacturers Association),简写作ECMA

提供一个可管理的环境,在这个环境中,可以很容易地验证代码,以保证程序安全运行

为了实现上述目标,.NET框架设计者们最后确定了以下体系结构,将框架分解为两部分:通用语言运行时CLR和框架类库FCL,CLR是Microsoft对CLI标准的具体实现,它处理代码执行及所有相关任务:编译、内存管理、安全、线程管理、强制类型安全和类型使用。在CLR中运行的代码称为托管代码(Managed Code),以区别于不在CLR中运行的非托管代码(unmanaged code),如基于COM或Windows API的组件

.NET的另一个主要部分是框架类库FCL,对于在.NET中运行的应用来说,它是一个可重用的类型(类、结构等)代码库。正如图中所示,它包含了涉及数据库访问、图形、与非托管代码互操作、安全、Web和Windows窗体等类。只要是遵循.NET框架的语言,都会使用这个公共类库。因此,只要知道了如何使用这些类型,不论你选择用哪一种.NET语言编写程序,这些知识都可以用上


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值