C#图解教程第一章 C#和.NET框架

1.1 在.NET之前  C#发音:see shap  1.1.1 20世纪90年代后期的Windows编程   20世纪90年代后期各语言缺点:    1.纯Win32 API不是面向对象的,而且工作量比MFC的更发    2.MC是面向对象的,但是他却不一致,并逐渐变得陈旧    3.COM虽然概念上简单。但实际代码复杂,而且需要更多丑陋的,不雅的底层代码   共同缺点:    主要针对桌面程序而不是Internet的开发 1.2 进入Microsoft.NET  .NET框架是一种比MFC或COM编程技术更一致并面向对象的环境  特点   多平台:可以在广泛的计算机上运行,包括从服务器,桌面机到PDA和移动电话   行业标准:使用行业标准的通信协议,比如XML,HTTP,OAP和WSDL   安全性:提供更加安全的执行环境(即使有来源可疑的代码存在)  1.2.1 .NET框架的组成

   1.编程工具--产生可执行代码(code)-->公共语言运行库(CLR)--使用-->基类库(BCL)    2.编程工具--使用-->基类库(BCL)   CLR(执行环境):    Common Language Runtime,公共语言运行库    在运行期管理程序的执行,包括内容:     内存管理     代码安全验证     代码执行     垃圾收集    编程工具涵盖了编码和调试需要的一起,包括:     Visual Studio集成开发环境     .NET兼容的编译器(例如:C#,VB.JScript和托管的C++)     调速器     服务器端改进,比如ASP.NET   BCL(是.NET框架使用的一个大的类库):    Base Class Library,基类库    可以在程序中使用  1.2.2 大大改进的编程环境   1.面向对象的开发环境    完全面向对象    形成良好的集成环境    为本地程序和分布式系统提供了一致的,面向对象的编程模型    为桌面,移动,Web开发提供了软件开发接口,涉及的对象范围广   2.自动垃圾收集    CLR有一项服务为GC(Garbage Collector,垃圾收集),"自动管理内存"    自动从内存中删除程序不再访问的对象    释放内存和检查内存泄漏   3.互操作性    允许在不同的.NET语言编写的软件模块间无缝地交互     一种.NET写的程序可以使用甚至继承用另外一种.NET语言写的类(只要遵循一定的规则)     很容易地集成不同编程语言生成的模块(有时被称为:"语言无关的")    平台调用(platfrom invake,P/Invoke)     允许调用并使用非.NET的,但通过Win32 DLL导出的纯C函数的代码(比如Windows API)    允许与COM的互操作     互相调用   4.不需要COM    .NET框架摆脱了COM的束缚,不需要使用COM   5.简化的部署    更加容易    不需要使用注册表注册,一个程序只需要被复制到目标机器便可以运行    并行执行     允许一个DLL的不同版本在同一台机器上存在   6.类型的安全性    CLR检查并确保及其他数据对象的类型安全,即使是在不同编程语言编写的组件之间   7.基类库    提供了一个人广泛的基础类库    BCL/FCL     通用基础类:一组极为强大的工具,比如字符串操作,安全和加密     集合类:实现了列表,字典,散列表以及位数组     线程和同步类:用于创建多线程程序     XML类:创建,读取以及操作XML文档  1.3 编译成CIL   程序集代码:非本机代码,,,CIL(Common Intermediate Language,公共中间语言)   程序集包含:    CIL    使用的类型的元数据    对其他程序引用的元数据    CIL术语:     IL/MSIL  1.4 编译成本机代码并执行   程序的CIL调用时才会被编译   CLR执行步骤:    检查程序集的安全特性    在内存中分配空间    可执行代码发送给实时编译器,把其中一部分编译成本机代码   不被调用的代码不会被编译成本机代码,被调用的代码只被编译一次   CIL-->本机代码 CLR在它运行时进行管理(释放无主内存,检查数组边界,检查参数类型和管理异常等)    术语:     托管代码:      为.NET框架编写的代码      需要CLR     非托管代码:      不在CLR控制之下运行的代码,比如:Win32 C/C++ DLL   本机映像生成器或Ngen:    可以把一个程序集转换成当前处理器的本机代码(免除了运行时的JIT编译过程)   编程的执行综述:

1.5 CLR  .NET框架的核心组件,在操作系统的顶层并管理程序的执行

 提供服务:   自动垃圾收集   安全和认证   通过访问BCL得到广泛的编程功能 1.6 CLI  有序和协作:标准  公共语言基础结构  把所以.NET框架的组件连结成一个内聚的,一致的系统  展示了系统的概念和架构  必须坚持的规则和约定   组成:

 开放的国际标准规范  CLI的重要组成部分:   1.公共类型系统(CTS)    定义了那些托管代码中一定会使用的类型的特征:     CTS定义了一组丰富的内置类型,以及每种类型确定的,详细的特性     .NET兼容编程语言提供的类型通常映射到CTS中已定义的内置类型集的某一个特殊子集     *CTS最重要的特征之一是所有类型都继承自公共的基类--object*   2.公共语言规范(CTS)    详细说明了一个.NET兼容编程语言的规范,属性和行为    其主题包括数据类型,类结构和参数传递 1.7 缩写  1.程序集   公共中间语言:    CIL    IL    MSIL  2.公共语言基础结构(CLI)   公共类型系统:    CTS   公共语言规范:    CLS  3.公共语言运行库(CLR)   垃圾收集:    GC   实时编译器:    JIT   基类库:    BCL

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯云数据库团队的专栏

Hbase 的 WAL 在 RegionServer 基本调用过程

Hbase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。本文档用于说明hba...

1.3K0
来自专栏Java Edge

大行缓存更新之道1 Cache Aside Pattern2 Read/Write Through Pattern3 Write Behind Caching Pattern

好些人在写更新缓存时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。 然而,这个逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是...

602
来自专栏技术分享

.NET应用架构设计—面向查询服务的参数化查询设计(分解业务点,单独配置各自的数据查询契约)

阅读目录: 1.背景介绍 2.对业务功能点进行逻辑划分(如:A、B、C分别三个业务点) 2.1.配置映射关系,对业务点配置查询契约(构造VS插件方便生成查询契...

1928
来自专栏性能与架构

腾讯前端首屏优化案例

下面是对腾讯前端团队优化手Q一个页面案例的总结 优化目标页面:手Q群成员分布的页面 ? 左面是首屏,右面是下拉后到底部 这个页面中,可以划分成四个部份:活跃...

34310
来自专栏日常学python

爬取《The Hitchhiker’s Guide to Python!》python进阶书并制成pdf

这是日常学python的第15篇原创文章 前几篇文章我们学习了requests库和正则,还有个urllib库,我上篇文章也用了requests库来教大家去爬那些...

37717
来自专栏Crossin的编程教室

【我问 Crossin】英语不好能不能学编程?

“我问 Crossin” 栏目会整理一些读者经常会问到的问题,统一作答。有比较具体的编程细节,也会有一些方向的建议,以及学习经验、编程小技巧的分享。 大家有想问...

3189
来自专栏文渊之博

时间序列数据库概览

背景 目前对于时序大数据的存储和处理往往采用关系型数据库的方式进行处理,但由于关系型数据库天生的劣势导致其无法进行高效的存储和数据的查询。时序大数据解决方案通...

2946
来自专栏芋道源码1024

Dubbo 源码解析 —— Cluster

前言 今天是小长假的倒数第二天,本来国庆是要加班四天的,后来因为要有事要回家才得以幸免,但是后天上班之后都要搬砖搬到手脱皮是必须的了.但是再忙每周一篇源码解析...

3365
来自专栏java学习

学习java需要会哪些知识才能够去应聘工作?

按照我去培训机构的学习经历,给初学还有自学Java 的同学一个基本的学习脉络,希望对大家有帮助。 不建议找到一本书死啃,没啥用,不要有这一页看不明白我就不往下看...

26310
来自专栏微服务生态

论代码级性能优化变迁之路(二)

在上一篇我们主要介绍了所遇到问题的五点,那么今天接下来讨论剩下的问题,我们先再回顾一下之前讨论的问题:

582

扫描关注云+社区