【.NET】.NET FrameWork简述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/It_sharp/article/details/83151896

.NET FrameWork简述

1、NET FrameWork目的
一门技术专门用于生成运行应用程序和Service的框架,为了实现什么呢?
提供一个一致的面向对象的编程环境,我们可能创造不同的项目程序和代码,不同在各种情况,比如说有些程序是在本地存储并且执行的,还有一些是在本地执行在网上发布分布,或者远程执行的代码,不管是哪种,它提供了一致的编程环境。
提供一个将软件部署和版本控制冲突最小化的代码执行环境
提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境
提供一个可消除脚本环境或解释环境性能问题的代码执行环境
是开发人员的经验在面对类型不相同的应用程序保持一致。
按照工业标准生成的所有通信,以确保基于.NET Framework的代码可与其他代码集成。

2、NET FrameWork框架
托管程序必须通过 公共语言运行时才能与操作系统通信

3、Common Language Runtime
CLR实现了管理内存线程执行代码执行代码安全验证编译和其他系统服务

  • 安全性
  • 访问安全
  • CTS(Common Type System)
  • 消除常见的一些问题,比写C++代码时常见的代码内存泄漏、无效的内存引用,提供自动内存管理。
  • 提高开发效率
  • 兼容性
  • 增强性能
  • 宿主应用,asp.net可以宿主在IIS上。

4、NET FrameWork Class Library
FCL是与公共语言运行库CLR紧密集成的可重用的类型集合,能用来构建很多各种各样的开发方案,可以用来开发

  • 控制台应用程序
  • Windows GUI应用程序(Windows窗体)
  • WPF
  • ASP.NET
  • WCF
  • WF

CLR公共语言运行时

1、公共运行时的功能

  • 性能得到改进
  • 能够轻松使用其他语言开发的组件
  • 类库提供的可扩展类型
  • 语言功能,如面向对象的编程的继承、接口和重载
  • 自由的多线程处理支持
  • 结构化的异常处理
  • 自定义特性的支持
  • 垃圾回收
  • 使用委托取代函数指针,从而增强了类型安全和安全性

2、公共语言运行时的版本

3、托管执行过程
选择编译器(C#编译器)
编译成MSIL代码(中间语言代码,一组有效可以装换为本机机器语言独立于CPU的指令)
将MSIL编译成本机代码(JIT实施编译器,NGen.exe)
运行代码。

4、自动内存管理
GC的内存,首先分配内存,然后释放内存,我们的垃圾回收器会优化引擎,根据所执行的一些分配来决定具体在什么时候回收释放我们的内存。
那内存分配是有级别和性能的要求,为了优化我们的垃圾回收器的一些性能,我们将我们分配出去的内存分为三代,第0代、第1代、第2代,垃圾回收的算法基于几个基本的普遍原理,假设首先基于压缩托管堆或内存堆一部分内存比压缩整个要快,第二个新对象的生成周期通常比较短,旧的对象生成周期比较长的,第三点内存分配周围的内存通常生命周期比较相近的。
大体上有个新的对象,分配到第0级内存堆里面去,当内存堆满了的时候,它将会在合理的时间去回收,回收的时候发现对象还正在被使用,它就会对那个对象那个内存进行升级,把它放在第1级内存堆里面,同样当第1级内存堆满了的时候,它就会对第1级内存堆进行释放和回收,如果这时这个对象还在被使用时,那么将会被升级到第2级里面去,就这样从0级升级到1级再升级到2级这么一个逻辑进行运作,一共就三级,那么这个对象要么就是在2级内存里面被回收,要么就是一直存放下去
非托管资源要被显示的清除,用一个公共的比如说Dispose方法这样来实现对非托管资源的释放

.NET Framework(FCL)提供的类型

  • 类 Class
  • 接口
  • 值类型

.NET Framework(FCL)提供的功能:

  • 表示基础数据类型和异常
  • 封装数据结构
  • 执行I/O
  • 访问关于加载类型的信息
  • 调用.NET FrameWork安全检查
  • 提供数据访问、多客户端GUI和服务器控制的客户端GUI
    System命名空间
    System命名空间是.NET FrameWork中基本类型的根命名空间。此命名空间包括表示由所有应用程序使用的基本数据类型的类:Object(继承层次的根)、Byte、Char、Array、Int32、String等

猜你喜欢

转载自blog.csdn.net/It_sharp/article/details/83151896