.NET Framework的作用是什么
.net framework是微软的开发程序的框架 .net技术是比较新的技术 用.net开发的程序就需要.net的环境来支持才能运行 打个比方linux的应用程序只能在linux的环境下才能使用
NET的运行环境,类似用运行时间库的东西,要运行.NET的计算机必须安装了这个东西。具体的说是支持生成和运行下一代应用程序和 XML Web services 的内部 Windows 组件
NET Framework: 就是微软Web Services 引擎
基本上安装了之后对机器不会有很大的影响
NET Framework 旨在实现下列目标:
提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在 Internet 上分布,或者是在远程执行的。
提供一个将软件部署和版本控制冲突最小化的代码执行环境。
提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。
提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。
使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程序和基于 Web 的应用程序)时保持一致。
.NET Framework是Microsoft为开发应用程序而创建的一个具有革命意义的平台。
跨平台的
没有限制应用程序的类型:可以使用.NET Framework创建桌面应用程序、Windows Store应用程序、云/Web应用程序、Web API和其它各种类型的应用程序。
可用于各种语言:C# C++ Visual Basic Jscript等
.NET Framework的内容
编译应用程序时,所创建的CIL代码存储在一个程序集中。
程序集 = 可执行的应用程序文件 + 其它应用程序使用的库
(扩展名.exe 可直接在windows上运行) (扩展名.dll)
除了CIL外,程序集还包含元信息,和可选的资源(CIL使用的其它数据,如声音文件图片等)
元信息:程序集中包含的数据的信息,也称为元数据
全局程序集缓存 Global Assembly Cache ,GAC
通用中间语言 Common Intermediate Language , CIL
Just-In-Time JIT
CTS 公共类型系统
CLR 公共语言运行库
在将代码编译为CIL后,再用JIT编译器将它编译为本机代码,然后还需要管理正在执行的代码(runtime)
在C#中,只能编写在托管环境下运行的代码。我们使用CLR的托管功能,让.NET处理与操作系统的任何交互。
CLR管理着应用程序,其方式是管理内存、处理安全性以及允许进行跨语言调试等。
代码托管最重要的一个功能是垃圾回收
.NET垃圾回收会定期检查计算机内存,从中删除不在需要的内容。执行垃圾回收的时间并不固定。
创建.NET应用程序的步骤:
使用某种.NET兼容语言编写那些应用程序
把代码编译为CIL,存储在程序集中
在执行代码时(如果是一个可执行文件,就自动运行,或是在其它代码使用它时运行),首先必须使用JIT编译器将代码编译为本机代码。
在托管的CLR环境下运行本机代码,以及其它应用程序或进程
.NET Framework的个人理解
学习C#的时候感觉目前很重要一个问题就是弄明白.NET Framework到底是什么。虽然C#不局限于.NET,但是我接触到的情况下貌似确实没有别的平台用C#语言了,而且感觉学了好久C#回头才发现.NET到底是什么还不是很清晰,所以现在我先查些资料,也许之后还要有新的补充和改正。
首先,.NET是微软的托管代码模型,所谓的托管代码(IL)其实和JAVA的虚拟机很类似的,微软搞个了概念游戏,说C#是编译语言而不是解释语言,其实C#的编译跟C++的编译不是一回事,仔细看看,将C#语言“编译”成中间代码(IL)不就是JAVA解释成JAVA虚拟机运行语言么?当然这里细节问题本人还不是很清楚不敢随便下断言,但是有个概念要清楚的是,.NET会为其语言(C#,VB.NET,J#。。。,貌似MFC也会用)提供了运行环境,而不仅仅是功能函数库,也就是说可以把.NET看成一个类似的虚拟机,C#语言对系统资源的操作使用是通过.NET完成的,所以也好理解为什么.NET程序很少直接调用WIN API了。
其次,.NET Framework完成了资源回收功能(GC),其实这个问题主要是解放了我们写程序对资源使用的管理上的精力,而且在新手时期确实自动的资源回收要比自己来的稳定且效率高,所以C++程序比C# 、JAVA程序效率高那是需要编程者的水平的,没那个水平还是先老老实实从基础学起的好,可能因为我本身就是外专业转过来的吧,所以对基础理论的重要性也许比我身边的人感觉更多点- -!不过不是C#自己手动释放资源没有意义,至少数据流、数据库连接什么的要自己关吧(.NET释放这些接口有延时的)。而且用到C#的指针(确实有指针的)那就跟C++很接近了。
再者,提到指针就不得不提到安全代码问题,代码的安全性我目前了解的不多(项目经验少啊),但是一个是代码内存的适当释放、规范、防止泄露是其中要考虑的一些问题,我目前觉得C#编程中对应的考虑也就是作用域、类(尤其是.NET或者第三方库中)的安全调用(又是经验!!!)、类型转换等,不过只是考虑这些也比C++要考虑的少好多了。
目前我的总结也就到这里了,因为目前的学习进度,还没提到XML、Web这些.NET曾经的主要特色(现在都普及了)
反正很多软件都基于,.NET Framework开发完成,那么就需要安装支持了。
|