本篇已收录至《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

作者:周旭龙

出处:http://www.cnblogs.com/edisonchou/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

《C#图解教程》读书笔记之一:C#和.NET框架的更多相关文章

  1. C#图解教程读书笔记(第1章 C#和.net框架)

    C#中的主要需要记住的基础概念 CLR公共语言运行库 CIL中间语言,所有的代码都会编译成中间语言. CLI公共语言基础结构 C#的优点 C#有自动垃圾回收机制

  2. C#图解教程读书笔记(第15章 委托)

    委托是C#的一个很重要的知识点. 1.什么是委托 委托在我认为,就是一系列格式相同的方法列表,可能就是定义的名称不一致,参数.返回值等都是一样的. 2.如何声明委托 delegate void MyF ...

  3. C#图解教程读书笔记(第9章 语句)

    文件头的Using是Using指令,不是using语句 using (TextWriter tw = File.CreateText("xixi.txt")) { tw.Write ...

  4. C#图解教程读书笔记(第8章 表达式和运算符)

    表达式 字面量 整数字面量 字符字面量 字符串字面量 求值顺序 优先级 结合性 与C和C++不同,在C#中的数字不具有布尔意义. 各种运算符的作用(过) 用户定义类型转换 class XiXiInt ...

  5. C#图解教程读书笔记(第7章 类和继承)

    1.所有的类都继承自object 2.如何隐藏基类的成员 要隐藏一个继承的数据成员,需要声明一个新的相同类型的成员,并使用相同的名称. 通过在派生类中声明新的带有相同签名的函数成员,可以隐藏或掩盖继承 ...

  6. C#图解教程读书笔记(第6章 类进阶)

    类成员声明语句由下列部分组成:核心声明.一组可选的修饰符和一组可选的特性(attribute). [特性] [修饰符] 核心声明 修饰符: 如果有修饰符,必须放在核心声明之前. 如果有多个修饰符,要有 ...

  7. C#图解教程读书笔记(第5章 方法)

    类型推断和var关键字 从C#3.0开始,可以在变量声明的开始部分的的位置使用新的关键字var. Var关键字并不是某种特别类型的符号.它只是句法上的速记,表示任何可以从初始化的右边推断出的类型. V ...

  8. C#图解教程读书笔记(第4章 类:基础)

    类成员包括数据成员和函数成员. 和C/C++不同,C#在类型的外部不能声明全局变量,所有的字段都属于类型,而且必须在类型声明内部声明. 和C/C++不同,方法没有返回默认类型,所有方法必须包含返回类型 ...

  9. C#图解教程读书笔记(第3章 类型、存储及变量)

    1.C#的中的数值不具有bool特性. 2.dynamic在使用动态语言编写的程序集时使用,这个不太明白,看到后面需要补充!! 动态化的静态类型 3.对于引用类型,引用是存放在栈中,而数据是存放在堆里 ...

  10. C#图解教程读书笔记(第2章 C#编程概述)

    这章主要是一个对于C#程序的概括解释 和C/C++不同,不是用include声明引用的头文件,而是通过using的方式,声明引用的命名空间. 命名和C/C++类似,并且也是区分大小写的,这件事情在VB ...

随机推荐

  1. [erlang]一次erlcron崩溃引起的事故分析

    事故背景 由于误操作在erlcron设置了一个超过3个月后的定时任务.然后第二天之后发现每天的daily reset没有被执行,一些定时任务也没有被执行.瞬间感觉整个人都不好了,怎么无端端就不执行了呢 ...

  2. C#之不借助第三变量交换两变量值

    源码: 1 2 3 4 5   int n1=10, n2=20;      n1 = n1 - n2;   // -10   n2 = n1 + n2;  //  10   n1 = n2 - n1 ...

  3. rsync排除文件同步

    排除扩展名为log的文件 rsync -ave ssh --exclude '*.log' root@192.168.168.188:/website/abc.com/* /website/abc.c ...

  4. MVC3在IIS7.5发布(部署)报403.14错误的解决办法

    MVC3在IIS7.5发布(部署)报403.14错误的解决办法     错误现象: 报403.14 forbidden错误 web服务器被配置为不列出此目录的内容. 解决办法: 检查站点的处理程序映射 ...

  5. ueditor问题简记录

    一.百度ueditor下载地址:http://ueditor.baidu.com/website/download.html. uBuilder下载,个人选了一些自用的,.net的,但是很奇怪下载响应 ...

  6. C# 通过身份证查询出生日期

    private int GetAgeBycode(string b_car_code) { string birthday = ""; //处理18位的身份证号码从号码中得到生日和 ...

  7. Win7 64位 VS2013环境cuda_7.5.18的一些坑

    thrust库的sort算法,在x86平台使用就崩溃,x64就没问题,搜了下好像是很早的版本,4开始就有这样的问题了,原因不明. http://stackoverflow.com/questions/ ...

  8. Java学习笔记三——数据类型

    前言 Java是强类型(strongly typed)语言,强类型包含两方面的含义: 所有的变量必须先声明后使用: 指定类型的变量只能接受预支匹配的值. 这意味着每一个变量和表达式都有一个在编译时就确 ...

  9. maven 简介

    本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与我交流任何关于本书的问题和关于Ma ...

  10. Yii2 性能优化 来源yii2官方文档

    优化你的 PHP 环境 使用最新稳定版本的 PHP . PHP 的主要版本可能带来显著的性能提升. 启用字节码缓存 Opcache(PHP 5.5或更高版本) 或 APC (PHP 5.4或更早版本) ...