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.

  • 相关阅读:
    Codeforces Gym 100571A A. Cursed Query 离线
    codeforces Gym 100500 J. Bye Bye Russia
    codeforces Gym 100500H H. ICPC Quest 水题
    codeforces Gym 100500H A. Potion of Immortality 简单DP
    Codeforces Gym 100500F Problem F. Door Lock 二分
    codeforces Gym 100500C D.Hall of Fame 排序
    spring data jpa 创建方法名进行简单查询
    Spring集成JPA提示Not an managed type
    hibernate配置文件中的catalog属性
    SonarLint插件的安装与使用
  • 原文地址:https://www.cnblogs.com/mc67/p/4812237.html
Copyright © 2011-2022 走看看