zoukankan      html  css  js  c++  java
  • 到底什么是.NET?

    ​.NET 概念比较庞大,本文只讨论基础知识,只用简单语言描述。

    我们是NET程序员,但是我们有没有思考过到底什么是.NET ?

    官方定义 .NET是微软推出来的一个致力于敏捷开发的软件框架。

     大概2000年年左右,微软推出了.NET 标准规范,既然有了标准就等于开发时候定义接口一样,需要东西去实现它。.NET Framework  就是 .NET 的具体实现。

    可以这么认为 .NET一种优秀的设计规范和平台标准。

    下面我们来说说什么是 .NET Framework?

    官方定义 .NET Framework  是 Windows 的托管执行环境,可为其运行的应用提供各种服务。

    .NET Framework 有两个主要组件:  

    1. .NET 公共语言运行时 (Common Language Runtime,CLR)

    CLR核心功能:内存管理,程序集加载,安全性,异常处理,和线程同步,CLR像一个管家一样,管理着程序代码的执行,为程序提供一个运行环境。被CLR托管的代码就叫托管代码。

           要想了解CLR机制,就要知道我们写的C#代码经过VS 编译之后变成了什么?       

    左边的图是将我们编写的C#源代码编译成托管模块,右边图是托管模块的组成部分,这里我们只关注IL代码,其他的不用关注。C#代码经过编译器生成的并不是最终的CUP指令,而是一个中间语言IL代码,也就是托管代码,CLR操作的就是IL代码,最终由CLR将IL编译成计算机可以认识的Cpu指令。我们应该知道程序运行时候需要占用计算机的内存,C++时代的的程序员是需要自己手动操作管理内存的,需要自己分配和释放内存。但是我们.NET程序员是不需要进行这个操作的。这是因为CLR帮我们自动做分配内存和释放内存的这个操作了。这个操作对于NET开发者来说是透明的,这就是文章的前面所说CLR的主要功能内存管理。由CLR管理释放的内存空间叫做托管堆。在托管堆上的代码称之为安全代码也叫托管代码,反之不在托管堆上的代码就叫非托管代码,非托管代码有可能造成内存泄漏。

    CLR是很复杂的一个东西。本文不做过多的讨论,只是对其概念进行简单的讲解。

    2.  Framework 类库 

    .NET Framework类库应该比较好理解,类似我们自己封装工具类一样的概念。Framework 类库 (Framework Class Library) 简称 FCL,FCL 里面定义了数千个类型供我们用。利用这些类型我们可以开发各种类型的应用程序 webService,MVC,Windows Forms ,WPF,Windows 服务等。所以要想学好.NET的,虽然不需要你都掌握整个.NET类库。这也不现实,但是也要尽可能掌握常用的类型。

    总结

    .NET Framework是.NET平台标准的主要的实现,实现的不仅仅有.NET Framework还有.NET Core和mono。

    .NET Framework包含CLR和 FCL。

    CLR为.NET程序提供一个运行环境并对其进行托管。

    FCL Framework类库为.NET程序员提供了大量丰富的基础类型供其使用。封装了一些基础的操作,为了.NET程序员的开发提供了便利。

     ps:文章乃个人学习笔记。大神勿喷。

  • 相关阅读:
    2017年9月22日 关于JS数组
    2017年9月20日
    2017年9月19日 JavaScript语法操作
    2017年9月18日
    2017年9月17日 JavaScript简介
    2017年9月16日
    2017年9月15日
    2017年9月14日
    2017年9月12日
    贪吃蛇全文
  • 原文地址:https://www.cnblogs.com/treeskyer/p/12771446.html
Copyright © 2011-2022 走看看