zoukankan      html  css  js  c++  java
  • C# in Depth-剖析.NET 平台

    1.7 剖析.NET 平台

    最开始引入时,.NET这个词涵义甚广,用来包罗微软公司的多种技术。例如,Windows LiveID曾被叫做.NET Passport,虽然它和目前的.NET没有任何明显的联系。

    幸好,这个混乱的局面逐渐平息下来了。本节要探讨.NET的各个组成部分。本书会提到3种不同的特性:

    ①C#语言本身的特性

    ②运行时的特性

    ③.NET框架库的特性

    本书重点是在C#语言上。通常只有在与C#本身的特性有关时,才会解释运行时和框架的特性。

    但是,只有在你清楚地理解了三者的差异之后,才能真正理解这些特性。

    特性经常会发生重叠,但重要的是理解其中的基本原理。


    1.7.1 C#语言

    C#规范定义了C#

    C#语言是由它的规范定义的。C#规范描述了C#源代码的格式,其中包括语法和行为。

    规范中并没有描述编译器输出要在什么平台上运行,只描述了两者进行交互的要点。

    例如,C#语言需要一个名为 System.IDisposable 的类型,其中包含一个名为 Dispose 的方法。它们是定义using 语句所必需的。

    同样,平台需要(不管以什么样的形式)同时支持值类型和引用类型,另外还要支持垃圾回收。

    C#理论上可以编译其他平台

    理论上,任何平台只要支持要求的特性,C#编译器就可以以它为目标平台。

    例如,C#编译器除了可以以IL(Intermediate Language,中间语言,是本书写作期间最常见的一种输出形式)形式输出外,还可以以其他合法形式输出。

    运行时完全可以对C#编译器的输出进行解释,或将其直接完全转换为本地代码(native code),而不必非要对它进行JIT编译。尽管这些情况比较少见,但它们确实存在。


    1.7.2 运行时

    .NET平台的运行时部分是数量相当少的一些代码,它们负责确保用IL写的程序以符合CLI规范的方式执行。

    CLI的运行时部分称为CLR(公共语言运行时)。以后提到CLR时,是指微软实现的CLR。

    语言的一些元素永远不会在运行时的级别上出现,但也有一些元素越过了这个界线。

    例如,枚举器就不是在运行时的级别上定义的。

    相比之下,虽然数组和委托对IDisposable 接口来说没有任何特别的含义,但它们对于“运行时”来说都是十分重要的。


    1.7.3 框架库

    库提供了可供我们在程序中使用的代码

    .NET中的框架库主要是以IL的形式构建的,只有在必要时才使用本地代码。

    这是运行时优势的一个体现:你自己写的代码并非天生就是“二等公民”——它完全能够提供与它利用的库一样强大的功能和性能。

    库中的代码量要比运行时的代码量多得多,这跟车和引擎的关系是一样的。

    .NET标准库

    .NET库得到了部分标准化。CLI规范提供了大量不同的概要协议和核心内容库。

    规范包含两个部分:

    ①对库的常规文字描述,包括哪些配置文件中包括哪些库。

    ②以XML格式描述了库本身的细节。这是在C#中使用XML注释时生成的相同形式的文档。

    .NET非标准库

    .NET中有许多东西都不是基本库定义的。

    如果写一个程序,在其中只使用来自规范定义的库,而且以正确的方式使用它们,那么代码应该能在任何实现(包括Mono、.NET等)上顺利地运行。

    但在实际应用中,几乎任意规模的任意程序都会使用非标准的库,如Windows Forms或ASP.NET。

    Mono项目也有它自己的、不是.NET一部分的库,如GTK#。另外,它也实现了许多非标准的库。

    .NET是微软公司提供的运行时和库的组合

    .NET一词是指微软公司提供的运行时和库的组合,其中也包含C#和VB.NET编译器。

    可以把它视为在Windows顶部构建的一个完整的开发平台。

  • 相关阅读:
    java.sql.SQLException: 数字溢出 的解决办法
    oracle数据库创建表,序列及添加代码案例
    Oracle创建用户、角色、授权、建表
    HttpSession与Hibernate中Session的区别
    RuntimeException与CheckedException
    >Hibernate 报错:this project is not a myeclipse hibernate project . assuming hibernate 3 cap
    解决java web项目导入后出现的问题 ---cannot be read or is not a valid ZIP file
    JDK,JRE,JVM区别与联系
    最爱的天籁之音
    applicationContext.xml 基本配置
  • 原文地址:https://www.cnblogs.com/errornull/p/10019168.html
Copyright © 2011-2022 走看看