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:文章乃个人学习笔记。大神勿喷。

  • 相关阅读:
    hiveserver2 with kerberos authentication
    python Basic usage
    python Quicksort demo
    Python HeapSort
    mrunit for wordcount demo
    CCDH证书
    Hadoop question list
    Hadoop Yarn core concepts
    Hadoop Resource
    Hadoop could not find or load main class
  • 原文地址:https://www.cnblogs.com/ITGrass/p/12129402.html
Copyright © 2011-2022 走看看