zoukankan      html  css  js  c++  java
  • 《C#图解教程》读书笔记之一:C#和.NET框架

    本篇已收录至《C#图解教程》读书笔记目录贴,点击访问该目录可获取更多内容。

    一、在.NET之前的编程世界

      C#语言是在微软公司的.NET框架上开发程序而设计的,首先作者给大家纠正了一下C#的正确发音:See Sharp(而不是很多人说的什么C井之类的,每次听到C井我都只能呵呵一笑)。

      1.1 20世纪90年代末的Windows编程

      这时大多数程序员使用VB、C或C++,一些C/C++程序员使用纯Win32API,但纯Win32API不是面向对象的,而且使用它的工作量很大,比MFC还大。大多数程序员在使用MFC(Microsoft Foundation Class,微软基础类库),MFC是面向对象的,但是它却不一致,并逐渐变得陈旧。其他的程序员开始转向了COM(Component Object Model,对象组件模型),COM相对前两者概念简单,但它的实际代码复杂,并且需要很多丑陋的、不雅的底层基础代码。

      1.2 下一代平台服务的目标

      执行环境的目标:安全、多平台、性能;

      开发环境的目标:面向对象、一致的编程环境、使用行业标准进行通信、简化的部署等;

    二、.NET时代来临

      2002年,微软发布了.NET框架的第一个版本,.NET框架是一种比MFC和COM编程技术更一致并面向对象的环境。

      2.1 .NET框架的组成

      .NET框架由三部分组成,如下图所示。

      (1)编程工具:IDE、编译器、调试器、网站开发服务端技术(ASP.NET,WCF等);

      (2)执行环境—CLR(公共语言运行库):内存管理、垃圾回收、即时编译等;

      (3)BCL(基类库):在.NET框架中使用的一个大的类库,也可以在程序中使用;

      2.2 大大改进的编程环境

      面向的对象的开发环境、自动垃圾收集、互操作性、不需要COM等;

    三、全新的编译过程

      3.1 编译成CIL(公共中间语言)

      .NET语言的编译器接受源代码文件,并生成名为程序集程序集要么是可执行的,要么是DLL)的输出文件。下图阐述了这个过程。

      3.2 编译成本机代码

      程序的CIL直到它被调用执行时才会被编译成本机代码,在运行时,CLR执行如下图所示的步凑。

      这里有两个名词需要理解:

      (1)托管代码:使用.NET框架编写的代码成为托管代码(Managed Code),需要CLR。

      (2)非托管代码:不在CLR控制下运行的代码,比如Win32 C/C++ DLL,称为非托管代码(Unmanaged Code)。

    四、核心组件—CLR:一个不辞辛劳的清洁工

      毫无疑问,.NET框架的核心组件是CLR(公共语言运行时),它在操作系统的顶层,负责管理程序的执行

    五、基础结构—CLI:一起长大的约定,那样清晰

      过去,各种不同语言的类型特征(例如,组成整数的位数对于不同的语言和平台就有很大差别)不一致,缺乏统一性。为了使不同语言编写的程序和库能够一起有序协作,必须要有一组标准

      CLI就是这样的一组标准,它把所有.NET框架的组件连接成一个内聚的、一致的系统。它展示了系统的概念和架构,并详细说明了所有软件都必须坚持的规则和约定。CLI的组成如下图所示:

      在CLI的众多组成部分中,最重要的是CTS和CLS。CTS(公共类型系统)定义了那些在托管代码中一定会使用的类型的特征,而CLS(公共语言规范)详细说明了一个.NET兼容语言的规则、属性和行为。

    六、本章思维导图

    附件

      思维导图(jpg、pdf与mmap源文件):http://pan.baidu.com/s/1jG5JRpG

  • 相关阅读:
    CodeForces 706C Hard problem
    CodeForces 706A Beru-taxi
    CodeForces 706B Interesting drink
    CodeForces 706E Working routine
    CodeForces 706D Vasiliy's Multiset
    CodeForces 703B Mishka and trip
    CodeForces 703C Chris and Road
    POJ 1835 宇航员
    HDU 4907 Task schedule
    HDU 4911 Inversion
  • 原文地址:https://www.cnblogs.com/edisonchou/p/3696840.html
Copyright © 2011-2022 走看看