zoukankan      html  css  js  c++  java
  • Framework底层知识和概念

    Framework底层知识和概念

         本文将对CLI、CIL、CTS、CLS、CLR、JIT、BCL、FCL、Module、Assembly 等专业词汇做相关的额解释和理解,这只是本人的学习笔记和总结,如果你想了解更为详细的信息,推荐你看大牛博客:http://www.tracefact.net/CLR-and-Framework/DotNet-Framework.aspx(讲解很详细)

    1.CIL—公共中间语言

      Common Intermediate Language,公共中间语言

            1.公共。因为不论是C#语言也好,VB.NET语言也好,C++/CLI语言也好,甚至是重新开发的一套以自己的名字缩写命名的语言,

    只要它期望运行的目标平台是.NET,在经过相应的编译器编译之后,所生成的程序集就是由CIL语言代码描述的。

           2.并不是CPU可以直接执行的本地机器语言。这种语言还需要.NET运行时(.Net runtime)环境的支持,在执行之前,进行一个被称为Just-in-

    time(即时)的二次编译过程,才能转变成计算机可以识别的指令。

            3.CIL不过是一种程序语言,只不过相对于C#来说,它是一种更低级语言,CIL是一种基于堆栈的语言,同时,它提供了class、interface、继承、多态等

    诸多面向对象的语言特性,因此它又是完全面向对象的语言。如果愿意,甚至可以直接编写CIL代码,并且使用CIL的编译工具IL ASM(IL Assembler,IL汇编程序)

    来对它进行编译。只不过,和大多数低级语言一样,这种方式会使开发效率会变得很低。

           图解1(公共中间语言)

           

           图解2(用汇编工具看CIL)--Hello world 控制台应用程序

    2.BCL和FCL

      BCL—基类库

            mscorlib.dll程序集,这个程序集中所包含的类库,即是BCL(Base Class Library,基类库)。从名字就可以看出来,这个类库包含的都是些最基本的类型,

     其本身已经与CIL语言融为一提了,为CIL语言提供基础的编程支持,以至于该类库已经成为了CLI标准的一部分,因此也可以说BCL中的类型就是CIL语言的类型

     所有面向CIL的语言都能够使用它们.

      图解--视图-对象浏览器-查看它包含了那些了哪些命名空间和类型

      

      

      BCL提供了像Console这样的类型来支持开发者编写类似控制台这样的程序

     基元类型(Primitive Type)。实际上,讲到这里大家应该已经明白了,那些由编译器直接支持,将语言本身的关键字类型转换为CIL类型的,就叫做基元类型

     显然,byte、int、string都是基元类型。而C#中并没有一个关键字去映射Console,所以我们认为Console只是普通的类类型(Class Type)

      FCL——框架类库

          FCL(Framework Class Library,框架类库)。在上一节中介绍了BCL,它是FCL的一个子集。BCL中包含了与编译器及CIL语言关系紧密的核心类型,以及常见开发任务中都会使用到的类型。而FCL包含的内容极多,仅服务于一种应用场景的子类库就足够写一本书了,从功能上来看,可以将FCL框架类库划分成以下几层。

        1.最内一层,由BCL的大部分组成,主要作用是对.NET框架、.NET运行时及CIL语言本身进行支持,

          例如基元类型、集合类型、线程处理、应用程序域、运行时、安全性、互操作等。

        2.中间一层,包含了对操作系统功能的封装,例如文件系统、网络连接、图形图像、XML操作等。

        3.最外一层,包含各种类型的应用程序,例如Windows Forms、Asp.NET、WPF、WCF、WF等。

    3.CTS——公共类型系统

             

    4.CLS——公共语言规范

    5.CLR——公共语言运行时

    6.CLI——公共语言基础

           CLI是一个国际标准,由ECMA和ISO进行了标准化,全称为Common Language Infrastructure(公共语言基础

       NET 框架提供了那些支持?

        1.

  • 相关阅读:
    3、Linux知识点/dos基础命令
    2、进制转换
    1、软件测试基础####################################################
    50.React跳转路由传参3种方法和区别
    49.react中使用less
    48.vue-awesome-swipe使用
    47、安装node-sass后运行报错
    46、VUE + JS 面试宝典
    45、导航钩子函数中使用next()和next('指定路径')的区别:
    44、css实现水波纹效果
  • 原文地址:https://www.cnblogs.com/mc67/p/4812237.html
Copyright © 2011-2022 走看看